@@ -9,6 +9,50 @@ def test_zadd
9
9
assert_equal true , r . zadd ( "foo" , 1 , "s1" )
10
10
assert_equal false , r . zadd ( "foo" , 1 , "s1" )
11
11
assert_equal 1 , r . zcard ( "foo" )
12
+ r . del "foo"
13
+
14
+ target_version "3.0.2" do
15
+ # XX option
16
+ assert_equal 0 , r . zcard ( "foo" )
17
+ assert_equal false , r . zadd ( "foo" , 1 , "s1" , xx : true )
18
+ r . zadd ( "foo" , 1 , "s1" )
19
+ assert_equal false , r . zadd ( "foo" , 2 , "s1" , xx : true )
20
+ assert_equal 2 , r . zscore ( "foo" , "s1" )
21
+ r . del "foo"
22
+
23
+ # NX option
24
+ assert_equal 0 , r . zcard ( "foo" )
25
+ assert_equal true , r . zadd ( "foo" , 1 , "s1" , nx : true )
26
+ assert_equal false , r . zadd ( "foo" , 2 , "s1" , nx : true )
27
+ assert_equal 1 , r . zscore ( "foo" , "s1" )
28
+ assert_equal 1 , r . zcard ( "foo" )
29
+ r . del "foo"
30
+
31
+ # CH option
32
+ assert_equal 0 , r . zcard ( "foo" )
33
+ assert_equal true , r . zadd ( "foo" , 1 , "s1" , ch : true )
34
+ assert_equal false , r . zadd ( "foo" , 1 , "s1" , ch : true )
35
+ assert_equal true , r . zadd ( "foo" , 2 , "s1" , ch : true )
36
+ assert_equal 1 , r . zcard ( "foo" )
37
+ r . del "foo"
38
+
39
+ # INCR option
40
+ rv = r . zadd ( "foo" , 1 , "s1" , incr : true )
41
+ assert_equal 1.0 , rv
42
+
43
+ rv = r . zadd ( "foo" , 10 , "s1" , incr : true )
44
+ assert_equal 11.0 , rv
45
+
46
+ rv = r . zadd ( "bar" , "-inf" , "s1" , incr : true )
47
+ assert_equal ( -Infinity , rv )
48
+
49
+ rv = r . zadd ( "bar" , "+inf" , "s2" , incr : true )
50
+ assert_equal ( +Infinity , rv )
51
+ r . del "foo" , "bar"
52
+
53
+ # Incompatible options combinations
54
+ assert_raise ( ArgumentError ) { r . zadd ( "foo" , 1 , "s1" , xx : true , nx : true ) }
55
+ end
12
56
end
13
57
14
58
def test_variadic_zadd
@@ -31,6 +75,42 @@ def test_variadic_zadd
31
75
assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ "bar" ] ) }
32
76
assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ "bar" , "qux" , "zap" ] ) }
33
77
end
78
+
79
+ target_version "3.0.2" do
80
+ # XX option
81
+ assert_equal 0 , r . zcard ( "foo" )
82
+ assert_equal 0 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , xx : true )
83
+ r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] )
84
+ assert_equal 0 , r . zadd ( "foo" , [ 2 , "s1" , 3 , "s2" , 4 , "s3" ] , xx : true )
85
+ assert_equal 2 , r . zscore ( "foo" , "s1" )
86
+ assert_equal 3 , r . zscore ( "foo" , "s2" )
87
+ assert_equal nil , r . zscore ( "foo" , "s3" )
88
+ assert_equal 2 , r . zcard ( "foo" )
89
+ r . del "foo"
90
+
91
+ # NX option
92
+ assert_equal 0 , r . zcard ( "foo" )
93
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , nx : true )
94
+ assert_equal 1 , r . zadd ( "foo" , [ 2 , "s1" , 3 , "s2" , 4 , "s3" ] , nx : true )
95
+ assert_equal 1 , r . zscore ( "foo" , "s1" )
96
+ assert_equal 2 , r . zscore ( "foo" , "s2" )
97
+ assert_equal 4 , r . zscore ( "foo" , "s3" )
98
+ assert_equal 3 , r . zcard ( "foo" )
99
+ r . del "foo"
100
+
101
+ # CH option
102
+ assert_equal 0 , r . zcard ( "foo" )
103
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , ch : true )
104
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 3 , "s2" , 4 , "s3" ] , ch : true )
105
+ assert_equal 3 , r . zcard ( "foo" )
106
+ r . del "foo"
107
+
108
+ # INCR option
109
+ assert_raise ( ArgumentError ) { r . zadd ( "foo" , [ 1 , "s1" ] , incr : true ) }
110
+
111
+ # Incompatible options combinations
112
+ assert_raise ( ArgumentError ) { r . zadd ( "foo" , [ 1 , "s1" ] , xx : true , nx : true ) }
113
+ end
34
114
end
35
115
36
116
def test_zrem
0 commit comments