summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/abstractlist.test325
-rw-r--r--tests/dict.test31
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 {}