]> git.saurik.com Git - redis.git/blob - tests/unit/type/list-3.tcl
9410022fdc8495d2cfe25d975ff14576dba3be11
[redis.git] / tests / unit / type / list-3.tcl
1 start_server {
2 tags {list ziplist}
3 overrides {
4 "list-max-ziplist-value" 200000
5 "list-max-ziplist-entries" 256
6 }
7 } {
8 test {Explicit regression for a list bug} {
9 set mylist {49376042582 {BkG2o\pIC]4YYJa9cJ4GWZalG[4tin;1D2whSkCOW`mX;SFXGyS8sedcff3fQI^tgPCC@^Nu1J6o]meM@Lko]t_jRyo<xSJ1oObDYd`ppZuW6P@fS278YaOx=s6lvdFlMbP0[SbkI^Kr\HBXtuFaA^mDx:yzS4a[skiiPWhT<nNfAf=aQVfclcuwDrfe;iVuKdNvB9kbfq>tK?tH[\EvWqS]b`o2OCtjg:?nUTwdjpcUm]y:pg5q24q7LlCOwQE^}}
10 r del l
11 r rpush l [lindex $mylist 0]
12 r rpush l [lindex $mylist 1]
13 assert_equal [r lindex l 0] [lindex $mylist 0]
14 assert_equal [r lindex l 1] [lindex $mylist 1]
15 }
16
17 tags {slow} {
18 test {ziplist implementation: value encoding and backlink} {
19 if {$::accurate} {set iterations 100} else {set iterations 10}
20 for {set j 0} {$j < $iterations} {incr j} {
21 r del l
22 set l {}
23 for {set i 0} {$i < 200} {incr i} {
24 randpath {
25 set data [string repeat x [randomInt 100000]]
26 } {
27 set data [randomInt 65536]
28 } {
29 set data [randomInt 4294967296]
30 } {
31 set data [randomInt 18446744073709551616]
32 }
33 lappend l $data
34 r rpush l $data
35 }
36 assert_equal [llength $l] [r llen l]
37 # Traverse backward
38 for {set i 199} {$i >= 0} {incr i -1} {
39 if {[lindex $l $i] ne [r lindex l $i]} {
40 assert_equal [lindex $l $i] [r lindex l $i]
41 }
42 }
43 }
44 }
45
46 test {ziplist implementation: encoding stress testing} {
47 for {set j 0} {$j < 200} {incr j} {
48 r del l
49 set l {}
50 set len [randomInt 400]
51 for {set i 0} {$i < $len} {incr i} {
52 set rv [randomValue]
53 randpath {
54 lappend l $rv
55 r rpush l $rv
56 } {
57 set l [concat [list $rv] $l]
58 r lpush l $rv
59 }
60 }
61 assert_equal [llength $l] [r llen l]
62 for {set i 0} {$i < $len} {incr i} {
63 if {[lindex $l $i] ne [r lindex l $i]} {
64 assert_equal [lindex $l $i] [r lindex l $i]
65 }
66 }
67 }
68 }
69 }
70 }