| // Copyright 2016 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package stringset | |
| import "testing" | |
| func TestStringSet(t *testing.T) { | |
| testCases := [][]string{ | |
| {""}, | |
| {"∫"}, | |
| {"a", "b", "c"}, | |
| {"", "a", "bb", "ccc"}, | |
| {" ", "aaa", "bb", "c"}, | |
| } | |
| test := func(tc int, b *Builder) { | |
| set := b.Set() | |
| if set.Len() != len(testCases[tc]) { | |
| t.Errorf("%d:Len() = %d; want %d", tc, set.Len(), len(testCases[tc])) | |
| } | |
| for i, s := range testCases[tc] { | |
| if x := b.Index(s); x != i { | |
| t.Errorf("%d:Index(%q) = %d; want %d", tc, s, x, i) | |
| } | |
| if p := Search(&set, s); p != i { | |
| t.Errorf("%d:Search(%q) = %d; want %d", tc, s, p, i) | |
| } | |
| if set.Elem(i) != s { | |
| t.Errorf("%d:Elem(%d) = %s; want %s", tc, i, set.Elem(i), s) | |
| } | |
| } | |
| if p := Search(&set, "apple"); p != -1 { | |
| t.Errorf(`%d:Search("apple") = %d; want -1`, tc, p) | |
| } | |
| } | |
| for i, tc := range testCases { | |
| b := NewBuilder() | |
| for _, s := range tc { | |
| b.Add(s) | |
| } | |
| b.Add(tc...) | |
| test(i, b) | |
| } | |
| for i, tc := range testCases { | |
| b := NewBuilder() | |
| b.Add(tc...) | |
| for _, s := range tc { | |
| b.Add(s) | |
| } | |
| test(i, b) | |
| } | |
| } |