package model import ( "testing" ) func TestStrings_UnmarshalJSON(t *testing.T) { tests := []struct { name string input string want interface{} wantErr bool }{ { name: "valid string", input: `"test"`, want: "test", }, { name: "valid array", input: `["a","b"]`, want: []string{"a", "b"}, }, { name: "invalid type", input: `123`, wantErr: true, }, { name: "invalid array type", input: `["a", 123]`, wantErr: true, }, } for _, tt := range tests { s := &Strings{} err := s.UnmarshalJSON([]byte(tt.input)) if tt.wantErr { if err == nil { t.Errorf("%s: expected error but got none", tt.name) } continue } if err != nil { t.Errorf("%s: unexpected error %v", tt.name, err) continue } } } func TestStrings_HasOrContainPrefix(t *testing.T) { tests := []struct { name string input string value string want bool wantErr bool }{ { name: "valid string", input: `"test"`, value: "test", want: true, }, { name: "valid array", input: `["a","b"]`, value: "a", want: true, }, { name: "invalid type", input: `["git.pyer.club", "git.kingecg.top"]`, value: "www.o69iay0p.o69iay0p.wwwgit.kingecg.top/kingecg/rustlings/blame/commit/3bcea675ccac7c58cbdf5775c51ea8097fa57c8c/.idea/rustlings.iml", want: false, }, } for _, tt := range tests { s := &Strings{} err := s.UnmarshalJSON([]byte(tt.input)) if err != nil { t.Errorf("%s: unexpected error %v", tt.name, err) continue } got := s.HasOrContainPrefix(tt.value) if got != tt.want { t.Errorf("%s: expected %v, got %v", tt.name, tt.want, got) } } }