blob: 97b9e58be3e0ac787393a5ea5558d9a5fcd1efd0 [file] [log] [blame]
// 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)
}
}