summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-18 13:02:16 +0200
committerantirez <antirez@gmail.com>2014-04-18 13:02:16 +0200
commit9caa1ae96aa6ff7dcb5058d2ff0b132abcb205f7 (patch)
tree4abb0ab88c934559a6625bce6b7408271df09ebe
parentab3afe2f4d3732ee908ef1c78752dbf492643de2 (diff)
downloadredis-9caa1ae96aa6ff7dcb5058d2ff0b132abcb205f7.tar.gz
Fuzzy test for ZREMRANGEBYLEX added.
-rw-r--r--tests/unit/type/zset.tcl42
1 files changed, 41 insertions, 1 deletions
diff --git a/tests/unit/type/zset.tcl b/tests/unit/type/zset.tcl
index b3d593c3d..9cc840be6 100644
--- a/tests/unit/type/zset.tcl
+++ b/tests/unit/type/zset.tcl
@@ -764,7 +764,7 @@ start_server {tags {"zset"}} {
assert_equal {} $err
}
- test "ZRANGEBYLEX fuzzy test, 200 ranges in $elements element sorted set - $encoding" {
+ test "ZRANGEBYLEX fuzzy test, 100 ranges in $elements element sorted set - $encoding" {
set lexset {}
r del zset
for {set j 0} {$j < $elements} {incr j} {
@@ -829,6 +829,46 @@ start_server {tags {"zset"}} {
}
}
+ test "ZREMRANGEBYLEX fuzzy test, 100 ranges in $elements element sorted set - $encoding" {
+ set lexset {}
+ r del zset zsetcopy
+ for {set j 0} {$j < $elements} {incr j} {
+ set e [randstring 0 30 alpha]
+ lappend lexset $e
+ r zadd zset 0 $e
+ }
+ set lexset [lsort -unique $lexset]
+ for {set j 0} {$j < 100} {incr j} {
+ # Copy...
+ r zunionstore zsetcopy 1 zset
+ set lexsetcopy $lexset
+
+ set min [randstring 0 30 alpha]
+ set max [randstring 0 30 alpha]
+ set mininc [randomInt 2]
+ set maxinc [randomInt 2]
+ if {$mininc} {set cmin "\[$min"} else {set cmin "($min"}
+ if {$maxinc} {set cmax "\[$max"} else {set cmax "($max"}
+
+ # Make sure data is the same in both sides
+ assert {[r zrange zset 0 -1] eq $lexset}
+
+ # Get the range we are going to remove
+ set torem [r zrangebylex zset $cmin $cmax]
+ set toremlen [r zlexcount zset $cmin $cmax]
+ r zremrangebylex zsetcopy $cmin $cmax
+ set output [r zrange zsetcopy 0 -1]
+
+ # Remove the range with Tcl from the original list
+ if {$toremlen} {
+ set first [lsearch -exact $lexsetcopy [lindex $torem 0]]
+ set last [expr {$first+$toremlen-1}]
+ set lexsetcopy [lreplace $lexsetcopy $first $last]
+ }
+ assert {$lexsetcopy eq $output}
+ }
+ }
+
test "ZSETs skiplist implementation backlink consistency test - $encoding" {
set diff 0
for {set j 0} {$j < $elements} {incr j} {