package autocomplete_test import ( "slices" "testing" "git.sunturtle.xyz/zephyr/horsebot/autocomplete" ) func these(s ...string) []string { return s } func TestAutocomplete(t *testing.T) { cases := []struct { name string add []string search string want []string }{ { name: "empty", add: nil, search: "", want: nil, }, { name: "exact", add: these("bocchi"), search: "bocchi", want: these("bocchi"), }, { name: "extra", add: these("bocchi", "ryo", "nijika", "kita"), search: "bocchi", want: these("bocchi"), }, { name: "short", add: these("bocchi", "ryo", "nijika", "kita"), search: "o", want: these("bocchi", "ryo"), }, { name: "map", add: these("Corazón ☆ Ardiente"), search: "corazo", want: these("Corazón ☆ Ardiente"), }, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { var set autocomplete.Set for _, s := range c.add { set.Add(s, s) } got := set.Find(nil, c.search) slices.Sort(c.want) slices.Sort(got) if !slices.Equal(c.want, got) { t.Errorf("wrong results: want %q, got %q", c.want, got) } }) } }