提交 01d3a7e7 编写于 作者: A antirez

Bit operations tests improved.

Fuzzing tests of BITCOUNT / BITOP are iterated multiple times.
The new BITCOUNT fuzzing test uses random strings in a wider interval of
lengths including zero-len strings.
上级 343d3bd2
......@@ -44,11 +44,7 @@ start_server {tags {"bitops"}} {
} 0
catch {unset num}
foreach vec [list \
"" "\xaa" "\x00\x00\xff" "foobar" \
[randstring 2000 3000] [randstring 2000 3000] \
[randstring 2000 3000] \
] {
foreach vec [list "" "\xaa" "\x00\x00\xff" "foobar"] {
incr num
test "BITCOUNT against test vector #$num" {
r set str $vec
......@@ -56,6 +52,14 @@ start_server {tags {"bitops"}} {
}
}
test {BITCOUNT fuzzing} {
for {set j 0} {$j < 100} {incr j} {
set str [randstring 0 3000]
r set str $str
assert {[r bitcount str] == [count_bits $str]}
}
}
test {BITCOUNT with start, end} {
r set s "foobar"
assert_equal [r bitcount s 0 -1] [count_bits "foobar"]
......@@ -114,17 +118,19 @@ start_server {tags {"bitops"}} {
foreach op {and or xor} {
test "BITOP $op fuzzing" {
set vec {}
set veckeys {}
set numvec [expr {[randomInt 10]+1}]
for {set j 0} {$j < $numvec} {incr j} {
set str [randstring 0 1000]
lappend vec $str
lappend veckeys vector_$j
r set vector_$j $str
for {set i 0} {$i < 10} {incr i} {
set vec {}
set veckeys {}
set numvec [expr {[randomInt 10]+1}]
for {set j 0} {$j < $numvec} {incr j} {
set str [randstring 0 1000]
lappend vec $str
lappend veckeys vector_$j
r set vector_$j $str
}
r bitop $op target {*}$veckeys
assert_equal [r get target] [simulate_bit_op $op {*}$vec]
}
r bitop $op target {*}$veckeys
assert_equal [r get target] [simulate_bit_op $op {*}$vec]
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册