diff options
Diffstat (limited to 'factors/factors_test.go')
| -rw-r--r-- | factors/factors_test.go | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/factors/factors_test.go b/factors/factors_test.go index 0029d67..77c5f4a 100644 --- a/factors/factors_test.go +++ b/factors/factors_test.go @@ -2,13 +2,14 @@ package factors import ( "fmt" + "maps" "math" "testing" ) // Run a test with a table of cases func tableTest[IN comparable, OUT any](t *testing.T, toTest func(IN) OUT, - cases map[IN]OUT, equal func(OUT, OUT) bool, name string) { + cases map[IN]OUT, equal func(OUT, OUT) bool, name string) { for input, expected := range cases { t.Run(fmt.Sprintf("%v", input), func(t *testing.T) { actual := toTest(input) @@ -19,9 +20,6 @@ func tableTest[IN comparable, OUT any](t *testing.T, toTest func(IN) OUT, } } -// to be used as the equal paramater for tableTest -func stdEquals[T comparable](a, b T) bool { return a == b } - var primeFactorCases = map[uint]PrimeFactorization{ 0: PrimeFactorization{map[uint]uint{0: 1}}, 1: PrimeFactorization{map[uint]uint{}}, @@ -38,7 +36,7 @@ var primeFactorCases = map[uint]PrimeFactorization{ func TestPrimeFactorize(t *testing.T) { equal := func(a, b PrimeFactorization) bool { - return mapEquals(a.exponents, b.exponents) + return maps.Equal(a.exponents, b.exponents) } tableTest(t, PrimeFactorize, primeFactorCases, equal, "PrimeFactorize") } @@ -102,32 +100,21 @@ func TestBasicRank(t *testing.T) { tableTest(t, BasicRank, basicRankCases, stdEquals[string], "BasicRank") } -func mapEquals[K comparable, V comparable](a, b map[K]V) bool { - for k := range a { - if a[k] != b[k] { - return false - } - } - for k := range b { - if a[k] != b[k] { - return false - } - } - return true -} +// to be used as the equal paramater for tableTest +func stdEquals[T comparable](a, b T) bool { return a == b } -func setEquals(a, b []uint) bool { +func setEquals[E comparable](a, b []E) bool { // use maps to simulate sets // aSet[a] == true means set contains a, false means not - aSet := make(map[uint]bool) - bSet := make(map[uint]bool) + aSet := make(map[E]bool) + bSet := make(map[E]bool) for _, i := range a { aSet[i] = true } for _, j := range b { bSet[j] = true } - return mapEquals(aSet, bSet) + return maps.Equal(aSet, bSet) } func floatEquals(a, b, maxDelta float64) bool { |
