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
24 call ok(true, "true is not true?")
25 ok true, "true is not true?"
26 call ok((true), "true is not true?")
28 ok not false, "not false but not true?"
29 ok not not true, "not not true but not true?"
31 Call ok(true = true, "true = true is false")
32 Call ok(false = false, "false = false is false")
33 Call ok(not (true = false), "true = false is true")
34 Call ok("x" = "x", """x"" = ""x"" is false")
35 Call ok(empty = empty, "empty = empty is false")
36 Call ok(empty = "", "empty = """" is false")
37 Call ok(0 = 0.0, "0 <> 0.0")
38 Call ok(16 = &h10&, "16 <> &h10&")
39 Call ok(010 = 10, "010 <> 10")
40 Call ok(10. = 10, "10. <> 10")
41 Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
42 Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1")
43 Call ok(34e5 = 3400000, "34e5 <> 3400000")
44 Call ok(56.789e5 = 5678900, "56.789e5 = 5678900")
45 Call ok(56.789e-2 = 0.56789, "56.789e-2 <> 0.56789")
46 Call ok(1e-94938484 = 0, "1e-... <> 0")
47 Call ok(34e0 = 34, "34e0 <> 34")
48 Call ok(34E1 = 340, "34E0 <> 340")
49 Call ok(--1 = 1, "--1 = " & --1)
50 Call ok(-empty = 0, "-empty = " & (-empty))
51 Call ok(true = -1, "! true = -1")
52 Call ok(false = 0, "false <> 0")
53 Call ok(&hff = 255, "&hff <> 255")
54 Call ok(&Hff = 255, "&Hff <> 255")
57 Call ok(x = "xx", "x = " & x & " expected ""xx""")
59 Call ok(true <> false, "true <> false is false")
60 Call ok(not (true <> true), "true <> true is true")
61 Call ok(not ("x" <> "x"), """x"" <> ""x"" is true")
62 Call ok(not (empty <> empty), "empty <> empty is true")
63 Call ok(x <> "x", "x = ""x""")
64 Call ok("true" <> true, """true"" = true is true")
66 Call ok("" = true = false, """"" = true = false is false")
67 Call ok(not(false = true = ""), "false = true = """" is true")
68 Call ok(not (false = false <> false = false), "false = false <> false = false is true")
69 Call ok(not ("" <> false = false), """"" <> false = false is true")
71 Call ok(getVT(false) = "VT_BOOL", "getVT(false) is not VT_BOOL")
72 Call ok(getVT(true) = "VT_BOOL", "getVT(true) is not VT_BOOL")
73 Call ok(getVT("") = "VT_BSTR", "getVT("""") is not VT_BSTR")
74 Call ok(getVT("test") = "VT_BSTR", "getVT(""test"") is not VT_BSTR")
75 Call ok(getVT(Empty) = "VT_EMPTY", "getVT(Empty) is not VT_EMPTY")
76 Call ok(getVT(null) = "VT_NULL", "getVT(null) is not VT_NULL")
77 Call ok(getVT(0) = "VT_I2", "getVT(0) is not VT_I2")
78 Call ok(getVT(1) = "VT_I2", "getVT(1) is not VT_I2")
79 Call ok(getVT(0.5) = "VT_R8", "getVT(0.5) is not VT_R8")
80 Call ok(getVT(0.0) = "VT_R8", "getVT(0.0) is not VT_R8")
81 Call ok(getVT(2147483647) = "VT_I4", "getVT(2147483647) is not VT_I4")
82 Call ok(getVT(2147483648) = "VT_R8", "getVT(2147483648) is not VT_R8")
83 Call ok(getVT(&h10&) = "VT_I2", "getVT(&h10&) is not VT_I2")
84 Call ok(getVT(&h10000&) = "VT_I4", "getVT(&h10000&) is not VT_I4")
85 Call ok(getVT(&H10000&) = "VT_I4", "getVT(&H10000&) is not VT_I4")
86 Call ok(getVT(&hffFFffFF&) = "VT_I2", "getVT(&hffFFffFF&) is not VT_I2")
87 Call ok(getVT(1e2) = "VT_R8", "getVT(1e2) is not VT_R8")
88 Call ok(getVT(1e0) = "VT_R8", "getVT(1e0) is not VT_R8")
89 Call ok(getVT(0.1e2) = "VT_R8", "getVT(0.1e2) is not VT_R8")
90 Call ok(getVT(1 & 100000) = "VT_BSTR", "getVT(1 & 100000) is not VT_BSTR")
91 Call ok(getVT(-empty) = "VT_I2", "getVT(-empty) = " & getVT(-empty))
92 Call ok(getVT(-null) = "VT_NULL", "getVT(-null) = " & getVT(-null))
93 Call ok(getVT(y) = "VT_EMPTY*", "getVT(y) = " & getVT(y))
94 Call ok(getVT(nothing) = "VT_DISPATCH", "getVT(nothing) = " & getVT(nothing))
96 Call ok(getVT(x) = "VT_DISPATCH*", "getVT(x=nothing) = " & getVT(x))
98 Call ok(getVT(x) = "VT_BOOL*", "getVT(x) = " & getVT(x))
99 Call ok(getVT(false or true) = "VT_BOOL", "getVT(false) is not VT_BOOL")
101 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) is not VT_BSTR*")
103 Call ok(getVT(x) = "VT_R8*", "getVT(x) = " & getVT(x))
105 Call ok(isNullDisp(nothing), "nothing is not nulldisp?")
108 Call ok("ab" & "cd" = "abcd", """ab"" & ""cd"" <> ""abcd""")
109 Call ok("ab " & null = "ab ", """ab"" & null = " & ("ab " & null))
110 Call ok("ab " & empty = "ab ", """ab"" & empty = " & ("ab " & empty))
111 Call ok(1 & 100000 = "1100000", "1 & 100000 = " & (1 & 100000))
112 Call ok("ab" & x = "abxx", """ab"" & x = " & ("ab"&x))
114 if(isEnglishLang) then
115 Call ok("" & true = "True", """"" & true = " & true)
116 Call ok(true & false = "TrueFalse", "true & false = " & (true & false))
119 call ok(true and true, "true and true is not true")
120 call ok(true and not false, "true and not false is not true")
121 call ok(not (false and true), "not (false and true) is not true")
122 call ok(getVT(null and true) = "VT_NULL", "getVT(null and true) = " & getVT(null and true))
124 call ok(false or true, "false or uie is false?")
125 call ok(not (false or false), "false or false is not false?")
126 call ok(false and false or true, "false and false or true is false?")
127 call ok(true or false and false, "true or false and false is false?")
128 call ok(null or true, "null or true is false")
130 call ok(true xor false, "true xor false is false?")
131 call ok(not (false xor false), "false xor false is true?")
132 call ok(not (true or false xor true), "true or false xor true is true?")
133 call ok(not (true xor false or true), "true xor false or true is true?")
135 call ok(false eqv false, "false does not equal false?")
136 call ok(not (false eqv true), "false equals true?")
137 call ok(getVT(false eqv null) = "VT_NULL", "getVT(false eqv null) = " & getVT(false eqv null))
139 call ok(true imp true, "true does not imp true?")
140 call ok(false imp false, "false does not imp false?")
141 call ok(not (true imp false), "true imp false?")
142 call ok(false imp null, "false imp null is false?")
144 Call ok(2 >= 1, "! 2 >= 1")
145 Call ok(2 >= 2, "! 2 >= 2")
146 Call ok(not(true >= 2), "true >= 2 ?")
147 Call ok(2 > 1, "! 2 > 1")
148 Call ok(false > true, "! false < true")
149 Call ok(0 > true, "! 0 > true")
150 Call ok(not (true > 0), "true > 0")
151 Call ok(not (0 > 1 = 1), "0 > 1 = 1")
152 Call ok(1 < 2, "! 1 < 2")
153 Call ok(1 = 1 < 0, "! 1 = 1 < 0")
154 Call ok(1 <= 2, "! 1 <= 2")
155 Call ok(2 <= 2, "! 2 <= 2")
157 Call ok(isNull(0 = null), "'(0 = null)' is not null")
158 Call ok(isNull(null = 1), "'(null = 1)' is not null")
159 Call ok(isNull(0 > null), "'(0 > null)' is not null")
160 Call ok(isNull(null > 1), "'(null > 1)' is not null")
161 Call ok(isNull(0 < null), "'(0 < null)' is not null")
162 Call ok(isNull(null < 1), "'(null < 1)' is not null")
163 Call ok(isNull(0 <> null), "'(0 <> null)' is not null")
164 Call ok(isNull(null <> 1), "'(null <> 1)' is not null")
165 Call ok(isNull(0 >= null), "'(0 >= null)' is not null")
166 Call ok(isNull(null >= 1), "'(null >= 1)' is not null")
167 Call ok(isNull(0 <= null), "'(0 <= null)' is not null")
168 Call ok(isNull(null <= 1), "'(null <= 1)' is not null")
171 Call ok(2+2 = 4, "2+2 = " & (2+2))
172 Call ok(false + 6 + true = 5, "false + 6 + true <> 5")
173 Call ok(getVT(2+null) = "VT_NULL", "getVT(2+null) = " & getVT(2+null))
174 Call ok(2+empty = 2, "2+empty = " & (2+empty))
175 Call ok(x+x = 6, "x+x = " & (x+x))
177 Call ok(5-1 = 4, "5-1 = " & (5-1))
178 Call ok(3+5-true = 9, "3+5-true <> 9")
179 Call ok(getVT(2-null) = "VT_NULL", "getVT(2-null) = " & getVT(2-null))
180 Call ok(2-empty = 2, "2-empty = " & (2-empty))
181 Call ok(2-x = -1, "2-x = " & (2-x))
183 Call ok(9 Mod 6 = 3, "9 Mod 6 = " & (9 Mod 6))
184 Call ok(11.6 Mod 5.5 = False, "11.6 Mod 5.5 = " & (11.6 Mod 5.5 = 0.6))
185 Call ok(7 Mod 4+2 = 5, "7 Mod 4+2 <> 5")
186 Call ok(getVT(2 mod null) = "VT_NULL", "getVT(2 mod null) = " & getVT(2 mod null))
187 Call ok(getVT(null mod 2) = "VT_NULL", "getVT(null mod 2) = " & getVT(null mod 2))
188 'FIXME: Call ok(empty mod 2 = 0, "empty mod 2 = " & (empty mod 2))
190 Call ok(5 \ 2 = 2, "5 \ 2 = " & (5\2))
191 Call ok(4.6 \ 1.5 = 2, "4.6 \ 1.5 = " & (4.6\1.5))
192 Call ok(4.6 \ 1.49 = 5, "4.6 \ 1.49 = " & (4.6\1.49))
193 Call ok(2+3\4 = 2, "2+3\4 = " & (2+3\4))
195 Call ok(2*3 = 6, "2*3 = " & (2*3))
196 Call ok(3/2 = 1.5, "3/2 = " & (3/2))
197 Call ok(5\4/2 = 2, "5\4/2 = " & (5\2/1))
198 Call ok(12/3\2 = 2, "12/3\2 = " & (12/3\2))
199 Call ok(5/1000000 = 0.000005, "5/1000000 = " & (5/1000000))
201 Call ok(2^3 = 8, "2^3 = " & (2^3))
202 Call ok(2^3^2 = 64, "2^3^2 = " & (2^3^2))
203 Call ok(-3^2 = 9, "-3^2 = " & (-3^2))
204 Call ok(2*3^2 = 18, "2*3^2 = " & (2*3^2))
213 if true then y = true : x = y
216 x = true : if false then x = false
217 ok x, "x is false, if false called?"
219 if not false then x = true
220 ok x, "x is false, if not false not called?"
222 if not false then x = "test" : x = true
223 ok x, "x is false, if not false not called?"
225 if false then x = y : call ok(false, "if false .. : called")
227 if false then x = y : call ok(false, "if false .. : called") else x = "else"
228 Call ok(x = "else", "else not called?")
230 if true then x = y else y = x : Call ok(false, "in else?")
234 if false then x = y : if true then call ok(false, "embedded if called")
236 if false then x=1 else x=2 end if
239 if false then x = true : x = true
240 Call ok(x = false, "x <> false")
243 ok false, "if false called"
250 Call ok(not x, "x is false, if not evaluated?")
254 Call ok(false, "inside if false")
258 Call ok(x, "else not called?")
262 Call ok(false, "inside if false")
264 Call ok(false, "inside elseif not true")
268 Call ok(x, "else not called?")
272 Call ok(false, "inside if false")
275 ElseIf not False Then
278 Call ok(false, "inside else not true")
280 Call ok(x, "elseif not called?")
284 Call ok(false, "inside if false")
285 ElseIf not False Then
288 Call ok(x, "elseif not called?")
292 Call ok(x, "if 1 not run?")
295 if &h10000& then x = true
296 Call ok(x, "if &h10000& not run?")
306 call ok((x and y), "x or y is false after while")
329 do while not (x and y)
335 call ok((x and y), "x or y is false after while")
342 ok false, "exit do didn't work"
353 call ok((x and y), "x or y is false after do until")
360 ok false, "exit do didn't work"
368 call ok(x, "x is false after do..loop?")
378 call ok((x and y), "x or y is false after while")
385 ok false, "exit do didn't work"
395 loop while not (x and y)
396 call ok((x and y), "x or y is false after while")
403 ok false, "exit do didn't work"
410 Call ok(y = "for1: 5 6 7 8", "y = " & y)
413 for x = 5 to 8 step 2
416 Call ok(y = "for2: 5 7", "y = " & y)
423 Call ok(y = "for3: 5 6 7 8", "y = " & y)
429 Call ok(y = "for4:", "y = " & y)
432 for x = 5 to 3 step true
435 Call ok(y = "for5: 5 4 3", "y = " & y)
439 for x = 5 to z step 3-4
443 Call ok(y = "for6: 5 4", "y = " & y)
447 for x = 5 to 8 step z
451 Call ok(y = "for7: 5 6 7 8", "y = " & y)
458 Call ok(y = "for8: 5 7", "y = " & y)
461 Call ok(false, "for..to called when unexpected")
466 Call ok(false, "exit for not escaped the loop?")
475 if null then call ok(false, "if null evaluated")
478 call ok(false, "while null evaluated")
481 Call collectionObj.reset()
484 for each x in collectionObj
486 Call ok(x = y, "x <> y")
488 Call ok(y = 3, "y = " & y)
489 Call ok(getVT(x) = "VT_EMPTY*", "getVT(x) = " & getVT(x))
491 Call collectionObj.reset()
493 for each x in collectionObj
494 if x = 2 then exit for
497 Call ok(y = 1, "y = " & y)
498 Call ok(x = 2, "x = " & x)
500 Set obj = collectionObj
506 Call ok(x = y, "x <> y")
508 Call ok(y = 3, "y = " & y)
509 Call ok(getVT(x) = "VT_EMPTY*", "getVT(x) = " & getVT(x))
514 Call ok(false, "unexpected case")
516 Call ok(false, "unexpected case")
518 Call ok(false, "unexpected case")
521 Call ok(false, "unexpected case")
522 case 0, false, 2+1, 10
524 case ok(false, "unexpected case")
525 Call ok(false, "unexpected case")
527 Call ok(false, "unexpected case")
529 Call ok(x, "wrong case")
536 Call ok(x, "wrong case")
541 Call ok(false, "unexpected case")
545 Call ok(x, "wrong case")
553 Call ok(false, "unexpected case")
555 Call ok(x, "wrong case")
559 Call ok(false, "unexpected case")
561 Call ok(false, "unexpected case")
569 case 3,1,2,4: x = true
571 Call ok(false, "unexpected case")
573 Call ok(x, "wrong case")
576 select case 2: case 5,6,7: Call ok(false, "unexpected case")
579 case else: Call ok(false, "unexpected case else")
581 Call ok(x, "wrong case")
591 Call ok(x, "x is false, testsub not called?")
594 Call ok(not v, "v is not true")
600 Call ok(x, "x was not set by SubSetTrue")
603 Call ok(not false, "false is no longer false?")
605 Sub SubSetTrue2(ByRef v)
606 Call ok(not v, "v is not true")
612 Call ok(x, "x was not set by SubSetTrue")
614 Sub TestSubArgVal(ByVal v)
615 Call ok(not v, "v is not false")
617 Call ok(v, "v is not true?")
621 Call TestSubArgVal(x)
622 Call ok(not x, "x is true after TestSubArgVal call?")
624 Sub TestSubMultiArgs(a,b,c,d,e)
625 Call ok(a=1, "a = " & a)
626 Call ok(b=2, "b = " & b)
627 Call ok(c=3, "c = " & c)
628 Call ok(d=4, "d = " & d)
629 Call ok(e=5, "e = " & e)
632 Sub TestSubExit(ByRef a)
636 Call ok(false, "Exit Sub not called?")
639 Call TestSubExit(true)
648 TestSubMultiArgs 1, 2, 3, 4, 5
649 Call TestSubMultiArgs(1, 2, 3, 4, 5)
653 Call ok(not x, "local x is not false?")
661 Call ok(x, "global x is not true?")
663 Public Sub TestPublicSub
667 Private Sub TestPrivateSub
679 Call ok(x, "x is false, testfunc not called?")
681 Function FuncSetTrue(v)
682 Call ok(not v, "v is not true")
688 Call ok(x, "x was not set by FuncSetTrue")
691 Call ok(not false, "false is no longer false?")
693 Function FuncSetTrue2(ByRef v)
694 Call ok(not v, "v is not true")
700 Call ok(x, "x was not set by FuncSetTrue")
702 Function TestFuncArgVal(ByVal v)
703 Call ok(not v, "v is not false")
705 Call ok(v, "v is not true?")
709 Call TestFuncArgVal(x)
710 Call ok(not x, "x is true after TestFuncArgVal call?")
712 Function TestFuncMultiArgs(a,b,c,d,e)
713 Call ok(a=1, "a = " & a)
714 Call ok(b=2, "b = " & b)
715 Call ok(c=3, "c = " & c)
716 Call ok(d=4, "d = " & d)
717 Call ok(e=5, "e = " & e)
720 TestFuncMultiArgs 1, 2, 3, 4, 5
721 Call TestFuncMultiArgs(1, 2, 3, 4, 5)
723 Function TestFuncLocalVal
725 Call ok(not x, "local x is not false?")
731 Call TestFuncLocalVal
732 Call ok(x, "global x is not true?")
734 Function TestFuncExit(ByRef a)
738 Call ok(false, "Exit Function not called?")
741 Call TestFuncExit(true)
743 Function TestFuncExit2(ByRef a)
749 Call ok(false, "Exit Function not called?")
752 Call TestFuncExit2(true)
758 Function FuncParseTest
759 End Function : x = false
766 Call ok(ReturnTrue(), "ReturnTrue returned false?")
768 Function SetVal(ByRef x, ByVal v)
775 ok SetVal(x, true), "SetVal returned false?"
776 Call ok(x, "x is not set to true by SetVal?")
778 Public Function TestPublicFunc
782 Private Function TestPrivateFunc
786 ' Stop has an effect only in debugging mode
790 Call ok(getVT(x) = "VT_DISPATCH*", "getVT(x=testObj) = " & getVT(x))
792 Set obj = New EmptyClass
793 Call ok(getVT(obj) = "VT_DISPATCH*", "getVT(obj) = " & getVT(obj))
799 Call ok(getVT(x) = "VT_DISPATCH*", "getVT(x) = " & getVT(x))
806 Public Function publicFunction()
811 Public Property Get gsProp()
813 funcCalled = "gsProp get"
815 Call ok(false, "exit property not returned?")
818 Public Default Property Get DefValGet
819 DefValGet = privateProp
820 funcCalled = "GetDefVal"
823 Public Property Let DefValGet(x)
831 Public Property Let gsProp(val)
833 funcCalled = "gsProp let"
835 Call ok(false, "exit property not returned?")
838 Public Property Set gsProp(val)
839 funcCalled = "gsProp set"
841 Call ok(false, "exit property not returned?")
844 Public Sub setPrivateProp(x)
848 Function getPrivateProp
849 getPrivateProp = privateProp
852 Private Sub privateSub
855 Public Sub Class_Initialize
858 Call ok(getVT(privateProp) = "VT_BOOL*", "getVT(privateProp) = " & getVT(privateProp))
859 Call ok(getVT(publicProp2) = "VT_I2*", "getVT(publicProp2) = " & getVT(publicProp2))
860 Call ok(getVT(Me.publicProp2) = "VT_I2", "getVT(Me.publicProp2) = " & getVT(Me.publicProp2))
863 Property Get gsGetProp(x)
868 Call testDisp(new testClass)
870 Set obj = New TestClass
872 Call ok(obj.publicFunction = 4, "obj.publicFunction = " & obj.publicFunction)
873 Call ok(obj.publicFunction() = 4, "obj.publicFunction() = " & obj.publicFunction())
877 Call obj.publicFunction()
879 Call ok(getVT(obj.publicProp) = "VT_EMPTY", "getVT(obj.publicProp) = " & getVT(obj.publicProp))
881 Call ok(getVT(obj.publicProp) = "VT_I2", "getVT(obj.publicProp) = " & getVT(obj.publicProp))
882 Call ok(obj.publicProp = 3, "obj.publicProp = " & obj.publicProp)
885 Call ok(obj.getPrivateProp() = true, "obj.getPrivateProp() = " & obj.getPrivateProp())
886 Call obj.setPrivateProp(6)
887 Call ok(obj.getPrivateProp = 6, "obj.getPrivateProp = " & obj.getPrivateProp)
891 Call ok(obj.gsProp = 6, "obj.gsProp = " & obj.gsProp)
892 Call ok(funcCalled = "gsProp get", "funcCalled = " & funcCalled)
894 Call ok(funcCalled = "gsProp let", "funcCalled = " & funcCalled)
895 Call ok(obj.getPrivateProp = 3, "obj.getPrivateProp = " & obj.getPrivateProp)
896 Set obj.gsProp = New testclass
897 Call ok(funcCalled = "gsProp set", "funcCalled = " & funcCalled)
900 Call ok(x = 3, "(x = obj) = " & x)
901 Call ok(funcCalled = "GetDefVal", "funcCalled = " & funcCalled)
903 Call ok(obj = 3, "(x = obj) = " & obj)
904 Call ok(funcCalled = "GetDefVal", "funcCalled = " & funcCalled)
906 Call obj.Class_Initialize
907 Call ok(obj.getPrivateProp() = true, "obj.getPrivateProp() = " & obj.getPrivateProp())
909 x = (New testclass).publicProp
912 Public Sub Class_Terminate()
913 funcCalled = "terminate"
917 Set obj = New TermTest
920 Call ok(funcCalled = "terminate", "funcCalled = " & funcCalled)
922 Set obj = New TermTest
924 Call obj.Class_Terminate
925 Call ok(funcCalled = "terminate", "funcCalled = " & funcCalled)
928 Call ok(funcCalled = "terminate", "funcCalled = " & funcCalled)
930 Call (New testclass).publicSub()
931 Call (New testclass).publicSub
938 property get prop1(x)
942 property get prop2(x, y)
947 set obj = new PropTest
949 call ok(obj.prop0 = 1, "obj.prop0 = " & obj.prop0)
950 call ok(obj.prop1(3) = 4, "obj.prop1(3) = " & obj.prop1(3))
951 call ok(obj.prop2(3,4) = 7, "obj.prop2(3,4) = " & obj.prop2(3,4))
956 x = "following ':' is correct syntax" :
957 x = "following ':' is correct syntax" :: :
958 :: x = "also correct syntax"
959 rem another ugly way for comments
960 x = "rem as simplestatement" : rem rem comment
963 Set obj = new EmptyClass
965 Set y = new EmptyClass
967 Call ok(obj is x, "obj is not x")
968 Call ok(x is obj, "x is not obj")
969 Call ok(not (obj is y), "obj is not y")
970 Call ok(not obj is y, "obj is not y")
971 Call ok(not (x is Nothing), "x is 1")
972 Call ok(Nothing is Nothing, "Nothing is not Nothing")
973 Call ok(x is obj and true, "x is obj and true is false")
976 Public Sub Test(MyMe)
977 Call ok(Me is MyMe, "Me is not MyMe")
984 Call ok(getVT(test) = "VT_DISPATCH", "getVT(test) = " & getVT(test))
985 Call ok(Me is Test, "Me is not Test")
987 Const c1 = 1, c2 = 2, c3 = -3
988 Call ok(c1 = 1, "c1 = " & c1)
989 Call ok(getVT(c1) = "VT_I2", "getVT(c1) = " & getVT(c1))
990 Call ok(c3 = -3, "c3 = " & c3)
991 Call ok(getVT(c3) = "VT_I2", "getVT(c3) = " & getVT(c3))
993 Const cb = True, cs = "test", cnull = null
994 Call ok(cb, "cb = " & cb)
995 Call ok(getVT(cb) = "VT_BOOL", "getVT(cb) = " & getVT(cb))
996 Call ok(cs = "test", "cs = " & cs)
997 Call ok(getVT(cs) = "VT_BSTR", "getVT(cs) = " & getVT(cs))
998 Call ok(isNull(cnull), "cnull = " & cnull)
999 Call ok(getVT(cnull) = "VT_NULL", "getVT(cnull) = " & getVT(cnull))
1001 if false then Const conststr = "str"
1002 Call ok(conststr = "str", "conststr = " & conststr)
1003 Call ok(getVT(conststr) = "VT_BSTR", "getVT(conststr) = " & getVT(conststr))
1004 Call ok(conststr = "str", "conststr = " & conststr)
1008 Call ok(c1 = 1, "c1 = " & c1)
1009 Call ok(funcconst = 1, "funcconst = " & funcconst)
1015 ' Property may be used as an identifier (although it's a keyword)
1019 Call ok(property, "property = " & property)
1021 for property = 1 to 2
1028 Public Sub Property()
1031 Sub Test(byref property)
1042 Sub Test2(byval property)
1048 Call ok(getVT(arr) = "VT_EMPTY*", "getVT(arr) = " & getVT(arr))
1051 Dim arr2(4,3), arr3(5,4,3), arr0(0), noarr()
1053 Call ok(getVT(arr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(arr) = " & getVT(arr))
1054 Call ok(getVT(arr2) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(arr2) = " & getVT(arr2))
1055 Call ok(getVT(arr0) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(arr0) = " & getVT(arr0))
1056 Call ok(getVT(noarr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(noarr) = " & getVT(noarr))
1058 Call testArray(1, arr)
1059 Call testArray(2, arr2)
1060 Call testArray(3, arr3)
1061 Call testArray(0, arr0)
1062 Call testArray(-1, noarr)
1064 Call ok(getVT(arr(1)) = "VT_EMPTY*", "getVT(arr(1)) = " & getVT(arr(1)))
1065 Call ok(getVT(arr2(1,2)) = "VT_EMPTY*", "getVT(arr2(1,2)) = " & getVT(arr2(1,2)))
1066 Call ok(getVT(arr3(1,2,2)) = "VT_EMPTY*", "getVT(arr3(1,2,3)) = " & getVT(arr3(1,2,2)))
1067 Call ok(getVT(arr(0)) = "VT_EMPTY*", "getVT(arr(0)) = " & getVT(arr(0)))
1068 Call ok(getVT(arr(3)) = "VT_EMPTY*", "getVT(arr(3)) = " & getVT(arr(3)))
1069 Call ok(getVT(arr0(0)) = "VT_EMPTY*", "getVT(arr0(0)) = " & getVT(arr0(0)))
1072 Call ok(arr(2) = 3, "arr(2) = " & arr(2))
1073 Call ok(getVT(arr(2)) = "VT_I2*", "getVT(arr(2)) = " & getVT(arr(2)))
1077 Call ok(arr3(3,2,1) = 1, "arr3(3,2,1) = " & arr3(3,2,1))
1078 Call ok(arr3(1,2,3) = 2, "arr3(1,2,3) = " & arr3(1,2,3))
1081 Call ok(x(3,2,1) = 1, "x(3,2,1) = " & x(3,2,1))
1091 Call ok(getVT(x) = "VT_ARRAY|VT_VARIANT*", "getVT(x) = " & getVT(x))
1092 Call ok(x(2) = 2, "x(2) = " & x(2))
1093 Call ok(getVT(x(3)) = "VT_EMPTY*", "getVT(x(3)) = " & getVT(x(3)))
1096 Call ok(x(1) = 1, "x(1) = " & x(1))
1098 Call ok(getVT(x(1)) = "VT_EMPTY*", "getVT(x(1)) = " & getVT(x(1)))
1099 Call ok(x(2) = 2, "x(2) = " & x(2))
1104 Call ok(y(1) = 1, "y(1) = " & y(1))
1109 Call ok(getVT(forarr(1)) = "VT_EMPTY*", "getVT(forarr(1)) = " & getVT(forarr(1)))
1111 Call ok(forarr(1) = x, "forarr(1) = " & forarr(1))
1117 Call ok(forarr(x) = 2, "forarr(x) = " & forarr(x))
1124 Private Sub Class_Initialize
1125 Call ok(getVT(classarr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(classarr) = " & getVT(classarr))
1126 Call testArray(-1, classnoarr)
1133 Public Sub testVarVT
1134 Call ok(getVT(var) = "VT_ARRAY|VT_VARIANT*", "getVT(var) = " & getVT(var))
1138 Set obj = new ArrClass
1139 Call ok(getVT(obj.classarr) = "VT_ARRAY|VT_VARIANT", "getVT(obj.classarr) = " & getVT(obj.classarr))
1140 'todo_wine Call ok(obj.classarr(1) = 2, "obj.classarr(1) = " & obj.classarr(1))
1143 Call ok(getVT(obj.var) = "VT_ARRAY|VT_VARIANT", "getVT(obj.var) = " & getVT(obj.var))
1146 Sub arrarg(byref refarr, byval valarr, byref refarr2, byval valarr2)
1147 Call ok(getVT(refarr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(refarr) = " & getVT(refarr))
1148 Call ok(getVT(valarr) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr) = " & getVT(valarr))
1149 Call ok(getVT(refarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(refarr2) = " & getVT(refarr2))
1150 Call ok(getVT(valarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr2) = " & getVT(valarr2))
1153 Call arrarg(arr, arr, obj.classarr, obj.classarr)
1155 Sub arrarg2(byref refarr(), byval valarr(), byref refarr2(), byval valarr2())
1156 Call ok(getVT(refarr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(refarr) = " & getVT(refarr))
1157 Call ok(getVT(valarr) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr) = " & getVT(valarr))
1158 Call ok(getVT(refarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(refarr2) = " & getVT(refarr2))
1159 Call ok(getVT(valarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr2) = " & getVT(valarr2))
1162 Call arrarg2(arr, arr, obj.classarr, obj.classarr)
1164 Sub testarrarg(arg(), vt)
1165 Call ok(getVT(arg) = vt, "getVT() = " & getVT(arg) & " expected " & vt)
1168 Call testarrarg(1, "VT_I2*")
1169 Call testarrarg(false, "VT_BOOL*")
1170 Call testarrarg(Empty, "VT_EMPTY*")
1172 ' It's allowed to declare non-builtin RegExp class...
1174 public property get Global()
1175 Call ok(false, "Global called")
1180 ' ...but there is no way to use it because builtin instance is always created
1182 Call ok(x.Global = false, "x.Global = " & x.Global)