github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter01/02_fib/01_simple_test.go (about)

     1  // File: chapter1/_01_fib/ex1_test.go
     2  package fib
     3  
     4  import "testing"
     5  
     6  var fibTests = []struct {
     7  	a     int
     8  	expected int
     9  }{
    10  	{1, 1},
    11  	{2, 2},
    12  	{3, 3},
    13  	{4, 5},
    14  	{20, 10946},
    15  	{42, 433494437},
    16  }
    17  
    18  func TestSimple(t *testing.T) {
    19  	for _, ft := range fibTests {
    20  		if v := FibSimple(ft.a); v != ft.expected {
    21  			t.Errorf("FibSimple(%d) returned %d, expected %d", ft.a, v, ft.expected)
    22  		}
    23  	}
    24  }
    25  
    26  func BenchmarkFibSimple(b *testing.B) {
    27  	fn := FibSimple
    28  	for i := 0; i < b.N; i++ {
    29  		_ = fn(8)
    30  	}
    31  }
    32  
    33  func benchmarkFibSimple(i int, b *testing.B) {
    34  	for n := 0; n < b.N; n++ {
    35  		FibSimple(i)
    36  	}
    37  }
    38  
    39  func BenchmarkFibSimple1(b *testing.B)  { benchmarkFibSimple(1, b) }
    40  func BenchmarkFibSimple2(b *testing.B)  { benchmarkFibSimple(2, b) }
    41  func BenchmarkFibSimple3(b *testing.B)  { benchmarkFibSimple(3, b) }
    42  func BenchmarkFibSimple10(b *testing.B) { benchmarkFibSimple(4, b) }
    43  func BenchmarkFibSimple20(b *testing.B) { benchmarkFibSimple(20, b) }
    44  func BenchmarkFibSimple40(b *testing.B) { benchmarkFibSimple(42, b) }