|
@ -0,0 +1,54 @@ |
|
|
|
|
|
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) |
|
|
|
|
|
} |
|
|
|
|
|
} |