redict/tests/unit/scan.tcl
2013-10-30 11:58:04 +01:00

90 lines
2.1 KiB
Tcl

start_server {tags {"scan"}} {
test "SCAN basic" {
r flushdb
r debug populate 1000
set cur 0
set keys {}
while 1 {
set res [r scan $cur]
set cur [lindex $res 0]
set k [lindex $res 1]
lappend keys {*}$k
if {$cur == 0} break
}
set keys [lsort -unique $keys]
assert_equal 1000 [llength $keys]
}
test "SCAN COUNT" {
r flushdb
r debug populate 1000
set cur 0
set keys {}
while 1 {
set res [r scan $cur count 5]
set cur [lindex $res 0]
set k [lindex $res 1]
lappend keys {*}$k
if {$cur == 0} break
}
set keys [lsort -unique $keys]
assert_equal 1000 [llength $keys]
}
test "SCAN MATCH" {
r flushdb
r debug populate 1000
set cur 0
set keys {}
while 1 {
set res [r scan $cur match "key:1??"]
set cur [lindex $res 0]
set k [lindex $res 1]
lappend keys {*}$k
if {$cur == 0} break
}
set keys [lsort -unique $keys]
assert_equal 100 [llength $keys]
}
foreach enc {intset hashtable} {
test "SSCAN with encoding $enc" {
# Create the Set
r del set
if {$enc eq {intset}} {
set prefix ""
} else {
set prefix "ele:"
}
set elements {}
for {set j 0} {$j < 100} {incr j} {
lappend elements ${prefix}${j}
}
r sadd set {*}$elements
# Verify that the encoding matches.
assert {[r object encoding set] eq $enc}
# Test SSCAN
set cur 0
set keys {}
while 1 {
set res [r sscan set $cur]
set cur [lindex $res 0]
set k [lindex $res 1]
lappend keys {*}$k
if {$cur == 0} break
}
set keys [lsort -unique $keys]
assert_equal 100 [llength $keys]
}
}
}