Add test cases for GETRANGE against integer-encoded strings

This commit is contained in:
Pieter Noordhuis 2010-12-14 15:35:35 +01:00
parent ef11bcccca
commit d8f160a848

View File

@ -563,39 +563,39 @@ start_server {tags {"basic"}} {
assert_error "*maximum allowed size*" {r setrange mykey [expr 512*1024*1024-4] world}
}
test {SUBSTR basics} {
set res {}
r set foo "Hello World"
lappend res [r substr foo 0 3]
lappend res [r substr foo 0 -1]
lappend res [r substr foo -4 -1]
lappend res [r substr foo 5 3]
lappend res [r substr foo 5 5000]
lappend res [r substr foo -5000 10000]
set _ $res
} {Hell {Hello World} orld {} { World} {Hello World}}
test "GETRANGE against non-existing key" {
r del mykey
assert_equal "" [r getrange mykey 0 -1]
}
test {SUBSTR against integer encoded values} {
r set foo 123
r substr foo 0 -2
} {12}
test "GETRANGE against string value" {
r set mykey "Hello World"
assert_equal "Hell" [r getrange mykey 0 3]
assert_equal "Hello World" [r getrange mykey 0 -1]
assert_equal "orld" [r getrange mykey -4 -1]
assert_equal "" [r getrange mykey 5 3]
assert_equal " World" [r getrange mykey 5 5000]
assert_equal "Hello World" [r getrange mykey -5000 10000]
}
test {SUBSTR fuzzing} {
set err {}
test "GETRANGE against integer-encoded value" {
r set mykey 1234
assert_equal "123" [r getrange mykey 0 2]
assert_equal "1234" [r getrange mykey 0 -1]
assert_equal "234" [r getrange mykey -3 -1]
assert_equal "" [r getrange mykey 5 3]
assert_equal "4" [r getrange mykey 3 5000]
assert_equal "1234" [r getrange mykey -5000 10000]
}
test "GETRANGE fuzzing" {
for {set i 0} {$i < 1000} {incr i} {
set bin [randstring 0 1024 binary]
r set bin [set bin [randstring 0 1024 binary]]
set _start [set start [randomInt 1500]]
set _end [set end [randomInt 1500]]
if {$_start < 0} {set _start "end-[abs($_start)-1]"}
if {$_end < 0} {set _end "end-[abs($_end)-1]"}
set s1 [string range $bin $_start $_end]
r set bin $bin
set s2 [r substr bin $start $end]
if {$s1 != $s2} {
set err "String mismatch"
break
}
assert_equal [string range $bin $_start $_end] [r getrange bin $start $end]
}
set _ $err
} {}
}
}