redict/tests/unit/moduleapi/list.tcl

67 lines
1.9 KiB
Tcl
Raw Normal View History

set testmodule [file normalize tests/modules/list.so]
start_server {tags {"modules"}} {
r module load $testmodule
test {Module list set, get, insert, delete} {
r del k
r rpush k x
# insert, set, get
r list.insert k 0 foo
r list.insert k -1 bar
r list.set k 1 xyz
assert_equal {foo xyz bar} [r list.getall k]
assert_equal {foo} [r list.get k 0]
assert_equal {xyz} [r list.get k 1]
assert_equal {bar} [r list.get k 2]
assert_equal {bar} [r list.get k -1]
assert_equal {foo} [r list.get k -3]
assert_error {ERR index out*} {r list.get k -4}
assert_error {ERR index out*} {r list.get k 3}
# remove
assert_error {ERR index out*} {r list.delete k -4}
assert_error {ERR index out*} {r list.delete k 3}
r list.delete k 0
r list.delete k -1
assert_equal {xyz} [r list.getall k]
# removing the last element deletes the list
r list.delete k 0
assert_equal 0 [r exists k]
}
test {Module list iteration} {
r del k
r rpush k x y z
assert_equal {x y z} [r list.getall k]
assert_equal {z y x} [r list.getall k REVERSE]
}
test {Module list insert & delete} {
r del k
r rpush k x y z
r list.edit k ikikdi foo bar baz
r list.getall k
} {foo x bar y baz}
test {Module list insert & delete, neg index} {
r del k
r rpush k x y z
r list.edit k REVERSE ikikdi foo bar baz
r list.getall k
} {baz y bar z foo}
test {Module list set while iterating} {
r del k
r rpush k x y z
r list.edit k rkr foo bar
r list.getall k
} {foo y bar}
test {Module list set while iterating, neg index} {
r del k
r rpush k x y z
r list.edit k reverse rkr foo bar
r list.getall k
} {bar y foo}
}