1# Commands covered:  eval
2#
3# This file contains a collection of tests for one or more of the Tcl built-in
4# commands.  Sourcing this file into Tcl runs the tests and generates output
5# for errors.  No output means no errors were found.
6#
7# Copyright © 1991-1993 The Regents of the University of California.
8# Copyright © 1994 Sun Microsystems, Inc.
9# Copyright © 1998-1999 Scriptics Corporation.
10#
11# See the file "license.terms" for information on usage and redistribution of
12# this file, and for a DISCLAIMER OF ALL WARRANTIES.
13
14if {"::tcltest" ni [namespace children]} {
15    package require tcltest 2.5
16    namespace import -force ::tcltest::*
17}
18
19test eval-1.1 {single argument} {
20    eval {format 22}
21} 22
22test eval-1.2 {multiple arguments} {
23    set a {$b}
24    set b xyzzy
25    eval format $a
26} xyzzy
27test eval-1.3 {single argument} {
28    eval concat a b c d e f g
29} {a b c d e f g}
30
31test eval-2.1 {error: not enough arguments} {catch eval} 1
32test eval-2.2 {error: not enough arguments} {
33    catch eval msg
34    set msg
35} {wrong # args: should be "eval arg ?arg ...?"}
36test eval-2.3 {error in eval'ed command} {
37    catch {eval {error "test error"}}
38} 1
39test eval-2.4 {error in eval'ed command} {
40    catch {eval {error "test error"}} msg
41    set msg
42} {test error}
43test eval-2.5 {error in eval'ed command: setting errorInfo} {
44    catch {eval {
45	set a 1
46	error "test error"
47    }} msg
48    set ::errorInfo
49} "test error
50    while executing
51\"error \"test error\"\"
52    (\"eval\" body line 3)
53    invoked from within
54\"eval {
55	set a 1
56	error \"test error\"
57    }\""
58
59test eval-3.1 {eval and pure lists} {
60    eval [list list 1 2 3 4 5]
61} {1 2 3 4 5}
62test eval-3.2 {concatenating eval and pure lists} {
63    eval [list list 1] [list 2 3 4 5]
64} {1 2 3 4 5}
65test eval-3.3 {eval and canonical lists} {
66    set cmd [list list 1 2 3 4 5]
67    # Force existance of utf-8 rep
68    set dummy($cmd) $cmd
69    unset dummy
70    eval $cmd
71} {1 2 3 4 5}
72test eval-3.4 {concatenating eval and canonical lists} {
73    set cmd  [list list 1]
74    set cmd2 [list 2 3 4 5]
75    # Force existance of utf-8 rep
76    set dummy($cmd) $cmd
77    set dummy($cmd2) $cmd2
78    unset dummy
79    eval $cmd $cmd2
80} {1 2 3 4 5}
81
82# cleanup
83::tcltest::cleanupTests
84return
85
86# Local Variables:
87# mode: tcl
88# fill-column: 78
89# End:
90