// 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) } }