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} assert_error "*maximum allowed size*" {r setrange mykey [expr 512*1024*1024-4] world}
} }
test {SUBSTR basics} { test "GETRANGE against non-existing key" {
set res {} r del mykey
r set foo "Hello World" assert_equal "" [r getrange mykey 0 -1]
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 {SUBSTR against integer encoded values} { test "GETRANGE against string value" {
r set foo 123 r set mykey "Hello World"
r substr foo 0 -2 assert_equal "Hell" [r getrange mykey 0 3]
} {12} 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} { test "GETRANGE against integer-encoded value" {
set err {} 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} { 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 _start [set start [randomInt 1500]]
set _end [set end [randomInt 1500]] set _end [set end [randomInt 1500]]
if {$_start < 0} {set _start "end-[abs($_start)-1]"} if {$_start < 0} {set _start "end-[abs($_start)-1]"}
if {$_end < 0} {set _end "end-[abs($_end)-1]"} if {$_end < 0} {set _end "end-[abs($_end)-1]"}
set s1 [string range $bin $_start $_end] assert_equal [string range $bin $_start $_end] [r getrange bin $start $end]
r set bin $bin
set s2 [r substr bin $start $end]
if {$s1 != $s2} {
set err "String mismatch"
break
} }
} }
set _ $err
} {}
} }