2 ' Copyright 2011 Jacek Caban for CodeWeavers
4 ' This library is free software; you can redistribute it and/or
5 ' modify it under the terms of the GNU Lesser General Public
6 ' License as published by the Free Software Foundation; either
7 ' version 2.1 of the License, or (at your option) any later version.
9 ' This library is distributed in the hope that it will be useful,
10 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 ' Lesser General Public License for more details.
14 ' You should have received a copy of the GNU Lesser General Public
15 ' License along with this library; if not, write to the Free Software
16 ' Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 call ok(true, "true is not true?")
24 ok true, "true is not true?"
25 call ok((true), "true is not true?")
27 ok not false, "not false but not true?"
28 ok not not true, "not not true but not true?"
30 Call ok(true = true, "true = true is false")
31 Call ok(false = false, "false = false is false")
32 Call ok(not (true = false), "true = false is true")
33 Call ok("x" = "x", """x"" = ""x"" is false")
34 Call ok(empty = empty, "empty = empty is false")
35 Call ok(empty = "", "empty = """" is false")
36 Call ok(0 = 0.0, "0 <> 0.0")
37 Call ok(16 = &h10&, "16 <> &h10&")
38 Call ok(010 = 10, "010 <> 10")
39 Call ok(10. = 10, "10. <> 10")
40 Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
41 Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
42 Call ok(--1 = 1, "--1 = " & --1)
43 Call ok(-empty = 0, "-empty = " & (-empty))
46 Call ok(x = "xx", "x = " & x & " expected ""xx""")
48 Call ok(true <> false, "true <> false is false")
49 Call ok(not (true <> true), "true <> true is true")
50 Call ok(not ("x" <> "x"), """x"" <> ""x"" is true")
51 Call ok(not (empty <> empty), "empty <> empty is true")
52 Call ok(x <> "x", "x = ""x""")
54 Call ok(getVT(false) = "VT_BOOL", "getVT(false) is not VT_BOOL")
55 Call ok(getVT(true) = "VT_BOOL", "getVT(true) is not VT_BOOL")
56 Call ok(getVT("") = "VT_BSTR", "getVT("""") is not VT_BSTR")
57 Call ok(getVT("test") = "VT_BSTR", "getVT(""test"") is not VT_BSTR")
58 Call ok(getVT(Empty) = "VT_EMPTY", "getVT(Empty) is not VT_EMPTY")
59 Call ok(getVT(null) = "VT_NULL", "getVT(null) is not VT_NULL")
60 Call ok(getVT(0) = "VT_I2", "getVT(0) is not VT_I2")
61 Call ok(getVT(1) = "VT_I2", "getVT(1) is not VT_I2")
62 Call ok(getVT(0.5) = "VT_R8", "getVT(0.5) is not VT_R8")
63 Call ok(getVT(0.0) = "VT_R8", "getVT(0.0) is not VT_R8")
64 Call ok(getVT(2147483647) = "VT_I4", "getVT(2147483647) is not VT_I4")
65 Call ok(getVT(2147483648) = "VT_R8", "getVT(2147483648) is not VT_R8")
66 Call ok(getVT(&h10&) = "VT_I2", "getVT(&h10&) is not VT_I2")
67 Call ok(getVT(&h10000&) = "VT_I4", "getVT(&h10000&) is not VT_I4")
68 Call ok(getVT(&H10000&) = "VT_I4", "getVT(&H10000&) is not VT_I4")
69 Call ok(getVT(&hffFFffFF&) = "VT_I2", "getVT(&hffFFffFF&) is not VT_I2")
70 Call ok(getVT(1 & 100000) = "VT_BSTR", "getVT(1 & 100000) is not VT_BSTR")
71 Call ok(getVT(-empty) = "VT_I2", "getVT(-empty) = " & getVT(-empty))
72 Call ok(getVT(-null) = "VT_NULL", "getVT(-null) = " & getVT(-null))
73 Call ok(getVT(y) = "VT_EMPTY*", "getVT(y) = " & getVT(y))
75 Call ok(getVT(x) = "VT_BOOL*", "getVT(x) = " & getVT(x))
78 Call ok("ab" & "cd" = "abcd", """ab"" & ""cd"" <> ""abcd""")
79 Call ok("ab " & null = "ab ", """ab"" & null = " & ("ab " & null))
80 Call ok("ab " & empty = "ab ", """ab"" & empty = " & ("ab " & empty))
81 Call ok(1 & 100000 = "1100000", "1 & 100000 = " & (1 & 100000))
82 Call ok("ab" & x = "abxx", """ab"" & x = " & ("ab"&x))
84 if(isEnglishLocale) then
85 Call ok("" & true = "True", """"" & true = " & true)
86 Call ok(true & false = "TrueFalse", "true & false = " & (true & false))
90 Call ok(2+2 = 4, "2+2 = " & (2+2))
91 Call ok(false + 6 + true = 5, "false + 6 + true <> 5")
92 Call ok(getVT(2+null) = "VT_NULL", "getVT(2+null) = " & getVT(2+null))
93 Call ok(2+empty = 2, "2+empty = " & (2+empty))
94 Call ok(x+x = 6, "x+x = " & (x+x))
96 Call ok(5-1 = 4, "5-1 = " & (5-1))
97 Call ok(3+5-true = 9, "3+5-true <> 9")
98 Call ok(getVT(2-null) = "VT_NULL", "getVT(2-null) = " & getVT(2-null))
99 Call ok(2-empty = 2, "2-empty = " & (2-empty))
100 Call ok(2-x = -1, "2-x = " & (2-x))
102 Call ok(9 Mod 6 = 3, "9 Mod 6 = " & (9 Mod 6))
103 Call ok(11.6 Mod 5.5 = False, "11.6 Mod 5.5 = " & (11.6 Mod 5.5 = 0.6))
104 Call ok(7 Mod 4+2 = 5, "7 Mod 4+2 <> 5")
105 Call ok(getVT(2 mod null) = "VT_NULL", "getVT(2 mod null) = " & getVT(2 mod null))
106 Call ok(getVT(null mod 2) = "VT_NULL", "getVT(null mod 2) = " & getVT(null mod 2))
107 'FIXME: Call ok(empty mod 2 = 0, "empty mod 2 = " & (empty mod 2))
109 Call ok(5 \ 2 = 2, "5 \ 2 = " & (5\2))
110 Call ok(4.6 \ 1.5 = 2, "4.6 \ 1.5 = " & (4.6\1.5))
111 Call ok(4.6 \ 1.49 = 5, "4.6 \ 1.49 = " & (4.6\1.49))
112 Call ok(2+3\4 = 2, "2+3\4 = " & (2+3\4))
114 Call ok(2*3 = 6, "2*3 = " & (2*3))
115 Call ok(3/2 = 1.5, "3/2 = " & (3/2))
116 Call ok(5\4/2 = 2, "5\4/2 = " & (5\2/1))
117 Call ok(12/3\2 = 2, "12/3\2 = " & (12/3\2))
119 Call ok(2^3 = 8, "2^3 = " & (2^3))
120 Call ok(2^3^2 = 64, "2^3^2 = " & (2^3^2))
121 Call ok(-3^2 = 9, "-3^2 = " & (-3^2))
122 Call ok(2*3^2 = 18, "2*3^2 = " & (2*3^2))
125 ok false, "if false called"
132 Call ok(not x, "x is false, if not evaluated?")
136 Call ok(false, "inside if false")
140 Call ok(x, "else not called?")
144 Call ok(false, "inside if false")
146 Call ok(false, "inside elseif not true")
150 Call ok(x, "else not called?")
154 Call ok(false, "inside if false")
157 ElseIf not False Then
160 Call ok(false, "inside else not true")
162 Call ok(x, "elseif not called?")
166 Call ok(false, "inside if false")
167 ElseIf not False Then
170 Call ok(x, "elseif not called?")
180 Call ok(x, "x is false, testsub not called?")
183 Call ok(not v, "v is not true")
189 Call ok(x, "x was not set by SubSetTrue")
192 Call ok(not false, "false is no longer false?")
194 Sub SubSetTrue2(ByRef v)
195 Call ok(not v, "v is not true")
201 Call ok(x, "x was not set by SubSetTrue")
203 Sub TestSubArgVal(ByVal v)
204 Call ok(not v, "v is not false")
206 Call ok(v, "v is not true?")
210 Call TestSubArgVal(x)
211 Call ok(not x, "x is true after TestSubArgVal call?")
213 Sub TestSubMultiArgs(a,b,c,d,e)
214 Call ok(a=1, "a = " & a)
215 Call ok(b=2, "b = " & b)
216 Call ok(c=3, "c = " & c)
217 Call ok(d=4, "d = " & d)
218 Call ok(e=5, "e = " & e)
221 Sub TestSubExit(ByRef a)
225 Call ok(false, "Exit Sub not called?")
228 Call TestSubExit(true)
230 TestSubMultiArgs 1, 2, 3, 4, 5
231 Call TestSubMultiArgs(1, 2, 3, 4, 5)
235 Call ok(not x, "local x is not false?")
242 Call ok(x, "global x is not true?")
252 Call ok(x, "x is false, testfunc not called?")
254 Function FuncSetTrue(v)
255 Call ok(not v, "v is not true")
261 Call ok(x, "x was not set by FuncSetTrue")
264 Call ok(not false, "false is no longer false?")
266 Function FuncSetTrue2(ByRef v)
267 Call ok(not v, "v is not true")
273 Call ok(x, "x was not set by FuncSetTrue")
275 Function TestFuncArgVal(ByVal v)
276 Call ok(not v, "v is not false")
278 Call ok(v, "v is not true?")
282 Call TestFuncArgVal(x)
283 Call ok(not x, "x is true after TestFuncArgVal call?")
285 Function TestFuncMultiArgs(a,b,c,d,e)
286 Call ok(a=1, "a = " & a)
287 Call ok(b=2, "b = " & b)
288 Call ok(c=3, "c = " & c)
289 Call ok(d=4, "d = " & d)
290 Call ok(e=5, "e = " & e)
293 TestFuncMultiArgs 1, 2, 3, 4, 5
294 Call TestFuncMultiArgs(1, 2, 3, 4, 5)
296 Function TestFuncLocalVal
298 Call ok(not x, "local x is not false?")
304 Call TestFuncLocalVal
305 Call ok(x, "global x is not true?")
307 Function TestFuncExit(ByRef a)
311 Call ok(false, "Exit Function not called?")
314 Call TestFuncExit(true)