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) }