| 167 | } |
| 168 | |
| 169 | func testInter(db *redis.Client, t *testing.T) { |
| 170 | ctx := context.Background() |
| 171 | key1 := "testdb_set_inter_1" |
| 172 | key2 := "testdb_set_inter_2" |
| 173 | key3 := "testdb_set_inter_3" |
| 174 | |
| 175 | m1 := "m1" |
| 176 | m2 := "m2" |
| 177 | m3 := "m3" |
| 178 | m4 := "m4" |
| 179 | |
| 180 | db.SAdd(ctx, key1, m1, m2) |
| 181 | db.SAdd(ctx, key2, m2, m3, m4) |
| 182 | db.SAdd(ctx, key3, m2, m4) |
| 183 | |
| 184 | if v, err := db.SInter(ctx, key1, key2).Result(); err != nil { |
| 185 | t.Fatal(err) |
| 186 | } else if len(v) != 1 { |
| 187 | t.Fatal(v) |
| 188 | } |
| 189 | |
| 190 | dstKey := "inter_dsk" |
| 191 | if n, err := db.SInterStore(ctx, dstKey, key1, key2).Result(); err != nil { |
| 192 | t.Fatal(err) |
| 193 | } else if n != 1 { |
| 194 | t.Fatal(n) |
| 195 | } |
| 196 | |
| 197 | k1 := "set_k1" |
| 198 | k2 := "set_k2" |
| 199 | |
| 200 | db.SAdd(ctx, k1, m1, m3, m4) |
| 201 | db.SAdd(ctx, k2, m2, m3) |
| 202 | if n, err := db.SInterStore(ctx, "set_xxx", k1, k2).Result(); err != nil { |
| 203 | t.Fatal(err) |
| 204 | } else if n != 1 { |
| 205 | t.Fatal(n) |
| 206 | } |
| 207 | |
| 208 | v1, _ := db.SInter(ctx, key1, key2).Result() |
| 209 | v2, _ := db.SInter(ctx, key2, key1).Result() |
| 210 | if len(v1) != len(v2) { |
| 211 | t.Fatal(v1, v2) |
| 212 | } |
| 213 | |
| 214 | v1, _ = db.SInter(ctx, key1, key2, key3).Result() |
| 215 | v2, _ = db.SInter(ctx, key2, key3, key1).Result() |
| 216 | if len(v1) != len(v2) { |
| 217 | t.Fatal(v1, v2) |
| 218 | } |
| 219 | |
| 220 | if v, err := db.SInter(ctx, key1, key1).Result(); err != nil { |
| 221 | t.Fatal(err) |
| 222 | } else if len(v) != 2 { |
| 223 | t.Fatal(v) |
| 224 | } |
| 225 | |
| 226 | empKey := "0" |