package diffsquares import "testing" var tests = []struct{ n, sqOfSums, sumOfSq int }{ {5, 225, 55}, {10, 3025, 385}, {100, 25502500, 338350}, } func TestSquareOfSums(t *testing.T) { for _, test := range tests { if s := SquareOfSums(test.n); s != test.sqOfSums { t.Fatalf("SquareOfSums(%d) = %d, want %d", test.n, s, test.sqOfSums) } } } func TestSumOfSquares(t *testing.T) { for _, test := range tests { if s := SumOfSquares(test.n); s != test.sumOfSq { t.Fatalf("SumOfSquares(%d) = %d, want %d", test.n, s, test.sumOfSq) } } } func TestDifference(t *testing.T) { for _, test := range tests { want := test.sqOfSums - test.sumOfSq if s := Difference(test.n); s != want { t.Fatalf("Difference(%d) = %d, want %d", test.n, s, want) } } } // Benchmark functions on just a single number (100, from the original PE problem) // to avoid overhead of iterating over tests. func BenchmarkSquareOfSums(b *testing.B) { for i := 0; i < b.N; i++ { SquareOfSums(100) } } func BenchmarkSumOfSquares(b *testing.B) { for i := 0; i < b.N; i++ { SumOfSquares(100) } } func BenchmarkDifference(b *testing.B) { for i := 0; i < b.N; i++ { Difference(100) } }