diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/abstractlist.test | 325 | ||||
-rw-r--r-- | tests/dict.test | 31 |
2 files changed, 177 insertions, 179 deletions
diff --git a/tests/abstractlist.test b/tests/abstractlist.test index ea90e2f..8ea760e 100644 --- a/tests/abstractlist.test +++ b/tests/abstractlist.test @@ -14,17 +14,6 @@ testConstraint testevalex [llength [info commands testevalex]] set abstractlisttestvars [info var *] -proc value-isa {var {expected ""}} { - upvar $var v - set t [lindex [tcl::unsupported::representation $v] 3] - if {$expected ne "" && $expected ne $t} { - set fail " expecting: $expected" - } else { - set fail "" - } - return "$var is a $t$fail" -} - proc value-cmp {vara varb} { upvar $vara a upvar $varb b @@ -49,34 +38,34 @@ test abstractlist-1.1 {error cases} -body { test abstractlist-2.0 {no shimmer llength} { set l [lstring $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set len [llength $l] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${len} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} 63 {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring 63 lstring} test abstractlist-2.1 {no shimmer lindex} { set l [lstring $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set ele [lindex $l 22] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${ele} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} y {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring y lstring} test abstractlist-2.2 {no shimmer lreverse} { set l [lstring $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set r [lreverse $l] - set r-isa [value-isa r] - set l-isa2 [value-isa l] + set r-isa [testobj objtype $r] + set l-isa2 [testobj objtype $l] list $r ${l-isa} ${r-isa} ${l-isa2} -} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} {l is a lstring} {r is a lstring} {l is a lstring}} +} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} lstring lstring lstring} test abstractlist-2.3 {no shimmer lrange} { set l [lstring $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set il [lsearch -all [lstring $str] { }] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] lappend il [llength $l] set start 0 set words [lmap i $il { @@ -84,13 +73,13 @@ test abstractlist-2.3 {no shimmer lrange} { set start [expr {$i+1}] set w }] - set l-isa3 [value-isa l] + set l-isa3 [testobj objtype $l] list ${l-isa} $il ${l-isa2} ${l-isa3} $words -} {{l is a lstring} {2 7 10 16 25 29 36 39 47 55 58 63} {l is a lstring} {l is a lstring} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring {2 7 10 16 25 29 36 39 47 55 58 63} lstring lstring {My name is Inigo Montoya. You killed my father. Prepare to die!}} test abstractlist-2.4 {no shimmer foreach} { set l [lstring $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set word {} set words {} foreach c $l { @@ -104,102 +93,102 @@ test abstractlist-2.4 {no shimmer foreach} { if {$word ne ""} { lappend words $word } - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list ${l-isa} ${l-isa2} $words -} {{l is a lstring} {l is a lstring} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring lstring {My name is Inigo Montoya. You killed my father. Prepare to die!}} # -# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m results is a list, not an lstring. +# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m list, not an lstring. # test abstractlist-2.5 {!no shimmer lreplace} { set l [lstring $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lreplace $l 18 23 { } f a i l ?] - set m-isa [value-isa m] - set l-isa1 [value-isa l] + set m-isa [testobj objtype $m] + set l-isa1 [testobj objtype $l] list ${l-isa} $m ${m-isa} ${l-isa1} -} {{l is a lstring} {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {m is a lstring} {l is a lstring}} +} {lstring {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring lstring} test abstractlist-2.6 {no shimmer ledit} { # "ledit m 9 8 S" set l [lstring $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set e [ledit l 9 8 S] - set e-isa [value-isa e] + set e-isa [testobj objtype $e] list ${l-isa} $e ${e-isa} -} {{l is a lstring} {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {e is a lstring}} +} {lstring {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring} test abstractlist-2.7 {no shimmer linsert} { # "ledit m 9 8 S" set l [lstring $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set i [linsert $l 12 {*}[split "almost " {}]] - set i-isa [value-isa i] + set i-isa [testobj objtype $i] set res [list ${l-isa} $i ${i-isa}] set p [lpop i 23] - set p-isa [value-isa p] - set i-isa2 [value-isa i] + set p-isa [testobj objtype $p] + set i-isa2 [testobj objtype $i] lappend res $p ${p-isa} $i ${i-isa2} -} {{l is a lstring} {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a lstring} ' {p is a pure} {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a lstring}} +} {lstring {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring ' none {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring} test abstractlist-2.8 {shimmer lassign} { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lassign $l i n c] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {o n c e i v a b l e} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {o n c e i v a b l e} lstring lstring} test abstractlist-2.9 {no shimmer lremove} { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lremove $l 0 1] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {c o n c e i v a b l e} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {c o n c e i v a b l e} lstring lstring} test abstractlist-2.10 {shimmer lreverse} { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lreverse $l] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {e l b a v i e c n o c n I} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {e l b a v i e c n o c n I} lstring lstring} test abstractlist-2.11 {shimmer lset} { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lset l 2 k] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] -} {{I n k o n c e i v a b l e} {l is a lstring} {I n k o n c e i v a b l e} {m is a lstring} 0} +} {{I n k o n c e i v a b l e} lstring {I n k o n c e i v a b l e} lstring 0} # lrepeat test abstractlist-2.12 {shimmer lrepeat} { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lrepeat 3 $l] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] set n [lindex $m 1] - list $l ${l-isa} $m ${m-isa} [value-isa n] [value-cmp l n] -} {{I n c o n c e i v a b l e} {l is a lstring} {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} {m is a list} {n is a lstring} 0} + list $l ${l-isa} $m ${m-isa} [testobj objtype $n] [value-cmp l n] +} {{I n c o n c e i v a b l e} lstring {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} list lstring 0} test abstractlist-2.13 {no shimmer join llength==1} { set l [lstring G] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set j [join $l :] - set j-isa [value-isa j] + set j-isa [testobj objtype $j] list ${l-isa} $l ${j-isa} $j -} {{l is a lstring} G {j is a pure} G} +} {lstring G none G} test abstractlist-2.14 {error case lset multiple indicies} -body { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lset l 2 0 1 k] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] } -returnCodes 1 \ -result {Multiple indicies not supported by lstring.} @@ -208,35 +197,35 @@ test abstractlist-2.14 {error case lset multiple indicies} -body { test abstractlist-3.0 {no shimmer llength} { set l [lstring -not SLICE $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set len [llength $l] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${len} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} 63 {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring 63 lstring} test abstractlist-3.1 {no shimmer lindex} { set l [lstring -not SLICE $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set n 22 set ele [lindex $l $n] ;# exercise INST_LIST_INDEX - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${ele} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} y {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring y lstring} test abstractlist-3.2 {no shimmer lreverse} { set l [lstring -not SLICE $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set r [lreverse $l] - set r-isa [value-isa r] - set l-isa2 [value-isa l] + set r-isa [testobj objtype $r] + set l-isa2 [testobj objtype $l] list $r ${l-isa} ${r-isa} ${l-isa2} -} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} {l is a lstring} {r is a lstring} {l is a lstring}} +} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} lstring lstring lstring} test abstractlist-3.3 {shimmer lrange} { set l [lstring -not SLICE $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set il [lsearch -all [lstring -not SLICE $str] { }] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] lappend il [llength $l] set start 0 set words [lmap i $il { @@ -244,13 +233,13 @@ test abstractlist-3.3 {shimmer lrange} { set start [expr {$i+1}] set w }] - set l-isa3 [value-isa l]; # lrange defaults to list behavior + set l-isa3 [testobj objtype $l]; # lrange defaults to list behavior list ${l-isa} $il ${l-isa2} ${l-isa3} $words -} {{l is a lstring} {2 7 10 16 25 29 36 39 47 55 58 63} {l is a lstring} {l is a list} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring {2 7 10 16 25 29 36 39 47 55 58 63} lstring list {My name is Inigo Montoya. You killed my father. Prepare to die!}} test abstractlist-3.4 {no shimmer foreach} { set l [lstring -not SLICE $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set word {} set words {} foreach c $l { @@ -264,89 +253,89 @@ test abstractlist-3.4 {no shimmer foreach} { if {$word ne ""} { lappend words $word } - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list ${l-isa} ${l-isa2} $words -} {{l is a lstring} {l is a lstring} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring lstring {My name is Inigo Montoya. You killed my father. Prepare to die!}} # -# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m results is a list, not an lstring. +# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m list, not an lstring. # test abstractlist-3.5 {!no shimmer lreplace} { set l [lstring -not SLICE $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lreplace $l 18 23 { } f a i l ?] - set m-isa [value-isa m] - set l-isa1 [value-isa l] + set m-isa [testobj objtype $m] + set l-isa1 [testobj objtype $l] list ${l-isa} $m ${m-isa} ${l-isa1} -} {{l is a lstring} {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {m is a lstring} {l is a lstring}} +} {lstring {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring lstring} test abstractlist-3.6 {no shimmer ledit} { # "ledit m 9 8 S" set l [lstring -not SLICE $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set e [ledit l 9 8 S] - set e-isa [value-isa e] + set e-isa [testobj objtype $e] list ${l-isa} $e ${e-isa} -} {{l is a lstring} {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {e is a lstring}} +} {lstring {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring} test abstractlist-3.7 {no shimmer linsert} { # "ledit m 9 8 S" set res {} set l [lstring -not SLICE $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set i [linsert $l 12 {*}[split "almost " {}]] - set i-isa [value-isa i] + set i-isa [testobj objtype $i] set res [list ${l-isa} $i ${i-isa}] set p [lpop i 23] - set p-isa [value-isa p] - set i-isa2 [value-isa i] + set p-isa [testobj objtype $p] + set i-isa2 [testobj objtype $i] lappend res $p ${p-isa} $i ${i-isa2} -} {{l is a lstring} {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a lstring} ' {p is a pure} {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a lstring}} +} {lstring {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring ' none {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring} test abstractlist-3.8 {shimmer lassign} { set l [lstring -not SLICE Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lassign $l i n c] ;# must be using lrange internally - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {o n c e i v a b l e} {l is a list} {l2 is a list}} +} {{I n c o n c e i v a b l e} lstring {o n c e i v a b l e} list list} test abstractlist-3.9 {no shimmer lremove} { set l [lstring -not SLICE Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lremove $l 0 1] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {c o n c e i v a b l e} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {c o n c e i v a b l e} lstring lstring} test abstractlist-3.10 {shimmer lreverse} { set l [lstring -not SLICE Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lreverse $l] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {e l b a v i e c n o c n I} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {e l b a v i e c n o c n I} lstring lstring} test abstractlist-3.11 {shimmer lset} { set l [lstring -not SLICE Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lset l 2 k] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] -} {{I n k o n c e i v a b l e} {l is a lstring} {I n k o n c e i v a b l e} {m is a lstring} 0} +} {{I n k o n c e i v a b l e} lstring {I n k o n c e i v a b l e} lstring 0} # lrepeat test abstractlist-3.12 {shimmer lrepeat} { set l [lstring -not SLICE Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lrepeat 3 $l] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] set n [lindex $m 1] - list $l ${l-isa} $m ${m-isa} [value-isa n] [value-cmp l n] -} {{I n c o n c e i v a b l e} {l is a lstring} {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} {m is a list} {n is a lstring} 0} + list $l ${l-isa} $m ${m-isa} [testobj objtype $n] [value-cmp l n] +} {{I n c o n c e i v a b l e} lstring {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} list lstring 0} # lsort foreach not {{} REVERSE SLICE SETELEMENT REPLACE GETELEMENTS} { @@ -356,34 +345,34 @@ foreach not {{} REVERSE SLICE SETELEMENT REPLACE GETELEMENTS} { test abstractlist-$not-4.0 {no shimmer llength} { set l [lstring {*}$options $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set len [llength $l] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${len} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} 63 {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring 63 lstring} test abstractlist-$not-4.1 {no shimmer lindex} { set l [lstring {*}$options $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set ele [lindex $l 22] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list $l ${l-isa} ${ele} ${l-isa2} -} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} {l is a lstring} y {l is a lstring}} +} {{M y { } n a m e { } i s { } I n i g o { } M o n t o y a . { } Y o u { } k i l l e d { } m y { } f a t h e r . { } P r e p a r e { } t o { } d i e !} lstring y lstring} test abstractlist-$not-4.2 {lreverse} ReverseShimmer { set l [lstring {*}$options $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set r [lreverse $l] - set r-isa [value-isa r] - set l-isa2 [value-isa l] + set r-isa [testobj objtype $r] + set l-isa2 [testobj objtype $l] list $r ${l-isa} ${r-isa} ${l-isa2} -} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} {l is a lstring} {r is a lstring} {l is a lstring}} +} {{! e i d { } o t { } e r a p e r P { } . r e h t a f { } y m { } d e l l i k { } u o Y { } . a y o t n o M { } o g i n I { } s i { } e m a n { } y M} lstring lstring lstring} test abstractlist-$not-4.3 {no shimmer lrange} RangeShimmer { set l [lstring {*}$options $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set il [lsearch -all [lstring {*}$options $str] { }] - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] lappend il [llength $l] set start 0 set words [lmap i $il { @@ -391,13 +380,13 @@ test abstractlist-$not-4.3 {no shimmer lrange} RangeShimmer { set start [expr {$i+1}] set w }] - set l-isa3 [value-isa l] + set l-isa3 [testobj objtype $l] list ${l-isa} $il ${l-isa2} ${l-isa3} $words -} {{l is a lstring} {2 7 10 16 25 29 36 39 47 55 58 63} {l is a lstring} {l is a lstring} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring {2 7 10 16 25 29 36 39 47 55 58 63} lstring lstring {My name is Inigo Montoya. You killed my father. Prepare to die!}} test abstractlist-$not-4.4 {no shimmer foreach} { set l [lstring {*}$options $str] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set word {} set words {} foreach c $l { @@ -411,94 +400,94 @@ test abstractlist-$not-4.4 {no shimmer foreach} { if {$word ne ""} { lappend words $word } - set l-isa2 [value-isa l] + set l-isa2 [testobj objtype $l] list ${l-isa} ${l-isa2} $words -} {{l is a lstring} {l is a lstring} {My name is Inigo Montoya. You killed my father. Prepare to die!}} +} {lstring lstring {My name is Inigo Montoya. You killed my father. Prepare to die!}} # -# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m results is a list, not an lstring. +# The TBCE implements lreplace as a lrange + lappend operation, so, in this case, $m list, not an lstring. # test abstractlist-$not-4.5 {!no shimmer lreplace} RangeShimmer { set l [lstring {*}$options $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lreplace $l 18 23 { } f a i l ?] - set m-isa [value-isa m] - set l-isa1 [value-isa l] + set m-isa [testobj objtype $m] + set l-isa1 [testobj objtype $l] list ${l-isa} $m ${m-isa} ${l-isa1} -} {{l is a lstring} {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {m is a list} {l is a lstring}} +} {lstring {V i z z i n i : { } H E { } D I D N ' T { } f a i l ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} list lstring} test abstractlist-$not-4.6 {no shimmer ledit} {SetelementShimmer ReplaceShimmer} { # "ledit m 9 8 S" set l [lstring {*}$options $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set e [ledit l 9 8 S] - set e-isa [value-isa e] + set e-isa [testobj objtype $e] list ${l-isa} $e ${e-isa} -} {{l is a lstring} {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {e is a lstring}} +} {lstring {V i z z i n i : { } S H E { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring} test abstractlist-$not-4.7 {no shimmer linsert} ReplaceShimmer { # "ledit m 9 8 S" set l [lstring {*}$options $str2] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set i [linsert $l 12 {*}[split "almost " {}]] - set i-isa [value-isa i] + set i-isa [testobj objtype $i] set res [list ${l-isa} $i ${i-isa}] set p [lpop i 23] - set p-isa [value-isa p] - set i-isa2 [value-isa i] + set p-isa [testobj objtype $p] + set i-isa2 [testobj objtype $i] lappend res $p ${p-isa} $i ${i-isa2} -} {{l is a lstring} {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a lstring} ' {p is a pure} {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} {i is a list}} +} {lstring {V i z z i n i : { } H E { } a l m o s t { } D I D N ' T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} lstring ' none {V i z z i n i : { } H E { } a l m o s t { } D I D N T { } F A L L ? { } I N C O N C E I V A B L E . { } I n i g o { } M o n t o y a : { } Y o u { } k e e p { } u s i n g { } t h a t { } w o r d . { } I { } d o { } n o t { } t h i n k { } i t { } m e a n s { } w h a t { } y o u { } t h i n k { } i t { } m e a n s .} list} # lassign probably uses lrange internally test abstractlist-$not-4.8 {shimmer lassign} RangeShimmer { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lassign $l i n c] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {o n c e i v a b l e} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {o n c e i v a b l e} lstring lstring} test abstractlist-$not-4.9 {no shimmer lremove} ReplaceShimmer { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lremove $l 0 1] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {c o n c e i v a b l e} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {c o n c e i v a b l e} lstring lstring} test abstractlist-$not-4.10 {shimmer lreverse} ReverseShimmer { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set l2 [lreverse $l] - set l-isa2 [value-isa l] - set l2-isa [value-isa l2] + set l-isa2 [testobj objtype $l] + set l2-isa [testobj objtype $l2] list $l ${l-isa} $l2 ${l-isa2} ${l2-isa} -} {{I n c o n c e i v a b l e} {l is a lstring} {e l b a v i e c n o c n I} {l is a lstring} {l2 is a lstring}} +} {{I n c o n c e i v a b l e} lstring {e l b a v i e c n o c n I} lstring lstring} test abstractlist-$not-4.11 {shimmer lset} SetelementShimmer { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lset l 2 k] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] -} {{I n k o n c e i v a b l e} {l is a lstring} {I n k o n c e i v a b l e} {m is a lstring} 0} +} {{I n k o n c e i v a b l e} lstring {I n k o n c e i v a b l e} lstring 0} test abstractlist-$not-4.11x {lset not compiled} {SetelementShimmer testevalex} { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [testevalex {lset l 2 k}] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] -} {{I n k o n c e i v a b l e} {l is a lstring} {I n k o n c e i v a b l e} {m is a lstring} 0} +} {{I n k o n c e i v a b l e} lstring {I n k o n c e i v a b l e} lstring 0} test abstractlist-$not-4.11e {error case lset multiple indicies} \ -constraints {SetelementShimmer testevalex} -body { set l [lstring Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [testevalex {lset l 2 0 1 k}] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] list $l ${l-isa} $m ${m-isa} [value-cmp l m] } -returnCodes 1 \ -result {Multiple indicies not supported by lstring.} @@ -506,12 +495,12 @@ test abstractlist-$not-4.11e {error case lset multiple indicies} \ # lrepeat test abstractlist-$not-4.12 {shimmer lrepeat} { set l [lstring {*}$options Inconceivable] - set l-isa [value-isa l] + set l-isa [testobj objtype $l] set m [lrepeat 3 $l] - set m-isa [value-isa m] + set m-isa [testobj objtype $m] set n [lindex $m 1] - list $l ${l-isa} $m ${m-isa} [value-isa n] [value-cmp l n] -} {{I n c o n c e i v a b l e} {l is a lstring} {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} {m is a list} {n is a lstring} 0} + list $l ${l-isa} $m ${m-isa} [testobj objtype $n] [value-cmp l n] +} {{I n c o n c e i v a b l e} lstring {{I n c o n c e i v a b l e} {I n c o n c e i v a b l e} {I n c o n c e i v a b l e}} list lstring 0} # Disable constraint testConstraint [format "%sShimmer" [string totitle $not]] 1 diff --git a/tests/dict.test b/tests/dict.test index d67f703..fe4f498 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -27,6 +27,7 @@ if {[testConstraint memory]} { expr {$end - $tmp} } } + test dict-1.1 {dict command basic syntax} -returnCodes error -body { dict @@ -138,8 +139,16 @@ test dict-3.15 {compiled dict get error cleanliness - Bug 2431847} -body { dict get $a(z) d }} } -returnCodes error -result {key "d" not known in dictionary} -test dict-3.16 {dict/list shimmering - Bug 3004007} {set l [list p 1 p 2 q 3];dict get $l q;set l} {p 1 p 2 q 3} -test dict-3.17 {dict/list shimmering - Bug 3004007} {set l [list p 1 p 2 q 3];dict get $l q;llength $l} 6 +test dict-3.16 {dict/list shimmering - Bug 3004007} { + set l [list p 1 p 2 q 3] + dict get $l q + list $l [testobj objtype $l] +} {{p 1 p 2 q 3} dict} +test dict-3.17 {dict/list shimmering - Bug 3004007} { + set l [list p 1 p 2 q 3] + dict get $l q + list [llength $l] [testobj objtype $l] +} {6 dict} test dict-4.1 {dict replace command} { dict replace {a b c d} @@ -662,15 +671,15 @@ test dict-14.14 {dict for command: handle representation loss} -body { set keys {} set values {} dict for {k v} $dictVar { - if {[llength $dictVar]} { + if {[string length $dictVar]} { lappend keys $k lappend values $v } } - list [lsort $keys] [lsort $values] + list [lsort $keys] [lsort $values] [testobj objtype $dictVar] } -cleanup { unset dictVar keys values k v -} -result {{a c e g} {b d f h}} +} -result {{a c e g} {b d f h} string} test dict-14.15 {dict for command: keys are unique and iterated over once only} -setup { unset -nocomplain accum array set accum {} @@ -1808,27 +1817,27 @@ test dict-24.14 {dict map command: handle representation loss} -setup { } -body { set dictVar {a b c d e f g h} list [dict size [dict map {k v} $dictVar { - if {[llength $dictVar]} { + if {[string length $dictVar]} { lappend keys $k lappend values $v return -level 0 $k } - }]] [lsort $keys] [lsort $values] + }]] [lsort $keys] [lsort $values] [testobj objtype $dictVar] } -cleanup { unset dictVar keys values k v -} -result {4 {a c e g} {b d f h}} +} -result {4 {a c e g} {b d f h} string} test dict-24.14a {dict map command: handle representation loss} -body { apply {{} { set dictVar {a b c d e f g h} list [dict size [dict map {k v} $dictVar { - if {[llength $dictVar]} { + if {[string length $dictVar]} { lappend keys $k lappend values $v return -level 0 $k } - }]] [lsort $keys] [lsort $values] + }]] [lsort $keys] [lsort $values] [testobj objtype $dictVar] }} -} -result {4 {a c e g} {b d f h}} +} -result {4 {a c e g} {b d f h} string} test dict-24.15 {dict map command: keys are unique and iterated over once only} -setup { unset -nocomplain accum array set accum {} |