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 TestConstant "vbEmpty", vbEmpty, 0
52 TestConstant "vbNull", vbNull, 1
53 TestConstant "vbLong", vbLong, 3
54 TestConstant "vbSingle", vbSingle, 4
55 TestConstant "vbDouble", vbDouble, 5
56 TestConstant "vbCurrency", vbCurrency, 6
57 TestConstant "vbDate", vbDate, 7
58 TestConstant "vbString", vbString, 8
59 TestConstant "vbObject", vbObject, 9
60 TestConstant "vbError", vbError, 10
61 TestConstant "vbBoolean", vbBoolean, 11
62 TestConstant "vbVariant", vbVariant, 12
63 TestConstant "vbDataObject", vbDataObject, 13
64 TestConstant "vbDecimal", vbDecimal, 14
65 TestConstant "vbByte", vbByte, 17
66 TestConstant "vbArray", vbArray, 8192
67 TestConstant "vbCritical", vbCritical, 16
68 TestConstant "vbQuestion", vbQuestion, 32
69 TestConstant "vbExclamation", vbExclamation, 48
70 TestConstant "vbInformation", vbInformation, 64
71 TestConstant "vbDefaultButton1", vbDefaultButton1, 0
72 TestConstant "vbDefaultButton2", vbDefaultButton2, 256
73 TestConstant "vbDefaultButton3", vbDefaultButton3, 512
74 TestConstant "vbDefaultButton4", vbDefaultButton4, 768
75 TestConstant "vbApplicationModal", vbApplicationModal, 0
76 TestConstant "vbSystemModal", vbSystemModal, 4096
77 TestConstant "vbUseSystem", vbUseSystem, 0
78 TestConstant "vbUseSystemDayOfWeek", vbUseSystemDayOfWeek, 0
79 TestConstant "vbFirstJan1", vbFirstJan1, 1
80 TestConstant "vbFirstFourDays", vbFirstFourDays, 2
81 TestConstant "vbFirstFullWeek", vbFirstFullWeek, 3
82 TestConstant "vbTrue", vbTrue, -1
83 TestConstant "vbFalse", vbFalse, 0
84 TestConstantI4 "vbMsgBoxHelpButton", vbMsgBoxHelpButton, 16384
85 TestConstantI4 "vbMsgBoxSetForeground", vbMsgBoxSetForeground, 65536
86 TestConstantI4 "vbMsgBoxRight", vbMsgBoxRight, 524288
87 TestConstantI4 "vbMsgBoxRtlReading", vbMsgBoxRtlReading, 1048576
89 Sub TestCStr(arg, exval)
92 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
93 Call ok(x = exval, "CStr(" & arg & ") = " & x)
96 TestCStr "test", "test"
98 if isEnglishLang then TestCStr 3.5, "3.5"
99 if isEnglishLang then TestCStr true, "True"
101 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
102 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
103 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
105 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
106 Set x = new EmptyClass
107 Call ok(isObject(x), "isObject(x) is not true?")
108 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
109 Call ok(not isObject(true), "isObject(true) is true?")
110 Call ok(not isObject(4), "isObject(4) is true?")
111 Call ok(not isObject("x"), "isObject(""x"") is true?")
112 Call ok(not isObject(Null), "isObject(Null) is true?")
114 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
115 Set x = new EmptyClass
116 Call ok(not isEmpty(x), "isEmpty(x) is true?")
118 Call ok(isEmpty(x), "isEmpty(x) is not true?")
119 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
120 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
121 Call ok(not isEmpty(true), "isEmpty(true) is true?")
122 Call ok(not isEmpty(4), "isEmpty(4) is true?")
123 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
124 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
126 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
127 Set x = new EmptyClass
128 Call ok(not isNull(x), "isNull(x) is true?")
130 Call ok(isNull(x), "isNull(x) is not true?")
131 Call ok(not isNull(empty), "isNull(empty) is true?")
132 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
133 Call ok(not isNull(true), "isNull(true) is true?")
134 Call ok(not isNull(4), "isNull(4) is true?")
135 Call ok(not isNull("x"), "isNull(""x"") is true?")
136 Call ok(isNull(Null), "isNull(Null) is not true?")
138 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
141 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
147 TestHex &hdeadbeef&, "DEADBEEF"
150 TestHex -934859845, "C8472BBB"
153 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
154 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
156 x = InStr(1, "abcd", "bc")
157 Call ok(x = 2, "InStr returned " & x)
159 x = InStr("abcd", "bc")
160 Call ok(x = 2, "InStr returned " & x)
162 x = InStr("abc", "bc")
163 Call ok(x = 2, "InStr returned " & x)
165 x = InStr("abcbc", "bc")
166 Call ok(x = 2, "InStr returned " & x)
168 x = InStr("bcabc", "bc")
169 Call ok(x = 1, "InStr returned " & x)
171 x = InStr(3, "abcd", "bc")
172 Call ok(x = 0, "InStr returned " & x)
174 x = InStr("abcd", "bcx")
175 Call ok(x = 0, "InStr returned " & x)
177 x = InStr(5, "abcd", "bc")
178 Call ok(x = 0, "InStr returned " & x)
182 Call ok(x = 2, "InStr returned " & x)
184 x = InStr("abcd", null)
185 Call ok(isNull(x), "InStr returned " & x)
186 x = InStr(null, "abcd")
187 Call ok(isNull(x), "InStr returned " & x)
188 x = InStr(2, null, "abcd")
189 Call ok(isNull(x), "InStr returned " & x)
191 x = InStr(1.3, "abcd", "bc")
192 Call ok(x = 2, "InStr returned " & x)
194 x = InStr(2.3, "abcd", "bc")
195 Call ok(x = 2, "InStr returned " & x)
197 x = InStr(2.6, "abcd", "bc")
198 Call ok(x = 0, "InStr returned " & x)
200 Sub TestMid(str, start, len, ex)
201 x = Mid(str, start, len)
202 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
205 Sub TestMid2(str, start, ex)
207 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
210 TestMid "test", 2, 2, "es"
211 TestMid "test", 2, 4, "est"
212 TestMid "test", 1, 2, "te"
213 TestMid "test", 1, 0, ""
214 TestMid "test", 1, 0, ""
215 TestMid "test", 5, 2, ""
216 TestMid2 "test", 1, "test"
217 TestMid2 "test", 2, "est"
218 TestMid2 "test", 4, "t"
219 TestMid2 "test", 5, ""
221 Sub TestUCase(str, ex)
223 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
226 TestUCase "test", "TEST"
227 TestUCase "123aBC?", "123ABC?"
230 if isEnglishLang then TestUCase true, "TRUE"
231 TestUCase 0.123, doubleAsString(0.123)
233 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
235 Sub TestLCase(str, ex)
237 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
240 TestLCase "test", "test"
241 TestLCase "123aBC?", "123abc?"
244 if isEnglishLang then TestLCase true, "true"
245 TestLCase 0.123, doubleAsString(0.123)
247 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
249 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
250 Call ok(Len("") = 0, "Len() = " & Len(""))
251 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
252 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
253 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
255 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
256 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
257 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
258 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
259 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
260 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
261 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
263 Sub TestStrReverse(str, ex)
264 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
267 TestStrReverse "test", "tset"
268 TestStrReverse "", ""
269 TestStrReverse 123, "321"
270 if isEnglishLang then TestStrReverse true, "eurT"
272 Sub TestLeft(str, len, ex)
273 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
276 TestLeft "test", 2, "te"
277 TestLeft "test", 5, "test"
278 TestLeft "test", 0, ""
279 TestLeft 123, 2, "12"
280 if isEnglishLang then TestLeft true, 2, "Tr"
282 Sub TestRight(str, len, ex)
283 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
286 TestRight "test", 2, "st"
287 TestRight "test", 5, "test"
288 TestRight "test", 0, ""
289 TestRight 123, 2, "23"
290 if isEnglishLang then TestRight true, 2, "ue"
292 Sub TestTrim(str, exstr)
293 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
296 TestTrim " test ", "test"
297 TestTrim "test ", "test"
298 TestTrim " test", "test"
299 TestTrim "test", "test"
302 if isEnglishLang then TestTrim true, "True"
304 Sub TestLTrim(str, exstr)
305 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
308 TestLTrim " test ", "test "
309 TestLTrim "test ", "test "
310 TestLTrim " test", "test"
311 TestLTrim "test", "test"
314 if isEnglishLang then TestLTrim true, "True"
316 Sub TestRound(val, exval, vt)
317 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
318 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
321 Sub TestRTrim(str, exstr)
322 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
325 TestRTrim " test ", " test"
326 TestRTrim "test ", "test"
327 TestRTrim " test", " test"
328 TestRTrim "test", "test"
331 if isEnglishLang then TestRTrim true, "True"
333 TestRound 3, 3, "VT_I2"
334 TestRound 3.3, 3, "VT_R8"
335 TestRound 3.8, 4, "VT_R8"
336 TestRound 3.5, 4, "VT_R8"
337 TestRound -3.3, -3, "VT_R8"
338 TestRound -3.5, -4, "VT_R8"
339 TestRound "2", 2, "VT_R8"
340 TestRound true, true, "VT_BOOL"
341 TestRound false, false, "VT_BOOL"
343 if isEnglishLang then
344 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
345 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
346 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
347 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
348 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
349 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
350 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
351 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
352 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
353 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
354 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
356 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
357 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
358 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
359 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
360 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
361 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
364 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
366 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
367 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
368 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
369 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
370 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
371 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
372 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
373 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
374 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
375 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
376 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
377 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
379 Call ok(vbOK = 1, "vbOK = " & vbOK)
380 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
381 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
382 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
383 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
384 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
385 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
386 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
387 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
388 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
389 Call ok(vbYes = 6, "vbYes = " & vbYes)
390 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
391 Call ok(vbNo = 7, "vbNo = " & vbNo)
392 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))