Files
fail/debuggers/openocd/jimtcl/tests/expr.test
Lars Rademacher 83d72a091e debuggers: import openocd-0.7.0
Initial check-in of openocd-0.7.0 as it can be downloaded from
http://sourceforge.net/projects/openocd/files/openocd/0.7.0/

Any modifications will follow.

Change-Id: I6949beaefd589e046395ea0cb80f4e1ab1654d55
2013-12-02 14:53:22 +01:00

139 lines
2.4 KiB
Plaintext

source [file dirname [info script]]/testing.tcl
test expr-1.1 "Compare strings lt" {
expr {"V000500" < "V000405"}
} {0}
test expr-1.2 "Compare strings with embedded nulls" {
set s1 [format abc%cdef 0]
set s2 [format abc%cghi 0]
expr {$s1 < $s2}
} {1}
test expr-1.3 "Hex values" {
set mask1 [expr 0x4050 & 0x0CCC]
} {64}
test expr-1.4 "Ternary operator - true" {
expr {1 ? 2 : 3}
} {2}
test expr-1.5 "Ternary operator - false" {
expr {0 ? 2 : 3}
} {3}
test expr-1.6 "Ternary operator - double check" {
expr {1.0 ? 2 : 3}
} {2}
test expr-1.7 "Ternary operator - string result" {
expr {1 ? "two" : 3}
} {two}
test expr-1.8 "Ternary operator - don't eval false path" {
set a 100
set b 200
set c [expr {20 ? [incr a] : [incr b]}]
list $a $b $c
} {101 200 101}
test expr-1.9 "Unary minus" {
set a 1
expr {-$a}
} {-1}
test expr-1.10 "Subtraction" {
set a 1
set b 10
expr {$b-$a}
} {9}
test expr-1.11 "Short circuit evaluation" {
set a 100
set c [expr {0 || [incr a]}]
list $a $c
} {101 1}
test expr-1.12 "Short circuit evaluation" {
set a 100
set c [expr {1 || [incr a]}]
list $a $c
} {100 1}
test expr-1.13 "Short circuit evaluation" {
set a 100
set c [expr {1 || [incr a] && [incr a]}]
list $a $c
} {100 1}
test expr-1.14 "Rotate left" jim {
expr {1 <<< 5}
} {32}
test expr-1.15 "Rotate left" jim {
expr {1 <<< 65}
} {2}
test expr-1.16 "Rotate right" jim {
expr {1 >>> 48}
} {65536}
test expr-1.17 "Rotate left" jim {
expr {1 >>> 63}
} {2}
# This crashes older jim
test expr-2.1 "bogus unarymin" {
catch {expr {unarymin 1}}
return 1
} {1}
test expr-2.2 "Ternary operator - missing colon" {
list [catch {expr {1 ? 2 3}} msg]
} {1}
test expr-2.3 "Ternary operator - missing third term" {
list [catch {expr {1 ? 2}} msg]
} {1}
test expr-2.4 "Ternary operator - missing question" {
list [catch {expr {1 : 2}} msg]
} {1}
test expr-3.1 "in, ni operators" {
set l {a b c d}
set c C
list [expr {"a" in $l}] [expr {$c in $l}] [expr {"b" ni $l}] [expr {$c ni $l}]
} {1 0 0 1}
test expr-3.2 "if: in, ni operators" {
set l {a b c d}
set a a
set c C
set result {}
if {$a in $l} {
lappend result 1
}
if {$c in $l} {
lappend result 2
}
if {$a ni $l} {
lappend result 3
}
if {$c ni $l} {
lappend result 4
}
if {"d" in $l} {
lappend result 5
}
} {1 4 5}
# Don't want a to become 2.0
test expr-4.1 "Shimmering" {
set a 2
expr {$a < 3.0}
set a
} {2}
testreport