55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|