blob: f13550fae206382644858ae793276aab94ff1874 [file] [log] [blame]
David Aschere2b4b322004-02-18 05:59:53 +00001#!/usr/bin/env python
2
3import unittest
4import os
Neal Norwitz63dfece2004-02-19 02:37:29 +00005from test import test_support
David Aschere2b4b322004-02-18 05:59:53 +00006from Tkinter import Tcl
7from _tkinter import TclError
8
9class TclTest(unittest.TestCase):
10
11 def setUp(self):
12 self.interp = Tcl()
13
14 def testEval(self):
15 tcl = self.interp
16 tcl.eval('set a 1')
17 self.assertEqual(tcl.eval('set a'),'1')
18
19 def testEvalException(self):
20 tcl = self.interp
21 self.assertRaises(TclError,tcl.eval,'set a')
22
23 def testEvalException2(self):
24 tcl = self.interp
25 self.assertRaises(TclError,tcl.eval,'this is wrong')
26
27 def testCall(self):
28 tcl = self.interp
29 tcl.call('set','a','1')
30 self.assertEqual(tcl.call('set','a'),'1')
31
32 def testCallException(self):
33 tcl = self.interp
34 self.assertRaises(TclError,tcl.call,'set','a')
35
36 def testCallException2(self):
37 tcl = self.interp
38 self.assertRaises(TclError,tcl.call,'this','is','wrong')
39
40 def testSetVar(self):
41 tcl = self.interp
42 tcl.setvar('a','1')
43 self.assertEqual(tcl.eval('set a'),'1')
44
45 def testSetVarArray(self):
46 tcl = self.interp
47 tcl.setvar('a(1)','1')
48 self.assertEqual(tcl.eval('set a(1)'),'1')
49
50 def testGetVar(self):
51 tcl = self.interp
52 tcl.eval('set a 1')
53 self.assertEqual(tcl.getvar('a'),'1')
54
55 def testGetVarArray(self):
56 tcl = self.interp
57 tcl.eval('set a(1) 1')
58 self.assertEqual(tcl.getvar('a(1)'),'1')
59
60 def testGetVarException(self):
61 tcl = self.interp
62 self.assertRaises(TclError,tcl.getvar,'a')
63
64 def testGetVarArrayException(self):
65 tcl = self.interp
66 self.assertRaises(TclError,tcl.getvar,'a(1)')
67
68 def testUnsetVar(self):
69 tcl = self.interp
70 tcl.setvar('a',1)
71 self.assertEqual(tcl.eval('info exists a'),'1')
72 tcl.unsetvar('a')
73 self.assertEqual(tcl.eval('info exists a'),'0')
74
75 def testUnsetVarArray(self):
76 tcl = self.interp
77 tcl.setvar('a(1)',1)
78 tcl.setvar('a(2)',2)
79 self.assertEqual(tcl.eval('info exists a(1)'),'1')
80 self.assertEqual(tcl.eval('info exists a(2)'),'1')
81 tcl.unsetvar('a(1)')
82 self.assertEqual(tcl.eval('info exists a(1)'),'0')
83 self.assertEqual(tcl.eval('info exists a(2)'),'1')
84
85 def testUnsetVarException(self):
86 tcl = self.interp
87 self.assertRaises(TclError,tcl.unsetvar,'a')
88
89 def testEvalFile(self):
90 tcl = self.interp
91 filename = "testEvalFile.tcl"
92 fd = open(filename,'w')
93 script = """set a 1
94 set b 2
95 set c [ expr $a + $b ]
96 """
97 fd.write(script)
98 fd.close()
99 tcl.evalfile(filename)
Neal Norwitz9a8d55e2004-02-29 15:37:50 +0000100 os.remove(filename)
David Aschere2b4b322004-02-18 05:59:53 +0000101 self.assertEqual(tcl.eval('set a'),'1')
102 self.assertEqual(tcl.eval('set b'),'2')
103 self.assertEqual(tcl.eval('set c'),'3')
104
105 def testEvalFileException(self):
106 tcl = self.interp
107 filename = "doesnotexists"
108 try:
109 os.remove(filename)
110 except Exception,e:
111 pass
112 self.assertRaises(TclError,tcl.evalfile,filename)
113
114 def testPackageRequire(self):
115 tcl = self.interp
116 tcl.eval('package require Tclx')
117 tcl.eval('keylset a b.c 1')
118 self.assertEqual(tcl.eval('keylget a b.c'),'1')
119
120 def testPackageRequireException(self):
121 tcl = self.interp
122 self.assertRaises(TclError,tcl.eval,'package require DNE')
123
124 def testLoadTk(self):
125 import os
126 if 'DISPLAY' not in os.environ:
127 # skipping test of clean upgradeability
128 return
129 tcl = Tcl()
130 self.assertRaises(TclError,tcl.winfo_geometry)
131 tcl.loadtk()
132 self.assertEqual('1x1+0+0', tcl.winfo_geometry())
133
134 def testLoadTkFailure(self):
135 import os
136 old_display = None
137 import sys
138 if sys.platform.startswith('win'):
139 return # no failure possible on windows?
140 if 'DISPLAY' in os.environ:
141 old_display = os.environ['DISPLAY']
142 del os.environ['DISPLAY']
143 # on some platforms, deleting environment variables
144 # doesn't actually carry through to the process level
145 # because they don't support unsetenv
146 # If that's the case, abort.
147 display = os.popen('echo $DISPLAY').read().strip()
148 if display:
149 return
150 try:
151 tcl = Tcl()
152 self.assertRaises(TclError, tcl.winfo_geometry)
153 self.assertRaises(TclError, tcl.loadtk)
154 finally:
155 if old_display is not None:
156 os.environ['DISPLAY'] = old_display
Neal Norwitz63dfece2004-02-19 02:37:29 +0000157
158def test_main():
159 test_support.run_unittest(TclTest)
160
David Aschere2b4b322004-02-18 05:59:53 +0000161if __name__ == "__main__":
Neal Norwitz63dfece2004-02-19 02:37:29 +0000162 test_main()