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 Sub TestConstantI4(name, val, exval)
47 Call ok(val = exval, name & " = " & val & " expected " & exval)
48 Call ok(getVT(val) = "VT_I4*", "getVT(" & name & ") = " & getVT(val))
51 Sub TestConstantBSTR(name, val, exval)
52 Call ok(val = exval, name & " = " & val & " expected " & exval)
53 Call ok(getVT(val) = "VT_BSTR*", "getVT(" & name & ") = " & getVT(val))
56 TestConstant "vbEmpty", vbEmpty, 0
57 TestConstant "vbNull", vbNull, 1
58 TestConstant "vbLong", vbLong, 3
59 TestConstant "vbSingle", vbSingle, 4
60 TestConstant "vbDouble", vbDouble, 5
61 TestConstant "vbCurrency", vbCurrency, 6
62 TestConstant "vbDate", vbDate, 7
63 TestConstant "vbString", vbString, 8
64 TestConstant "vbObject", vbObject, 9
65 TestConstant "vbError", vbError, 10
66 TestConstant "vbBoolean", vbBoolean, 11
67 TestConstant "vbVariant", vbVariant, 12
68 TestConstant "vbDataObject", vbDataObject, 13
69 TestConstant "vbDecimal", vbDecimal, 14
70 TestConstant "vbByte", vbByte, 17
71 TestConstant "vbArray", vbArray, 8192
72 TestConstant "vbCritical", vbCritical, 16
73 TestConstant "vbQuestion", vbQuestion, 32
74 TestConstant "vbExclamation", vbExclamation, 48
75 TestConstant "vbInformation", vbInformation, 64
76 TestConstant "vbDefaultButton1", vbDefaultButton1, 0
77 TestConstant "vbDefaultButton2", vbDefaultButton2, 256
78 TestConstant "vbDefaultButton3", vbDefaultButton3, 512
79 TestConstant "vbDefaultButton4", vbDefaultButton4, 768
80 TestConstant "vbApplicationModal", vbApplicationModal, 0
81 TestConstant "vbSystemModal", vbSystemModal, 4096
82 TestConstant "vbUseSystem", vbUseSystem, 0
83 TestConstant "vbUseSystemDayOfWeek", vbUseSystemDayOfWeek, 0
84 TestConstant "vbFirstJan1", vbFirstJan1, 1
85 TestConstant "vbFirstFourDays", vbFirstFourDays, 2
86 TestConstant "vbFirstFullWeek", vbFirstFullWeek, 3
87 TestConstant "vbTrue", vbTrue, -1
88 TestConstant "vbFalse", vbFalse, 0
89 TestConstantI4 "vbMsgBoxHelpButton", vbMsgBoxHelpButton, 16384
90 TestConstantI4 "vbMsgBoxSetForeground", vbMsgBoxSetForeground, 65536
91 TestConstantI4 "vbMsgBoxRight", vbMsgBoxRight, 524288
92 TestConstantI4 "vbMsgBoxRtlReading", vbMsgBoxRtlReading, 1048576
93 TestConstant "vbUseDefault", vbUseDefault, -2
94 TestConstant "vbBinaryCompare", vbBinaryCompare, 0
95 TestConstant "vbTextCompare", vbTextCompare, 1
96 TestConstant "vbDatabaseCompare", vbDatabaseCompare, 2
97 TestConstant "vbGeneralDate", vbGeneralDate, 0
98 TestConstant "vbLongDate", vbLongDate, 1
99 TestConstant "vbShortDate", vbShortDate, 2
100 TestConstant "vbLongTime", vbLongTime, 3
101 TestConstant "vbShortTime", vbShortTime, 4
102 TestConstantI4 "vbObjectError", vbObjectError, &h80040000&
103 TestConstantI4 "vbBlack", vbBlack, 0
104 TestConstantI4 "vbBlue", vbBlue, &hff0000&
105 TestConstantI4 "vbCyan", vbCyan, &hffff00&
106 TestConstantI4 "vbGreen", vbGreen, &h00ff00&
107 TestConstantI4 "vbMagenta", vbMagenta, &hff00ff&
108 TestConstantI4 "vbRed", vbRed, &h0000ff&
109 TestConstantI4 "vbWhite", vbWhite, &hffffff&
110 TestConstantI4 "vbYellow", vbYellow, &h00ffff&
111 TestConstantBSTR "vbCr", vbCr, Chr(13)
112 TestConstantBSTR "vbCrLf", vbCrLf, Chr(13)&Chr(10)
113 TestConstantBSTR "vbNewLine", vbNewLine, Chr(13)&Chr(10)
114 TestConstantBSTR "vbFormFeed", vbFormFeed, Chr(12)
115 TestConstantBSTR "vbLf", vbLf, Chr(10)
116 TestConstantBSTR "vbNullChar", vbNullChar, Chr(0)
117 TestConstantBSTR "vbNullString", vbNullString, ""
118 TestConstantBSTR "vbTab", vbTab, chr(9)
119 TestConstantBSTR "vbVerticalTab", vbVerticalTab, chr(11)
121 Sub TestCStr(arg, exval)
124 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
125 Call ok(x = exval, "CStr(" & arg & ") = " & x)
128 TestCStr "test", "test"
130 if isEnglishLang then TestCStr 3.5, "3.5"
131 if isEnglishLang then TestCStr true, "True"
133 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
134 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
135 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
136 Call ok(Chr(0) <> "", "Chr(0) = """"")
138 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
139 Set x = new EmptyClass
140 Call ok(isObject(x), "isObject(x) is not true?")
141 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
142 Call ok(not isObject(true), "isObject(true) is true?")
143 Call ok(not isObject(4), "isObject(4) is true?")
144 Call ok(not isObject("x"), "isObject(""x"") is true?")
145 Call ok(not isObject(Null), "isObject(Null) is true?")
147 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
148 Set x = new EmptyClass
149 Call ok(not isEmpty(x), "isEmpty(x) is true?")
151 Call ok(isEmpty(x), "isEmpty(x) is not true?")
152 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
153 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
154 Call ok(not isEmpty(true), "isEmpty(true) is true?")
155 Call ok(not isEmpty(4), "isEmpty(4) is true?")
156 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
157 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
159 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
160 Set x = new EmptyClass
161 Call ok(not isNull(x), "isNull(x) is true?")
163 Call ok(isNull(x), "isNull(x) is not true?")
164 Call ok(not isNull(empty), "isNull(empty) is true?")
165 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
166 Call ok(not isNull(true), "isNull(true) is true?")
167 Call ok(not isNull(4), "isNull(4) is true?")
168 Call ok(not isNull("x"), "isNull(""x"") is true?")
169 Call ok(isNull(Null), "isNull(Null) is not true?")
171 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
174 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
180 TestHex &hdeadbeef&, "DEADBEEF"
183 TestHex -934859845, "C8472BBB"
186 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
187 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
189 x = InStr(1, "abcd", "bc")
190 Call ok(x = 2, "InStr returned " & x)
192 x = InStr("abcd", "bc")
193 Call ok(x = 2, "InStr returned " & x)
195 x = InStr("abc", "bc")
196 Call ok(x = 2, "InStr returned " & x)
198 x = InStr("abcbc", "bc")
199 Call ok(x = 2, "InStr returned " & x)
201 x = InStr("bcabc", "bc")
202 Call ok(x = 1, "InStr returned " & x)
204 x = InStr(3, "abcd", "bc")
205 Call ok(x = 0, "InStr returned " & x)
207 x = InStr("abcd", "bcx")
208 Call ok(x = 0, "InStr returned " & x)
210 x = InStr(5, "abcd", "bc")
211 Call ok(x = 0, "InStr returned " & x)
215 Call ok(x = 2, "InStr returned " & x)
217 x = InStr("abcd", null)
218 Call ok(isNull(x), "InStr returned " & x)
219 x = InStr(null, "abcd")
220 Call ok(isNull(x), "InStr returned " & x)
221 x = InStr(2, null, "abcd")
222 Call ok(isNull(x), "InStr returned " & x)
224 x = InStr(1.3, "abcd", "bc")
225 Call ok(x = 2, "InStr returned " & x)
227 x = InStr(2.3, "abcd", "bc")
228 Call ok(x = 2, "InStr returned " & x)
230 x = InStr(2.6, "abcd", "bc")
231 Call ok(x = 0, "InStr returned " & x)
233 Sub TestMid(str, start, len, ex)
234 x = Mid(str, start, len)
235 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
238 Sub TestMid2(str, start, ex)
240 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
243 TestMid "test", 2, 2, "es"
244 TestMid "test", 2, 4, "est"
245 TestMid "test", 1, 2, "te"
246 TestMid "test", 1, 0, ""
247 TestMid "test", 1, 0, ""
248 TestMid "test", 5, 2, ""
249 TestMid2 "test", 1, "test"
250 TestMid2 "test", 2, "est"
251 TestMid2 "test", 4, "t"
252 TestMid2 "test", 5, ""
254 Sub TestUCase(str, ex)
256 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
259 TestUCase "test", "TEST"
260 TestUCase "123aBC?", "123ABC?"
263 if isEnglishLang then TestUCase true, "TRUE"
264 TestUCase 0.123, doubleAsString(0.123)
266 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
268 Sub TestLCase(str, ex)
270 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
273 TestLCase "test", "test"
274 TestLCase "123aBC?", "123abc?"
277 if isEnglishLang then TestLCase true, "true"
278 TestLCase 0.123, doubleAsString(0.123)
280 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
282 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
283 Call ok(Len("") = 0, "Len() = " & Len(""))
284 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
285 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
286 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
288 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
289 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
290 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
291 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
292 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
293 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
294 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
296 Sub TestStrReverse(str, ex)
297 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
300 TestStrReverse "test", "tset"
301 TestStrReverse "", ""
302 TestStrReverse 123, "321"
303 if isEnglishLang then TestStrReverse true, "eurT"
305 Sub TestLeft(str, len, ex)
306 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
309 TestLeft "test", 2, "te"
310 TestLeft "test", 5, "test"
311 TestLeft "test", 0, ""
312 TestLeft 123, 2, "12"
313 if isEnglishLang then TestLeft true, 2, "Tr"
315 Sub TestRight(str, len, ex)
316 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
319 TestRight "test", 2, "st"
320 TestRight "test", 5, "test"
321 TestRight "test", 0, ""
322 TestRight 123, 2, "23"
323 if isEnglishLang then TestRight true, 2, "ue"
325 Sub TestTrim(str, exstr)
326 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
329 TestTrim " test ", "test"
330 TestTrim "test ", "test"
331 TestTrim " test", "test"
332 TestTrim "test", "test"
335 if isEnglishLang then TestTrim true, "True"
337 Sub TestLTrim(str, exstr)
338 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
341 TestLTrim " test ", "test "
342 TestLTrim "test ", "test "
343 TestLTrim " test", "test"
344 TestLTrim "test", "test"
347 if isEnglishLang then TestLTrim true, "True"
349 Sub TestRound(val, exval, vt)
350 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
351 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
354 Sub TestRTrim(str, exstr)
355 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
358 TestRTrim " test ", " test"
359 TestRTrim "test ", "test"
360 TestRTrim " test", " test"
361 TestRTrim "test", "test"
364 if isEnglishLang then TestRTrim true, "True"
366 TestRound 3, 3, "VT_I2"
367 TestRound 3.3, 3, "VT_R8"
368 TestRound 3.8, 4, "VT_R8"
369 TestRound 3.5, 4, "VT_R8"
370 TestRound -3.3, -3, "VT_R8"
371 TestRound -3.5, -4, "VT_R8"
372 TestRound "2", 2, "VT_R8"
373 TestRound true, true, "VT_BOOL"
374 TestRound false, false, "VT_BOOL"
376 if isEnglishLang then
377 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
378 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
379 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
380 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
381 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
382 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
383 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
384 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
385 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
386 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
387 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
389 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
390 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
391 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
392 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
393 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
394 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
397 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
399 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
400 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
401 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
402 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
403 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
404 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
405 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
406 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
407 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
408 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
409 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
410 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
412 Call ok(vbOK = 1, "vbOK = " & vbOK)
413 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
414 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
415 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
416 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
417 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
418 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
419 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
420 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
421 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
422 Call ok(vbYes = 6, "vbYes = " & vbYes)
423 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
424 Call ok(vbNo = 7, "vbNo = " & vbNo)
425 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))