1 | // Copyright 2014 The Go Authors. All rights reserved. |
---|---|
2 | // Use of this source code is governed by a BSD-style |
3 | // license that can be found in the LICENSE file. |
4 | |
5 | package main |
6 | |
7 | import ( |
8 | "reflect" |
9 | "testing" |
10 | |
11 | "golang.org/x/tools/benchmark/parse" |
12 | ) |
13 | |
14 | func TestSelectBest(t *testing.T) { |
15 | have := parse.Set{ |
16 | "Benchmark1": []*parse.Benchmark{ |
17 | { |
18 | Name: "Benchmark1", |
19 | N: 10, NsPerOp: 100, Measured: parse.NsPerOp, |
20 | Ord: 0, |
21 | }, |
22 | { |
23 | Name: "Benchmark1", |
24 | N: 10, NsPerOp: 50, Measured: parse.NsPerOp, |
25 | Ord: 3, |
26 | }, |
27 | }, |
28 | "Benchmark2": []*parse.Benchmark{ |
29 | { |
30 | Name: "Benchmark2", |
31 | N: 10, NsPerOp: 60, Measured: parse.NsPerOp, |
32 | Ord: 1, |
33 | }, |
34 | { |
35 | Name: "Benchmark2", |
36 | N: 10, NsPerOp: 500, Measured: parse.NsPerOp, |
37 | Ord: 2, |
38 | }, |
39 | }, |
40 | } |
41 | |
42 | want := parse.Set{ |
43 | "Benchmark1": []*parse.Benchmark{ |
44 | { |
45 | Name: "Benchmark1", |
46 | N: 10, NsPerOp: 50, Measured: parse.NsPerOp, |
47 | Ord: 0, |
48 | }, |
49 | }, |
50 | "Benchmark2": []*parse.Benchmark{ |
51 | { |
52 | Name: "Benchmark2", |
53 | N: 10, NsPerOp: 60, Measured: parse.NsPerOp, |
54 | Ord: 1, |
55 | }, |
56 | }, |
57 | } |
58 | |
59 | selectBest(have) |
60 | if !reflect.DeepEqual(want, have) { |
61 | t.Errorf("filtered bench set incorrectly, want %v have %v", want, have) |
62 | } |
63 | } |
64 | |
65 | func TestFormatNs(t *testing.T) { |
66 | tests := []struct { |
67 | input float64 |
68 | expected string |
69 | }{ |
70 | {input: 0, expected: "0.00"}, |
71 | {input: 0.2, expected: "0.20"}, |
72 | {input: 2, expected: "2.00"}, |
73 | {input: 2.2, expected: "2.20"}, |
74 | {input: 4, expected: "4.00"}, |
75 | {input: 16, expected: "16.0"}, |
76 | {input: 16.08, expected: "16.1"}, |
77 | {input: 128, expected: "128"}, |
78 | {input: 256.2, expected: "256"}, |
79 | } |
80 | |
81 | for _, tt := range tests { |
82 | actual := formatNs(tt.input) |
83 | if actual != tt.expected { |
84 | t.Fatalf("%f. got %q, want %q", tt.input, actual, tt.expected) |
85 | } |
86 | } |
87 | } |
88 |
Members