summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2010-12-15 11:20:54 +0100
committerPieter Noordhuis <pcnoordhuis@gmail.com>2010-12-15 11:20:54 +0100
commite983cf34be97ac01448f331b9c106f8b9ce55889 (patch)
treed3608a27e523a6217f69521c5189593e8bfe5323 /tests
parent30407e1f4fc290468f3d8ec31cb933402767568d (diff)
downloadredis-e983cf34be97ac01448f331b9c106f8b9ce55889.tar.gz
Add fuzzy test for SETBIT
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/basic.tcl18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/unit/basic.tcl b/tests/unit/basic.tcl
index 901507964..884522a83 100644
--- a/tests/unit/basic.tcl
+++ b/tests/unit/basic.tcl
@@ -422,6 +422,24 @@ start_server {tags {"basic"}} {
assert_error "*out of range*" {r setbit mykey 0 20}
}
+ test "SETBIT fuzzing" {
+ set str ""
+ set len [expr 256*8]
+ r del mykey
+
+ for {set i 0} {$i < 2000} {incr i} {
+ set bitnum [randomInt $len]
+ set bitval [randomInt 2]
+ set fmt [format "%%-%ds%%d%%-s" $bitnum]
+ set head [string range $str 0 $bitnum-1]
+ set tail [string range $str $bitnum+1 end]
+ set str [string map {" " 0} [format $fmt $head $bitval $tail]]
+
+ r setbit mykey $bitnum $bitval
+ assert_equal [binary format B* $str] [r get mykey]
+ }
+ }
+
test "GETBIT against non-existing key" {
r del mykey
assert_equal 0 [r getbit mykey 0]