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
26 Call ok(vbSunday = 1, "vbSunday = " & vbSunday)
27 Call ok(getVT(vbSunday) = "VT_I2", "getVT(vbSunday) = " & getVT(vbSunday))
28 Call ok(vbMonday = 2, "vbMonday = " & vbMonday)
29 Call ok(getVT(vbMonday) = "VT_I2", "getVT(vbMonday) = " & getVT(vbMonday))
30 Call ok(vbTuesday = 3, "vbTuesday = " & vbTuesday)
31 Call ok(getVT(vbTuesday) = "VT_I2", "getVT(vbTuesday) = " & getVT(vbTuesday))
32 Call ok(vbWednesday = 4, "vbWednesday = " & vbWednesday)
33 Call ok(getVT(vbWednesday) = "VT_I2", "getVT(vbWednesday) = " & getVT(vbWednesday))
34 Call ok(vbThursday = 5, "vbThursday = " & vbThursday)
35 Call ok(getVT(vbThursday) = "VT_I2", "getVT(vbThursday) = " & getVT(vbThursday))
36 Call ok(vbFriday = 6, "vbFriday = " & vbFriday)
37 Call ok(getVT(vbFriday) = "VT_I2", "getVT(vbFriday) = " & getVT(vbFriday))
38 Call ok(vbSaturday = 7, "vbSaturday = " & vbSaturday)
39 Call ok(getVT(vbSaturday) = "VT_I2", "getVT(vbSaturday) = " & getVT(vbSaturday))
41 Sub TestConstant(name, val, exval)
42 Call ok(val = exval, name & " = " & val & " expected " & exval)
43 Call ok(getVT(val) = "VT_I2*", "getVT(" & name & ") = " & getVT(val))
46 TestConstant "vbEmpty", vbEmpty, 0
47 TestConstant "vbNull", vbNull, 1
48 TestConstant "vbLong", vbLong, 3
49 TestConstant "vbSingle", vbSingle, 4
50 TestConstant "vbDouble", vbDouble, 5
51 TestConstant "vbCurrency", vbCurrency, 6
52 TestConstant "vbDate", vbDate, 7
53 TestConstant "vbString", vbString, 8
54 TestConstant "vbObject", vbObject, 9
55 TestConstant "vbError", vbError, 10
56 TestConstant "vbBoolean", vbBoolean, 11
57 TestConstant "vbVariant", vbVariant, 12
58 TestConstant "vbDataObject", vbDataObject, 13
59 TestConstant "vbDecimal", vbDecimal, 14
60 TestConstant "vbByte", vbByte, 17
61 TestConstant "vbArray", vbArray, 8192
62 TestConstant "vbCritical", vbCritical, 16
63 TestConstant "vbQuestion", vbQuestion, 32
64 TestConstant "vbExclamation", vbExclamation, 48
65 TestConstant "vbInformation", vbInformation, 64
66 TestConstant "vbDefaultButton1", vbDefaultButton1, 0
67 TestConstant "vbDefaultButton2", vbDefaultButton2, 256
68 TestConstant "vbDefaultButton3", vbDefaultButton3, 512
69 TestConstant "vbDefaultButton4", vbDefaultButton4, 768
70 TestConstant "vbApplicationModal", vbApplicationModal, 0
71 TestConstant "vbSystemModal", vbSystemModal, 4096
73 Sub TestCStr(arg, exval)
76 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
77 Call ok(x = exval, "CStr(" & arg & ") = " & x)
80 TestCStr "test", "test"
82 if isEnglishLang then TestCStr 3.5, "3.5"
83 if isEnglishLang then TestCStr true, "True"
85 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
86 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
87 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
89 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
90 Set x = new EmptyClass
91 Call ok(isObject(x), "isObject(x) is not true?")
92 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
93 Call ok(not isObject(true), "isObject(true) is true?")
94 Call ok(not isObject(4), "isObject(4) is true?")
95 Call ok(not isObject("x"), "isObject(""x"") is true?")
96 Call ok(not isObject(Null), "isObject(Null) is true?")
98 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
99 Set x = new EmptyClass
100 Call ok(not isEmpty(x), "isEmpty(x) is true?")
102 Call ok(isEmpty(x), "isEmpty(x) is not true?")
103 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
104 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
105 Call ok(not isEmpty(true), "isEmpty(true) is true?")
106 Call ok(not isEmpty(4), "isEmpty(4) is true?")
107 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
108 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
110 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
111 Set x = new EmptyClass
112 Call ok(not isNull(x), "isNull(x) is true?")
114 Call ok(isNull(x), "isNull(x) is not true?")
115 Call ok(not isNull(empty), "isNull(empty) is true?")
116 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
117 Call ok(not isNull(true), "isNull(true) is true?")
118 Call ok(not isNull(4), "isNull(4) is true?")
119 Call ok(not isNull("x"), "isNull(""x"") is true?")
120 Call ok(isNull(Null), "isNull(Null) is not true?")
122 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
125 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
131 TestHex &hdeadbeef&, "DEADBEEF"
134 TestHex -934859845, "C8472BBB"
137 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
138 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
140 x = InStr(1, "abcd", "bc")
141 Call ok(x = 2, "InStr returned " & x)
143 x = InStr("abcd", "bc")
144 Call ok(x = 2, "InStr returned " & x)
146 x = InStr("abc", "bc")
147 Call ok(x = 2, "InStr returned " & x)
149 x = InStr("abcbc", "bc")
150 Call ok(x = 2, "InStr returned " & x)
152 x = InStr("bcabc", "bc")
153 Call ok(x = 1, "InStr returned " & x)
155 x = InStr(3, "abcd", "bc")
156 Call ok(x = 0, "InStr returned " & x)
158 x = InStr("abcd", "bcx")
159 Call ok(x = 0, "InStr returned " & x)
161 x = InStr(5, "abcd", "bc")
162 Call ok(x = 0, "InStr returned " & x)
166 Call ok(x = 2, "InStr returned " & x)
168 x = InStr("abcd", null)
169 Call ok(isNull(x), "InStr returned " & x)
170 x = InStr(null, "abcd")
171 Call ok(isNull(x), "InStr returned " & x)
172 x = InStr(2, null, "abcd")
173 Call ok(isNull(x), "InStr returned " & x)
175 x = InStr(1.3, "abcd", "bc")
176 Call ok(x = 2, "InStr returned " & x)
178 x = InStr(2.3, "abcd", "bc")
179 Call ok(x = 2, "InStr returned " & x)
181 x = InStr(2.6, "abcd", "bc")
182 Call ok(x = 0, "InStr returned " & x)
184 Sub TestMid(str, start, len, ex)
185 x = Mid(str, start, len)
186 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
189 Sub TestMid2(str, start, ex)
191 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
194 TestMid "test", 2, 2, "es"
195 TestMid "test", 2, 4, "est"
196 TestMid "test", 1, 2, "te"
197 TestMid "test", 1, 0, ""
198 TestMid "test", 1, 0, ""
199 TestMid "test", 5, 2, ""
200 TestMid2 "test", 1, "test"
201 TestMid2 "test", 2, "est"
202 TestMid2 "test", 4, "t"
203 TestMid2 "test", 5, ""
205 Sub TestUCase(str, ex)
207 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
210 TestUCase "test", "TEST"
211 TestUCase "123aBC?", "123ABC?"
214 if isEnglishLang then TestUCase true, "TRUE"
215 TestUCase 0.123, doubleAsString(0.123)
217 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
219 Sub TestLCase(str, ex)
221 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
224 TestLCase "test", "test"
225 TestLCase "123aBC?", "123abc?"
228 if isEnglishLang then TestLCase true, "true"
229 TestLCase 0.123, doubleAsString(0.123)
231 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
233 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
234 Call ok(Len("") = 0, "Len() = " & Len(""))
235 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
236 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
237 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
239 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
240 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
241 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
242 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
243 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
244 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
245 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
247 Sub TestStrReverse(str, ex)
248 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
251 TestStrReverse "test", "tset"
252 TestStrReverse "", ""
253 TestStrReverse 123, "321"
254 if isEnglishLang then TestStrReverse true, "eurT"
256 Sub TestLeft(str, len, ex)
257 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
260 TestLeft "test", 2, "te"
261 TestLeft "test", 5, "test"
262 TestLeft "test", 0, ""
263 TestLeft 123, 2, "12"
264 if isEnglishLang then TestLeft true, 2, "Tr"
266 Sub TestRight(str, len, ex)
267 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
270 TestRight "test", 2, "st"
271 TestRight "test", 5, "test"
272 TestRight "test", 0, ""
273 TestRight 123, 2, "23"
274 if isEnglishLang then TestRight true, 2, "ue"
276 Sub TestTrim(str, exstr)
277 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
280 TestTrim " test ", "test"
281 TestTrim "test ", "test"
282 TestTrim " test", "test"
283 TestTrim "test", "test"
286 if isEnglishLang then TestTrim true, "True"
288 Sub TestLTrim(str, exstr)
289 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
292 TestLTrim " test ", "test "
293 TestLTrim "test ", "test "
294 TestLTrim " test", "test"
295 TestLTrim "test", "test"
298 if isEnglishLang then TestLTrim true, "True"
300 Sub TestRound(val, exval, vt)
301 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
302 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
305 Sub TestRTrim(str, exstr)
306 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
309 TestRTrim " test ", " test"
310 TestRTrim "test ", "test"
311 TestRTrim " test", " test"
312 TestRTrim "test", "test"
315 if isEnglishLang then TestRTrim true, "True"
317 TestRound 3, 3, "VT_I2"
318 TestRound 3.3, 3, "VT_R8"
319 TestRound 3.8, 4, "VT_R8"
320 TestRound 3.5, 4, "VT_R8"
321 TestRound -3.3, -3, "VT_R8"
322 TestRound -3.5, -4, "VT_R8"
323 TestRound "2", 2, "VT_R8"
324 TestRound true, true, "VT_BOOL"
325 TestRound false, false, "VT_BOOL"
327 if isEnglishLang then
328 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
329 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
330 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
331 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
332 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
333 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
334 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
335 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
336 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
337 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
338 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
340 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
341 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
342 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
343 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
344 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
345 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
348 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
350 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
351 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
352 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
353 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
354 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
355 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
356 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
357 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
358 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
359 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
360 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
361 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
363 Call ok(vbOK = 1, "vbOK = " & vbOK)
364 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
365 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
366 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
367 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
368 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
369 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
370 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
371 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
372 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
373 Call ok(vbYes = 6, "vbYes = " & vbYes)
374 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
375 Call ok(vbNo = 7, "vbNo = " & vbNo)
376 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))