aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-27 14:21:41 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:47 +1000
commitc9324c18e63eb67b1d3f7418c345d1dd1e6d3bdb (patch)
tree5b94b7f1cf1b4b48d9f9a4ed6c385c396d78b4b8 /tests
parent8189b7f24ad432dc21faab9f8fad990ad2bca551 (diff)
downloadjimtcl-c9324c18e63eb67b1d3f7418c345d1dd1e6d3bdb.zip
jimtcl-c9324c18e63eb67b1d3f7418c345d1dd1e6d3bdb.tar.gz
jimtcl-c9324c18e63eb67b1d3f7418c345d1dd1e6d3bdb.tar.bz2
Add basic Tcl implementation of 'try ... finally'
Diffstat (limited to 'tests')
-rw-r--r--tests/try.test65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/try.test b/tests/try.test
new file mode 100644
index 0000000..3cc86fb
--- /dev/null
+++ b/tests/try.test
@@ -0,0 +1,65 @@
+source testing.tcl
+
+test try-1.1 "Simple case" {
+ try {
+ set x 0
+ } finally {
+ incr x
+ }
+} 0
+
+test try-1.2 "Error in body" {
+ list [catch {
+ try {
+ set x 0
+ error message
+ } finally {
+ incr x
+ }
+ } msg] $msg $x
+} {1 message 1}
+
+test try-1.3 "Error in finally" {
+ list [catch {
+ try {
+ set x 0
+ } finally {
+ incr x
+ error finally
+ }
+ } msg] $msg $x
+} {1 finally 1}
+
+test try-1.4 "Error in both" {
+ list [catch {
+ try {
+ set x 0
+ error message
+ } finally {
+ incr x
+ error finally
+ }
+ } msg] $msg $x
+} {1 message 1}
+
+test try-1.5 "break in body" {
+ list [catch {
+ try {
+ set x 0
+ break
+ } finally {
+ incr x
+ }
+ } msg] $msg $x
+} {3 {} 1}
+
+test try-1.6 "break in finally" {
+ list [catch {
+ try {
+ set x 0
+ } finally {
+ incr x
+ break
+ }
+ } msg] $msg $x
+} {3 {} 1}