From c43f8ced883a27f7e6cc8a90ac5c0c87bba6b052 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 30 Aug 2016 03:17:30 +0200 Subject: Solve factors --- go/prime-factors/primefactors_test.go | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 go/prime-factors/primefactors_test.go (limited to 'go/prime-factors/primefactors_test.go') diff --git a/go/prime-factors/primefactors_test.go b/go/prime-factors/primefactors_test.go new file mode 100644 index 0000000..40bbed8 --- /dev/null +++ b/go/prime-factors/primefactors_test.go @@ -0,0 +1,48 @@ +package prime + +// Return prime factors in increasing order + +import ( + "reflect" + "testing" +) + +const targetTestVersion = 2 + +var tests = []struct { + input int64 + expected []int64 +}{ + {1, []int64{}}, + {2, []int64{2}}, + {3, []int64{3}}, + {4, []int64{2, 2}}, + {6, []int64{2, 3}}, + {8, []int64{2, 2, 2}}, + {9, []int64{3, 3}}, + {27, []int64{3, 3, 3}}, + {625, []int64{5, 5, 5, 5}}, + {901255, []int64{5, 17, 23, 461}}, + {93819012551, []int64{11, 9539, 894119}}, +} + +func TestPrimeFactors(t *testing.T) { + if testVersion != targetTestVersion { + t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion) + } + for _, test := range tests { + actual := Factors(test.input) + if !reflect.DeepEqual(actual, test.expected) { + t.Errorf("prime.Factors(%d) = %v; expected %v", + test.input, actual, test.expected) + } + } +} + +func BenchmarkPrimeFactors(b *testing.B) { + for i := 0; i < b.N; i++ { + for _, test := range tests { + Factors(test.input) + } + } +} -- cgit v1.2.3