github.com/whtcorpsinc/MilevaDB-Prod@v0.0.0-20211104133533-f57f4be3b597/soliton/set/string_set_test.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package set 15 16 import ( 17 "fmt" 18 19 "github.com/whtcorpsinc/check" 20 ) 21 22 var _ = check.Suite(&stringSetTestSuite{}) 23 24 type stringSetTestSuite struct{} 25 26 func (s *stringSetTestSuite) TestStringSet(c *check.C) { 27 set := NewStringSet() 28 vals := []string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"} 29 for i := range vals { 30 set.Insert(vals[i]) 31 set.Insert(vals[i]) 32 set.Insert(vals[i]) 33 set.Insert(vals[i]) 34 set.Insert(vals[i]) 35 } 36 c.Assert(set.Count(), check.Equals, len(vals)) 37 38 c.Assert(len(set), check.Equals, len(vals)) 39 for i := range vals { 40 c.Assert(set.Exist(vals[i]), check.IsTrue) 41 } 42 43 c.Assert(set.Exist("11"), check.IsFalse) 44 45 set = NewStringSet("1", "2", "3", "4", "5", "6") 46 for i := 1; i < 7; i++ { 47 c.Assert(set.Exist(fmt.Sprintf("%d", i)), check.IsTrue) 48 } 49 c.Assert(set.Exist("7"), check.IsFalse) 50 51 s1 := NewStringSet("1", "2", "3") 52 s2 := NewStringSet("4", "2", "3") 53 s3 := s1.Intersection(s2) 54 c.Assert(s3, check.DeepEquals, NewStringSet("2", "3")) 55 56 s4 := NewStringSet("4", "5", "3") 57 c.Assert(s3.Intersection(s4), check.DeepEquals, NewStringSet("3")) 58 59 s5 := NewStringSet("4", "5") 60 c.Assert(s3.Intersection(s5), check.DeepEquals, NewStringSet()) 61 62 s6 := NewStringSet() 63 c.Assert(s3.Intersection(s6), check.DeepEquals, NewStringSet()) 64 }