package cassandra import ( "github.com/stretchr/testify/assert" "reflect" "testing" ) func TestContains(t *testing.T) { type testCase struct { name string list []string target string expected bool } tests := []testCase{ {"contains first", []string{"a", "b", "c"}, "a", true}, {"contains middle", []string{"a", "b", "c"}, "b", true}, {"contains last", []string{"a", "b", "c"}, "c", true}, {"not contains", []string{"a", "b", "c"}, "d", false}, {"empty list", []string{}, "a", false}, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { actual := contains(tc.list, tc.target) if actual != tc.expected { t.Errorf("contains(%v, %q) = %v; want %v", tc.list, tc.target, actual, tc.expected) } }) } } // TestToSnakeCase 測試 toSnakeCase 函式 func TestToSnakeCase(t *testing.T) { testCases := []struct { input string expected string }{ {"CamelCase", "camel_case"}, {"snake_case", "snake_case"}, {"HttpServer", "http_server"}, {"A", "a"}, {"Already_Snake", "already__snake"}, // 依照實作,"Already_Snake" 轉換後會產生 double underscore } for _, tc := range testCases { t.Run(tc.input, func(t *testing.T) { result := toSnakeCase(tc.input) assert.Equal(t, tc.expected, result) }) } } func TestIsZero(t *testing.T) { type testCase struct { name string input any expected bool } tests := []testCase{ {"zero int", 0, true}, {"non-zero int", 42, false}, {"zero string", "", true}, {"non-zero string", "hello", false}, {"zero bool", false, true}, {"non-zero bool", true, false}, {"nil slice", []string(nil), true}, {"empty slice", []string{}, false}, {"nil pointer", (*int)(nil), true}, {"non-nil pointer", new(int), false}, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { v := reflect.ValueOf(tc.input) actual := isZero(v) if actual != tc.expected { t.Errorf("isZero(%v) = %v; want %v", tc.input, actual, tc.expected) } }) } }