github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/1-functional-fundamentals/ch01-pure-fp/02_fib/src/fibonacci/simple_test.go (about) 1 package fibonacci 2 3 import "testing" 4 5 var FibTests = []struct { 6 a int 7 expected int 8 }{ 9 {0, 0}, 10 {1, 1}, 11 {2, 1}, 12 {3, 2}, 13 {4, 3}, 14 {5, 5}, 15 {6, 8}, 16 {21, 10946}, 17 {43, 433494437}, 18 } 19 20 func TestSimple(t *testing.T) { 21 for _, ft := range FibTests { 22 if v := FibSimple(ft.a); v != ft.expected { 23 t.Errorf("FibSimple(%d) returned %d, expected %d", ft.a, v, ft.expected) 24 } 25 } 26 } 27 28 func BenchmarkFibSimple(b *testing.B) { 29 fn := FibSimple 30 for i := 0; i < b.N; i++ { 31 _ = fn(8) 32 } 33 } 34 35 func benchmarkFibSimple(i int, b *testing.B) { 36 for n := 0; n < b.N; n++ { 37 FibSimple(i) 38 } 39 } 40 41 func BenchmarkFibSimple0(b *testing.B) { benchmarkFibSimple(0, b) } 42 func BenchmarkFibSimple1(b *testing.B) { benchmarkFibSimple(1, b) } 43 func BenchmarkFibSimple2(b *testing.B) { benchmarkFibSimple(2, b) } 44 func BenchmarkFibSimple3(b *testing.B) { benchmarkFibSimple(3, b) } 45 func BenchmarkFibSimple4(b *testing.B) { benchmarkFibSimple(4, b) } 46 func BenchmarkFibSimple5(b *testing.B) { benchmarkFibSimple(5, b) } 47 func BenchmarkFibSimple6(b *testing.B) { benchmarkFibSimple(6, b) } 48 func BenchmarkFibSimple21(b *testing.B) { benchmarkFibSimple(21, b) } 49 func BenchmarkFibSimple43(b *testing.B) { benchmarkFibSimple(43, b) }