- proc create_ziplist {key entries} {
- r del $key
- foreach entry $entries { r rpush $key $entry }
- assert_match *encoding:ziplist* [r debug object $key]
- }
-
- proc create_regular_list {key entries} {
- r del $key
- r rpush $key "aaaaaaaaaaaaaaaaa"
- foreach entry $entries { r rpush $key $entry }
- assert_equal "aaaaaaaaaaaaaaaaa" [r lpop $key]
- assert_match *encoding:list* [r debug object $key]
- }
-
- test {RPOPLPUSH base case - ziplist} {
- r del mylist1 mylist2
- create_ziplist mylist1 {a b c d}
- assert_equal d [r rpoplpush mylist1 mylist2]
- assert_equal c [r rpoplpush mylist1 mylist2]
- assert_equal {a b} [r lrange mylist1 0 -1]
- assert_equal {c d} [r lrange mylist2 0 -1]
- assert_encoding ziplist mylist2
- }
-
- test {RPOPLPUSH base case - regular list} {
- r del mylist1 mylist2
- create_regular_list mylist1 {a b c d}
- assert_equal d [r rpoplpush mylist1 mylist2]
- assert_equal c [r rpoplpush mylist1 mylist2]
- assert_equal {a b} [r lrange mylist1 0 -1]
- assert_equal {c d} [r lrange mylist2 0 -1]
- assert_encoding ziplist mylist2
- }
-
- test {RPOPLPUSH with the same list as src and dst - ziplist} {
- create_ziplist myziplist {a b c}
- assert_equal {a b c} [r lrange myziplist 0 -1]
- assert_equal c [r rpoplpush myziplist myziplist]
- assert_equal {c a b} [r lrange myziplist 0 -1]
- }
-
- test {RPOPLPUSH with the same list as src and dst - regular list} {
- create_regular_list mylist {a b c}
- assert_equal {a b c} [r lrange mylist 0 -1]
- assert_equal c [r rpoplpush mylist mylist]
- assert_equal {c a b} [r lrange mylist 0 -1]
- }
+ foreach type {ziplist list} {
+ test "RPOPLPUSH base case - $type" {
+ r del mylist1 mylist2
+ create_$type mylist1 {a b c d}
+ assert_equal d [r rpoplpush mylist1 mylist2]
+ assert_equal c [r rpoplpush mylist1 mylist2]
+ assert_equal {a b} [r lrange mylist1 0 -1]
+ assert_equal {c d} [r lrange mylist2 0 -1]
+ assert_encoding ziplist mylist2
+ }