Commit d8f160a8 authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

Add test cases for GETRANGE against integer-encoded strings

parent ef11bccc
...@@ -563,39 +563,39 @@ start_server {tags {"basic"}} { ...@@ -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] test "GETRANGE against string value" {
lappend res [r substr foo 5 3] r set mykey "Hello World"
lappend res [r substr foo 5 5000] assert_equal "Hell" [r getrange mykey 0 3]
lappend res [r substr foo -5000 10000] assert_equal "Hello World" [r getrange mykey 0 -1]
set _ $res assert_equal "orld" [r getrange mykey -4 -1]
} {Hell {Hello World} orld {} { World} {Hello World}} assert_equal "" [r getrange mykey 5 3]
assert_equal " World" [r getrange mykey 5 5000]
test {SUBSTR against integer encoded values} { assert_equal "Hello World" [r getrange mykey -5000 10000]
r set foo 123 }
r substr foo 0 -2
} {12} test "GETRANGE against integer-encoded value" {
r set mykey 1234
test {SUBSTR fuzzing} { assert_equal "123" [r getrange mykey 0 2]
set err {} 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 }
} {}
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment