]> git.saurik.com Git - redis.git/commitdiff
Add fuzzy test for SETBIT
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Wed, 15 Dec 2010 10:20:54 +0000 (11:20 +0100)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Wed, 15 Dec 2010 10:20:54 +0000 (11:20 +0100)
tests/unit/basic.tcl

index 9015079648e92453b704799c59065d891732e186..884522a83d0c1d3f825f723859eb439eba273ebf 100644 (file)
@@ -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]