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))
74 Call ok(getVT(nothing) = "VT_DISPATCH", "getVT(nothing) = " & getVT(nothing))
76 Call ok(getVT(x) = "VT_DISPATCH*", "getVT(x=nothing) = " & getVT(x))
78 Call ok(getVT(x) = "VT_BOOL*", "getVT(x) = " & getVT(x))
80 Call ok(isNullDisp(nothing), "nothing is not nulldisp?")
83 Call ok("ab" & "cd" = "abcd", """ab"" & ""cd"" <> ""abcd""")
84 Call ok("ab " & null = "ab ", """ab"" & null = " & ("ab " & null))
85 Call ok("ab " & empty = "ab ", """ab"" & empty = " & ("ab " & empty))
86 Call ok(1 & 100000 = "1100000", "1 & 100000 = " & (1 & 100000))
87 Call ok("ab" & x = "abxx", """ab"" & x = " & ("ab"&x))
89 if(isEnglishLocale) then
90 Call ok("" & true = "True", """"" & true = " & true)
91 Call ok(true & false = "TrueFalse", "true & false = " & (true & false))
94 call ok(true and true, "true and true is not true")
95 call ok(true and not false, "true and not false is not true")
96 call ok(not (false and true), "not (false and true) is not true")
97 call ok(getVT(null and true) = "VT_NULL", "getVT(null and true) = " & getVT(null and true))
99 call ok(false or true, "false or uie is false?")
100 call ok(not (false or false), "false or false is not false?")
101 call ok(false and false or true, "false and false or true is false?")
102 call ok(true or false and false, "true or false and false is false?")
103 call ok(null or true, "null or true is false")
105 call ok(true xor false, "true xor false is false?")
106 call ok(not (false xor false), "false xor false is true?")
107 call ok(not (true or false xor true), "true or false xor true is true?")
108 call ok(not (true xor false or true), "true xor false or true is true?")
110 call ok(false eqv false, "false does not equal false?")
111 call ok(not (false eqv true), "false equals true?")
112 call ok(getVT(false eqv null) = "VT_NULL", "getVT(false eqv null) = " & getVT(false eqv null))
114 call ok(true imp true, "true does not imp true?")
115 call ok(false imp false, "false does not imp false?")
116 call ok(not (true imp false), "true imp false?")
117 call ok(false imp null, "false imp null is false?")
120 Call ok(2+2 = 4, "2+2 = " & (2+2))
121 Call ok(false + 6 + true = 5, "false + 6 + true <> 5")
122 Call ok(getVT(2+null) = "VT_NULL", "getVT(2+null) = " & getVT(2+null))
123 Call ok(2+empty = 2, "2+empty = " & (2+empty))
124 Call ok(x+x = 6, "x+x = " & (x+x))
126 Call ok(5-1 = 4, "5-1 = " & (5-1))
127 Call ok(3+5-true = 9, "3+5-true <> 9")
128 Call ok(getVT(2-null) = "VT_NULL", "getVT(2-null) = " & getVT(2-null))
129 Call ok(2-empty = 2, "2-empty = " & (2-empty))
130 Call ok(2-x = -1, "2-x = " & (2-x))
132 Call ok(9 Mod 6 = 3, "9 Mod 6 = " & (9 Mod 6))
133 Call ok(11.6 Mod 5.5 = False, "11.6 Mod 5.5 = " & (11.6 Mod 5.5 = 0.6))
134 Call ok(7 Mod 4+2 = 5, "7 Mod 4+2 <> 5")
135 Call ok(getVT(2 mod null) = "VT_NULL", "getVT(2 mod null) = " & getVT(2 mod null))
136 Call ok(getVT(null mod 2) = "VT_NULL", "getVT(null mod 2) = " & getVT(null mod 2))
137 'FIXME: Call ok(empty mod 2 = 0, "empty mod 2 = " & (empty mod 2))
139 Call ok(5 \ 2 = 2, "5 \ 2 = " & (5\2))
140 Call ok(4.6 \ 1.5 = 2, "4.6 \ 1.5 = " & (4.6\1.5))
141 Call ok(4.6 \ 1.49 = 5, "4.6 \ 1.49 = " & (4.6\1.49))
142 Call ok(2+3\4 = 2, "2+3\4 = " & (2+3\4))
144 Call ok(2*3 = 6, "2*3 = " & (2*3))
145 Call ok(3/2 = 1.5, "3/2 = " & (3/2))
146 Call ok(5\4/2 = 2, "5\4/2 = " & (5\2/1))
147 Call ok(12/3\2 = 2, "12/3\2 = " & (12/3\2))
149 Call ok(2^3 = 8, "2^3 = " & (2^3))
150 Call ok(2^3^2 = 64, "2^3^2 = " & (2^3^2))
151 Call ok(-3^2 = 9, "-3^2 = " & (-3^2))
152 Call ok(2*3^2 = 18, "2*3^2 = " & (2*3^2))
155 ok false, "if false called"
162 Call ok(not x, "x is false, if not evaluated?")
166 Call ok(false, "inside if false")
170 Call ok(x, "else not called?")
174 Call ok(false, "inside if false")
176 Call ok(false, "inside elseif not true")
180 Call ok(x, "else not called?")
184 Call ok(false, "inside if false")
187 ElseIf not False Then
190 Call ok(false, "inside else not true")
192 Call ok(x, "elseif not called?")
196 Call ok(false, "inside if false")
197 ElseIf not False Then
200 Call ok(x, "elseif not called?")
210 Call ok(x, "x is false, testsub not called?")
213 Call ok(not v, "v is not true")
219 Call ok(x, "x was not set by SubSetTrue")
222 Call ok(not false, "false is no longer false?")
224 Sub SubSetTrue2(ByRef v)
225 Call ok(not v, "v is not true")
231 Call ok(x, "x was not set by SubSetTrue")
233 Sub TestSubArgVal(ByVal v)
234 Call ok(not v, "v is not false")
236 Call ok(v, "v is not true?")
240 Call TestSubArgVal(x)
241 Call ok(not x, "x is true after TestSubArgVal call?")
243 Sub TestSubMultiArgs(a,b,c,d,e)
244 Call ok(a=1, "a = " & a)
245 Call ok(b=2, "b = " & b)
246 Call ok(c=3, "c = " & c)
247 Call ok(d=4, "d = " & d)
248 Call ok(e=5, "e = " & e)
251 Sub TestSubExit(ByRef a)
255 Call ok(false, "Exit Sub not called?")
258 Call TestSubExit(true)
260 TestSubMultiArgs 1, 2, 3, 4, 5
261 Call TestSubMultiArgs(1, 2, 3, 4, 5)
265 Call ok(not x, "local x is not false?")
272 Call ok(x, "global x is not true?")
274 Public Sub TestPublicSub
278 Private Sub TestPrivateSub
290 Call ok(x, "x is false, testfunc not called?")
292 Function FuncSetTrue(v)
293 Call ok(not v, "v is not true")
299 Call ok(x, "x was not set by FuncSetTrue")
302 Call ok(not false, "false is no longer false?")
304 Function FuncSetTrue2(ByRef v)
305 Call ok(not v, "v is not true")
311 Call ok(x, "x was not set by FuncSetTrue")
313 Function TestFuncArgVal(ByVal v)
314 Call ok(not v, "v is not false")
316 Call ok(v, "v is not true?")
320 Call TestFuncArgVal(x)
321 Call ok(not x, "x is true after TestFuncArgVal call?")
323 Function TestFuncMultiArgs(a,b,c,d,e)
324 Call ok(a=1, "a = " & a)
325 Call ok(b=2, "b = " & b)
326 Call ok(c=3, "c = " & c)
327 Call ok(d=4, "d = " & d)
328 Call ok(e=5, "e = " & e)
331 TestFuncMultiArgs 1, 2, 3, 4, 5
332 Call TestFuncMultiArgs(1, 2, 3, 4, 5)
334 Function TestFuncLocalVal
336 Call ok(not x, "local x is not false?")
342 Call TestFuncLocalVal
343 Call ok(x, "global x is not true?")
345 Function TestFuncExit(ByRef a)
349 Call ok(false, "Exit Function not called?")
352 Call TestFuncExit(true)
359 Call ok(ReturnTrue(), "ReturnTrue returned false?")
361 Function SetVal(ByRef x, ByVal v)
368 ok SetVal(x, true), "SetVal returned false?"
369 Call ok(x, "x is not set to true by SetVal?")
371 Public Function TestPublicFunc
375 Private Function TestPrivateFunc
380 Call ok(getVT(x) = "VT_DISPATCH*", "getVT(x=testObj) = " & getVT(x))
383 Set obj = New EmptyClass
384 Call ok(getVT(obj) = "VT_DISPATCH*", "getVT(obj) = " & getVT(obj))
390 Public Function publicFunction()
397 Private Sub privateSub
401 Call testDisp(new testClass)
403 Set obj = New TestClass
405 Call ok(obj.publicFunction = 4, "obj.publicFunction = " & obj.publicFunction)
406 Call ok(obj.publicFunction() = 4, "obj.publicFunction() = " & obj.publicFunction())
410 Call obj.publicFunction()