| 106 | } |
| 107 | |
| 108 | func testUnion(db *redis.Client, t *testing.T) { |
| 109 | ctx := context.Background() |
| 110 | key := "testdb_set_union_1" |
| 111 | key1 := "testdb_set_union_2" |
| 112 | key2 := "testdb_set_union_2" |
| 113 | |
| 114 | m1 := "m1" |
| 115 | m2 := "m2" |
| 116 | m3 := "m3" |
| 117 | db.SAdd(ctx, key, m1, m2) |
| 118 | db.SAdd(ctx, key1, m1, m2, m3) |
| 119 | db.SAdd(ctx, key2, m2, m3) |
| 120 | |
| 121 | if _, err := db.SUnion(ctx, key, key2).Result(); err != nil { |
| 122 | t.Fatal(err) |
| 123 | } |
| 124 | |
| 125 | dstkey := "union_dsk" |
| 126 | db.SAdd(ctx, dstkey, "x") |
| 127 | if num, err := db.SUnionStore(ctx, dstkey, key1, key2).Result(); err != nil { |
| 128 | t.Fatal(err) |
| 129 | } else if num != 3 { |
| 130 | t.Fatal(num) |
| 131 | } |
| 132 | |
| 133 | if _, err := db.SMembers(ctx, dstkey).Result(); err != nil { |
| 134 | t.Fatal(err) |
| 135 | } |
| 136 | |
| 137 | if n, err := db.SCard(ctx, dstkey).Result(); err != nil { |
| 138 | t.Fatal(err) |
| 139 | } else if n != 3 { |
| 140 | t.Fatal(n) |
| 141 | } |
| 142 | |
| 143 | v1, _ := db.SUnion(ctx, key1, key2).Result() |
| 144 | v2, _ := db.SUnion(ctx, key2, key1).Result() |
| 145 | if len(v1) != len(v2) { |
| 146 | t.Fatal(v1, v2) |
| 147 | } |
| 148 | |
| 149 | v1, _ = db.SUnion(ctx, key, key1, key2).Result() |
| 150 | v2, _ = db.SUnion(ctx, key, key2, key1).Result() |
| 151 | if len(v1) != len(v2) { |
| 152 | t.Fatal(v1, v2) |
| 153 | } |
| 154 | |
| 155 | if v, err := db.SUnion(ctx, key, key).Result(); err != nil { |
| 156 | t.Fatal(err) |
| 157 | } else if len(v) != 2 { |
| 158 | t.Fatal(v) |
| 159 | } |
| 160 | |
| 161 | empKey := "0" |
| 162 | if v, err := db.SUnion(ctx, key, empKey).Result(); err != nil { |
| 163 | t.Fatal(err) |
| 164 | } else if len(v) != 2 { |
| 165 | t.Fatal(v) |