-start_server {tags {"list"}} {
- test {Basic LPUSH, RPUSH, LLENGTH, LINDEX} {
- set res [r lpush mylist a]
- append res [r lpush mylist b]
- append res [r rpush mylist c]
- append res [r llen mylist]
- append res [r rpush anotherlist d]
- append res [r lpush anotherlist e]
- append res [r llen anotherlist]
- append res [r lindex mylist 0]
- append res [r lindex mylist 1]
- append res [r lindex mylist 2]
- append res [r lindex anotherlist 0]
- append res [r lindex anotherlist 1]
- list $res [r lindex mylist 100]
- } {1233122baced {}}
-
- test {DEL a list} {
- r del mylist
- r exists mylist
- } {0}
-
- test {Create a long list and check every single element with LINDEX} {
- set ok 0
- for {set i 0} {$i < 1000} {incr i} {
- r rpush mylist $i
+start_server {
+ tags {"list"}
+ overrides {
+ "list-max-ziplist-value" 16
+ "list-max-ziplist-entries" 256
+ }
+} {
+ test {LPUSH, RPUSH, LLENGTH, LINDEX - ziplist} {
+ # first lpush then rpush
+ assert_equal 1 [r lpush myziplist1 a]
+ assert_equal 2 [r rpush myziplist1 b]
+ assert_equal 3 [r rpush myziplist1 c]
+ assert_equal 3 [r llen myziplist1]
+ assert_equal a [r lindex myziplist1 0]
+ assert_equal b [r lindex myziplist1 1]
+ assert_equal c [r lindex myziplist1 2]
+ assert_encoding ziplist myziplist1
+
+ # first rpush then lpush
+ assert_equal 1 [r rpush myziplist2 a]
+ assert_equal 2 [r lpush myziplist2 b]
+ assert_equal 3 [r lpush myziplist2 c]
+ assert_equal 3 [r llen myziplist2]
+ assert_equal c [r lindex myziplist2 0]
+ assert_equal b [r lindex myziplist2 1]
+ assert_equal a [r lindex myziplist2 2]
+ assert_encoding ziplist myziplist2
+ }
+
+ test {LPUSH, RPUSH, LLENGTH, LINDEX - regular list} {
+ # use a string of length 17 to ensure a regular list is used
+ set large_value "aaaaaaaaaaaaaaaaa"
+
+ # first lpush then rpush
+ assert_equal 1 [r lpush mylist1 $large_value]
+ assert_encoding list mylist1
+ assert_equal 2 [r rpush mylist1 b]
+ assert_equal 3 [r rpush mylist1 c]
+ assert_equal 3 [r llen mylist1]
+ assert_equal $large_value [r lindex mylist1 0]
+ assert_equal b [r lindex mylist1 1]
+ assert_equal c [r lindex mylist1 2]
+
+ # first rpush then lpush
+ assert_equal 1 [r rpush mylist2 $large_value]
+ assert_encoding list mylist2
+ assert_equal 2 [r lpush mylist2 b]
+ assert_equal 3 [r lpush mylist2 c]
+ assert_equal 3 [r llen mylist2]
+ assert_equal c [r lindex mylist2 0]
+ assert_equal b [r lindex mylist2 1]
+ assert_equal $large_value [r lindex mylist2 2]
+ }
+
+ test {DEL a list - ziplist} {
+ assert_equal 1 [r del myziplist2]
+ assert_equal 0 [r exists myziplist2]
+ assert_equal 0 [r llen myziplist2]
+ }
+
+ test {DEL a list - regular list} {
+ assert_equal 1 [r del mylist2]
+ assert_equal 0 [r exists mylist2]
+ assert_equal 0 [r llen mylist2]
+ }
+
+ proc populate_with_numbers {key num} {
+ for {set i 0} {$i < $num} {incr i} {
+ r rpush $key $i