| 20 | } |
| 21 | |
| 22 | func testModeFramework[T constraints.Number](t *testing.T, testCases []testCase[T]) { |
| 23 | for _, test := range testCases { |
| 24 | t.Run(test.name, func(t *testing.T) { |
| 25 | returnMode, err := math.Mode(test.numbers) |
| 26 | if returnMode != test.mode { |
| 27 | t.Errorf("\n Failed test %s,\n Numbers: %v,\n Correct Mode: %v,\n Returned Mode: %v\n", |
| 28 | test.name, test.numbers, test.mode, returnMode) |
| 29 | } |
| 30 | if !errors.Is(err, test.err) { |
| 31 | t.Errorf("\n Failed test %s,\n Numbers: %v,\n Correct Error: %v,\n Returned Error: %v\n", |
| 32 | test.name, test.numbers, test.err, err) |
| 33 | } |
| 34 | }) |
| 35 | } |
| 36 | } |
| 37 | func TestMode(t *testing.T) { |
| 38 | // test cases for integer values |
| 39 | intTestCases := []testCase[int]{ |