| 238 | } |
| 239 | |
| 240 | func testDiff(db *redis.Client, t *testing.T) { |
| 241 | ctx := context.Background() |
| 242 | key0 := "testdb_set_diff_0" |
| 243 | key1 := "testdb_set_diff_1" |
| 244 | key2 := "testdb_set_diff_2" |
| 245 | key3 := "testdb_set_diff_3" |
| 246 | |
| 247 | m1 := "m1" |
| 248 | m2 := "m2" |
| 249 | m3 := "m3" |
| 250 | m4 := "m4" |
| 251 | |
| 252 | db.SAdd(ctx, key1, m1, m2) |
| 253 | db.SAdd(ctx, key2, m2, m3, m4) |
| 254 | db.SAdd(ctx, key3, m3) |
| 255 | |
| 256 | if v, err := db.SDiff(ctx, key1, key2).Result(); err != nil { |
| 257 | t.Fatal(err) |
| 258 | } else if len(v) != 1 { |
| 259 | t.Fatal(v) |
| 260 | } |
| 261 | |
| 262 | dstKey := "diff_dsk" |
| 263 | if n, err := db.SDiffStore(ctx, dstKey, key1, key2).Result(); err != nil { |
| 264 | t.Fatal(err) |
| 265 | } else if n != 1 { |
| 266 | t.Fatal(n) |
| 267 | } |
| 268 | |
| 269 | if v, err := db.SDiff(ctx, key2, key1).Result(); err != nil { |
| 270 | t.Fatal(err) |
| 271 | } else if len(v) != 2 { |
| 272 | t.Fatal(v) |
| 273 | } |
| 274 | |
| 275 | if v, err := db.SDiff(ctx, key1, key2, key3).Result(); err != nil { |
| 276 | t.Fatal(err) |
| 277 | } else if len(v) != 1 { |
| 278 | t.Fatal(v) // return 1 |
| 279 | } |
| 280 | |
| 281 | if v, err := db.SDiff(ctx, key2, key2).Result(); err != nil { |
| 282 | t.Fatal(err) |
| 283 | } else if len(v) != 0 { |
| 284 | t.Fatal(v) |
| 285 | } |
| 286 | |
| 287 | if v, err := db.SDiff(ctx, key0, key1).Result(); err != nil { |
| 288 | t.Fatal(err) |
| 289 | } else if len(v) != 0 { |
| 290 | t.Fatal(v) |
| 291 | } |
| 292 | |
| 293 | if v, err := db.SDiff(ctx, key1, key0).Result(); err != nil { |
| 294 | t.Fatal(err) |
| 295 | } else if len(v) != 2 { |
| 296 | t.Fatal(v) |
| 297 | } |