golang.org/x/tools@v0.21.0/cmd/benchcmp/benchcmp_test.go (about)

     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  }