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
72 TestConstant "vbUseSystem", vbUseSystem, 0
73 TestConstant "vbUseSystemDayOfWeek", vbUseSystemDayOfWeek, 0
74 TestConstant "vbFirstJan1", vbFirstJan1, 1
75 TestConstant "vbFirstFourDays", vbFirstFourDays, 2
76 TestConstant "vbFirstFullWeek", vbFirstFullWeek, 3
77 TestConstant "vbTrue", vbTrue, -1
78 TestConstant "vbFalse", vbFalse, 0
80 Sub TestCStr(arg, exval)
83 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
84 Call ok(x = exval, "CStr(" & arg & ") = " & x)
87 TestCStr "test", "test"
89 if isEnglishLang then TestCStr 3.5, "3.5"
90 if isEnglishLang then TestCStr true, "True"
92 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
93 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
94 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
96 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
97 Set x = new EmptyClass
98 Call ok(isObject(x), "isObject(x) is not true?")
99 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
100 Call ok(not isObject(true), "isObject(true) is true?")
101 Call ok(not isObject(4), "isObject(4) is true?")
102 Call ok(not isObject("x"), "isObject(""x"") is true?")
103 Call ok(not isObject(Null), "isObject(Null) is true?")
105 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
106 Set x = new EmptyClass
107 Call ok(not isEmpty(x), "isEmpty(x) is true?")
109 Call ok(isEmpty(x), "isEmpty(x) is not true?")
110 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
111 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
112 Call ok(not isEmpty(true), "isEmpty(true) is true?")
113 Call ok(not isEmpty(4), "isEmpty(4) is true?")
114 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
115 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
117 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
118 Set x = new EmptyClass
119 Call ok(not isNull(x), "isNull(x) is true?")
121 Call ok(isNull(x), "isNull(x) is not true?")
122 Call ok(not isNull(empty), "isNull(empty) is true?")
123 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
124 Call ok(not isNull(true), "isNull(true) is true?")
125 Call ok(not isNull(4), "isNull(4) is true?")
126 Call ok(not isNull("x"), "isNull(""x"") is true?")
127 Call ok(isNull(Null), "isNull(Null) is not true?")
129 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
132 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
138 TestHex &hdeadbeef&, "DEADBEEF"
141 TestHex -934859845, "C8472BBB"
144 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
145 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
147 x = InStr(1, "abcd", "bc")
148 Call ok(x = 2, "InStr returned " & x)
150 x = InStr("abcd", "bc")
151 Call ok(x = 2, "InStr returned " & x)
153 x = InStr("abc", "bc")
154 Call ok(x = 2, "InStr returned " & x)
156 x = InStr("abcbc", "bc")
157 Call ok(x = 2, "InStr returned " & x)
159 x = InStr("bcabc", "bc")
160 Call ok(x = 1, "InStr returned " & x)
162 x = InStr(3, "abcd", "bc")
163 Call ok(x = 0, "InStr returned " & x)
165 x = InStr("abcd", "bcx")
166 Call ok(x = 0, "InStr returned " & x)
168 x = InStr(5, "abcd", "bc")
169 Call ok(x = 0, "InStr returned " & x)
173 Call ok(x = 2, "InStr returned " & x)
175 x = InStr("abcd", null)
176 Call ok(isNull(x), "InStr returned " & x)
177 x = InStr(null, "abcd")
178 Call ok(isNull(x), "InStr returned " & x)
179 x = InStr(2, null, "abcd")
180 Call ok(isNull(x), "InStr returned " & x)
182 x = InStr(1.3, "abcd", "bc")
183 Call ok(x = 2, "InStr returned " & x)
185 x = InStr(2.3, "abcd", "bc")
186 Call ok(x = 2, "InStr returned " & x)
188 x = InStr(2.6, "abcd", "bc")
189 Call ok(x = 0, "InStr returned " & x)
191 Sub TestMid(str, start, len, ex)
192 x = Mid(str, start, len)
193 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
196 Sub TestMid2(str, start, ex)
198 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
201 TestMid "test", 2, 2, "es"
202 TestMid "test", 2, 4, "est"
203 TestMid "test", 1, 2, "te"
204 TestMid "test", 1, 0, ""
205 TestMid "test", 1, 0, ""
206 TestMid "test", 5, 2, ""
207 TestMid2 "test", 1, "test"
208 TestMid2 "test", 2, "est"
209 TestMid2 "test", 4, "t"
210 TestMid2 "test", 5, ""
212 Sub TestUCase(str, ex)
214 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
217 TestUCase "test", "TEST"
218 TestUCase "123aBC?", "123ABC?"
221 if isEnglishLang then TestUCase true, "TRUE"
222 TestUCase 0.123, doubleAsString(0.123)
224 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
226 Sub TestLCase(str, ex)
228 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
231 TestLCase "test", "test"
232 TestLCase "123aBC?", "123abc?"
235 if isEnglishLang then TestLCase true, "true"
236 TestLCase 0.123, doubleAsString(0.123)
238 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
240 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
241 Call ok(Len("") = 0, "Len() = " & Len(""))
242 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
243 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
244 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
246 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
247 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
248 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
249 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
250 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
251 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
252 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
254 Sub TestStrReverse(str, ex)
255 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
258 TestStrReverse "test", "tset"
259 TestStrReverse "", ""
260 TestStrReverse 123, "321"
261 if isEnglishLang then TestStrReverse true, "eurT"
263 Sub TestLeft(str, len, ex)
264 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
267 TestLeft "test", 2, "te"
268 TestLeft "test", 5, "test"
269 TestLeft "test", 0, ""
270 TestLeft 123, 2, "12"
271 if isEnglishLang then TestLeft true, 2, "Tr"
273 Sub TestRight(str, len, ex)
274 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
277 TestRight "test", 2, "st"
278 TestRight "test", 5, "test"
279 TestRight "test", 0, ""
280 TestRight 123, 2, "23"
281 if isEnglishLang then TestRight true, 2, "ue"
283 Sub TestTrim(str, exstr)
284 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
287 TestTrim " test ", "test"
288 TestTrim "test ", "test"
289 TestTrim " test", "test"
290 TestTrim "test", "test"
293 if isEnglishLang then TestTrim true, "True"
295 Sub TestLTrim(str, exstr)
296 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
299 TestLTrim " test ", "test "
300 TestLTrim "test ", "test "
301 TestLTrim " test", "test"
302 TestLTrim "test", "test"
305 if isEnglishLang then TestLTrim true, "True"
307 Sub TestRound(val, exval, vt)
308 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
309 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
312 Sub TestRTrim(str, exstr)
313 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
316 TestRTrim " test ", " test"
317 TestRTrim "test ", "test"
318 TestRTrim " test", " test"
319 TestRTrim "test", "test"
322 if isEnglishLang then TestRTrim true, "True"
324 TestRound 3, 3, "VT_I2"
325 TestRound 3.3, 3, "VT_R8"
326 TestRound 3.8, 4, "VT_R8"
327 TestRound 3.5, 4, "VT_R8"
328 TestRound -3.3, -3, "VT_R8"
329 TestRound -3.5, -4, "VT_R8"
330 TestRound "2", 2, "VT_R8"
331 TestRound true, true, "VT_BOOL"
332 TestRound false, false, "VT_BOOL"
334 if isEnglishLang then
335 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
336 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
337 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
338 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
339 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
340 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
341 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
342 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
343 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
344 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
345 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
347 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
348 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
349 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
350 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
351 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
352 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
355 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
357 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
358 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
359 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
360 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
361 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
362 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
363 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
364 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
365 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
366 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
367 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
368 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
370 Call ok(vbOK = 1, "vbOK = " & vbOK)
371 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
372 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
373 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
374 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
375 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
376 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
377 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
378 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
379 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
380 Call ok(vbYes = 6, "vbYes = " & vbYes)
381 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
382 Call ok(vbNo = 7, "vbNo = " & vbNo)
383 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))