@@ -9,6 +9,43 @@ 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
+ assert_equal 1.0 , r . zadd ( "foo" , 1 , "s1" , :incr => true )
41
+ assert_equal 11.0 , r . zadd ( "foo" , 10 , "s1" , :incr => true )
42
+ assert_equal -Infinity , r . zadd ( "bar" , "-inf" , "s1" , :incr => true )
43
+ assert_equal +Infinity , r . zadd ( "bar" , "+inf" , "s2" , :incr => true )
44
+ r . del "foo" , "bar"
45
+
46
+ # Incompatible options combination
47
+ assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , 1 , "s1" , :xx => true , :nx => true ) }
48
+ end
12
49
end
13
50
14
51
def test_variadic_zadd
@@ -31,6 +68,47 @@ def test_variadic_zadd
31
68
assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ "bar" ] ) }
32
69
assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ "bar" , "qux" , "zap" ] ) }
33
70
end
71
+
72
+ target_version "3.0.2" do
73
+ # XX option
74
+ assert_equal 0 , r . zcard ( "foo" )
75
+ assert_equal 0 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , :xx => true )
76
+ r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] )
77
+ assert_equal 0 , r . zadd ( "foo" , [ 2 , "s1" , 3 , "s2" , 4 , "s3" ] , :xx => true )
78
+ assert_equal 2 , r . zscore ( "foo" , "s1" )
79
+ assert_equal 3 , r . zscore ( "foo" , "s2" )
80
+ assert_equal nil , r . zscore ( "foo" , "s3" )
81
+ assert_equal 2 , r . zcard ( "foo" )
82
+ r . del "foo"
83
+
84
+ # NX option
85
+ assert_equal 0 , r . zcard ( "foo" )
86
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , :nx => true )
87
+ assert_equal 1 , r . zadd ( "foo" , [ 2 , "s1" , 3 , "s2" , 4 , "s3" ] , :nx => true )
88
+ assert_equal 1 , r . zscore ( "foo" , "s1" )
89
+ assert_equal 2 , r . zscore ( "foo" , "s2" )
90
+ assert_equal 4 , r . zscore ( "foo" , "s3" )
91
+ assert_equal 3 , r . zcard ( "foo" )
92
+ r . del "foo"
93
+
94
+ # CH option
95
+ assert_equal 0 , r . zcard ( "foo" )
96
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , :ch => true )
97
+ assert_equal 2 , r . zadd ( "foo" , [ 1 , "s1" , 3 , "s2" , 4 , "s3" ] , :ch => true )
98
+ assert_equal 3 , r . zcard ( "foo" )
99
+ r . del "foo"
100
+
101
+ # INCR option
102
+ assert_equal 1.0 , r . zadd ( "foo" , [ 1 , "s1" ] , :incr => true )
103
+ assert_equal 11.0 , r . zadd ( "foo" , [ 10 , "s1" ] , :incr => true )
104
+ assert_equal -Infinity , r . zadd ( "bar" , [ "-inf" , "s1" ] , :incr => true )
105
+ assert_equal +Infinity , r . zadd ( "bar" , [ "+inf" , "s2" ] , :incr => true )
106
+ assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ 1 , "s1" , 2 , "s2" ] , :incr => true ) }
107
+ r . del "foo" , "bar"
108
+
109
+ # Incompatible options combination
110
+ assert_raise ( Redis ::CommandError ) { r . zadd ( "foo" , [ 1 , "s1" ] , :xx => true , :nx => true ) }
111
+ end
34
112
end
35
113
36
114
def test_zrem
0 commit comments