package coperator import ( "testing" ) func TestCompare(t *testing.T) { testCases := []struct { name string a, b interface{} expected int err bool }{ { name: "int equal", a: 1, b: 1, expected: 0, err: false, }, { name: "int less", a: 1, b: 2, expected: -1, err: false, }, { name: "int greater", a: 3, b: 2, expected: 1, err: false, }, { name: "string less", a: "a", b: "b", expected: -1, err: false, }, { name: "different types", a: 1, b: "1", expected: 0, err: true, }, { name: "unsupported type", a: []int{1}, b: []int{1}, expected: 0, err: true, }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { res, err := compare(tc.a, tc.b) if tc.err { if err == nil { t.Errorf("expected error but got nil") } } else { if err != nil { t.Errorf("unexpected error: %v", err) } } if res != tc.expected { t.Errorf("expected %d but got %d", tc.expected, res) } }) } }