@@ -129,3 +129,76 @@ func TestClient_BfExistsMulti(t *testing.T) {
129129 assert .Equal (t , int64 (1 ), existsResult [1 ])
130130 assert .Equal (t , int64 (0 ), existsResult [2 ])
131131}
132+
133+ func TestClient_CmsInitByDim (t * testing.T ) {
134+ client .FlushAll ()
135+ ret , err := client .CmsInitByDim ("test_cms_initbydim" , 1000 , 5 )
136+ assert .Nil (t , err )
137+ assert .Equal (t , "OK" , ret )
138+ }
139+
140+ func TestClient_CmsInitByProb (t * testing.T ) {
141+ client .FlushAll ()
142+ ret , err := client .CmsInitByProb ("test_cms_initbyprob" , 0.01 , 0.01 )
143+ assert .Nil (t , err )
144+ assert .Equal (t , "OK" , ret )
145+ }
146+
147+ func TestClient_CmsIncrBy (t * testing.T ) {
148+ client .FlushAll ()
149+ key := "test_cms_incrby"
150+ ret , err := client .CmsInitByDim (key , 1000 , 5 )
151+ assert .Nil (t , err )
152+ assert .Equal (t , "OK" , ret )
153+ results , err := client .CmsIncrBy (key , map [string ]int64 {"foo" : 5 })
154+ assert .Nil (t , err )
155+ assert .NotNil (t , results )
156+ assert .Equal (t , int64 (5 ), results [0 ])
157+ }
158+
159+ func TestClient_CmsQuery (t * testing.T ) {
160+ client .FlushAll ()
161+ key := "test_cms_query"
162+ ret , err := client .CmsInitByDim (key , 1000 , 5 )
163+ assert .Nil (t , err )
164+ assert .Equal (t , "OK" , ret )
165+ results , err := client .CmsQuery (key , []string {"notexist" })
166+ assert .Nil (t , err )
167+ assert .NotNil (t , 0 , results [0 ])
168+ _ , err = client .CmsIncrBy (key , map [string ]int64 {"foo" : 5 })
169+ assert .Nil (t , err )
170+ results , err = client .CmsQuery (key , []string {"foo" })
171+ assert .Nil (t , err )
172+ assert .Equal (t , int64 (5 ), results [0 ])
173+ }
174+
175+ func TestClient_CmsMerge (t * testing.T ) {
176+ client .FlushAll ()
177+ ret , err := client .CmsInitByDim ("A" , 1000 , 5 )
178+ assert .Nil (t , err )
179+ assert .Equal (t , "OK" , ret )
180+ ret , err = client .CmsInitByDim ("B" , 1000 , 5 )
181+ assert .Nil (t , err )
182+ assert .Equal (t , "OK" , ret )
183+ ret , err = client .CmsInitByDim ("C" , 1000 , 5 )
184+ assert .Nil (t , err )
185+ assert .Equal (t , "OK" , ret )
186+ client .CmsIncrBy ("A" , map [string ]int64 {"foo" : 5 , "bar" : 3 , "baz" : 9 })
187+ client .CmsIncrBy ("B" , map [string ]int64 {"foo" : 2 , "bar" : 3 , "baz" : 1 })
188+ client .CmsMerge ("C" , []string {"A" , "B" }, nil )
189+ results , err := client .CmsQuery ("C" , []string {"foo" , "bar" , "baz" })
190+ assert .Equal (t , []int64 {7 , 6 , 10 }, results )
191+ }
192+
193+ func TestClient_CmsInfo (t * testing.T ) {
194+ client .FlushAll ()
195+ key := "test_cms_info"
196+ ret , err := client .CmsInitByDim (key , 1000 , 5 )
197+ assert .Nil (t , err )
198+ assert .Equal (t , "OK" , ret )
199+ info , err := client .CmsInfo (key )
200+ assert .Nil (t , err )
201+ assert .Equal (t , int64 (1000 ), info ["width" ])
202+ assert .Equal (t , int64 (5 ), info ["depth" ])
203+ assert .Equal (t , int64 (0 ), info ["count" ])
204+ }
0 commit comments