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
63 Sub TestCStr(arg, exval)
66 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
67 Call ok(x = exval, "CStr(" & arg & ") = " & x)
70 TestCStr "test", "test"
72 if isEnglishLang then TestCStr 3.5, "3.5"
73 if isEnglishLang then TestCStr true, "True"
75 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
76 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
77 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
79 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
80 Set x = new EmptyClass
81 Call ok(isObject(x), "isObject(x) is not true?")
82 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
83 Call ok(not isObject(true), "isObject(true) is true?")
84 Call ok(not isObject(4), "isObject(4) is true?")
85 Call ok(not isObject("x"), "isObject(""x"") is true?")
86 Call ok(not isObject(Null), "isObject(Null) is true?")
88 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
89 Set x = new EmptyClass
90 Call ok(not isEmpty(x), "isEmpty(x) is true?")
92 Call ok(isEmpty(x), "isEmpty(x) is not true?")
93 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
94 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
95 Call ok(not isEmpty(true), "isEmpty(true) is true?")
96 Call ok(not isEmpty(4), "isEmpty(4) is true?")
97 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
98 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
100 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
101 Set x = new EmptyClass
102 Call ok(not isNull(x), "isNull(x) is true?")
104 Call ok(isNull(x), "isNull(x) is not true?")
105 Call ok(not isNull(empty), "isNull(empty) is true?")
106 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
107 Call ok(not isNull(true), "isNull(true) is true?")
108 Call ok(not isNull(4), "isNull(4) is true?")
109 Call ok(not isNull("x"), "isNull(""x"") is true?")
110 Call ok(isNull(Null), "isNull(Null) is not true?")
112 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
115 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
121 TestHex &hdeadbeef&, "DEADBEEF"
124 TestHex -934859845, "C8472BBB"
127 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
128 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
130 x = InStr(1, "abcd", "bc")
131 Call ok(x = 2, "InStr returned " & x)
133 x = InStr("abcd", "bc")
134 Call ok(x = 2, "InStr returned " & x)
136 x = InStr("abc", "bc")
137 Call ok(x = 2, "InStr returned " & x)
139 x = InStr("abcbc", "bc")
140 Call ok(x = 2, "InStr returned " & x)
142 x = InStr("bcabc", "bc")
143 Call ok(x = 1, "InStr returned " & x)
145 x = InStr(3, "abcd", "bc")
146 Call ok(x = 0, "InStr returned " & x)
148 x = InStr("abcd", "bcx")
149 Call ok(x = 0, "InStr returned " & x)
151 x = InStr(5, "abcd", "bc")
152 Call ok(x = 0, "InStr returned " & x)
156 Call ok(x = 2, "InStr returned " & x)
158 x = InStr("abcd", null)
159 Call ok(isNull(x), "InStr returned " & x)
160 x = InStr(null, "abcd")
161 Call ok(isNull(x), "InStr returned " & x)
162 x = InStr(2, null, "abcd")
163 Call ok(isNull(x), "InStr returned " & x)
165 x = InStr(1.3, "abcd", "bc")
166 Call ok(x = 2, "InStr returned " & x)
168 x = InStr(2.3, "abcd", "bc")
169 Call ok(x = 2, "InStr returned " & x)
171 x = InStr(2.6, "abcd", "bc")
172 Call ok(x = 0, "InStr returned " & x)
174 Sub TestMid(str, start, len, ex)
175 x = Mid(str, start, len)
176 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
179 Sub TestMid2(str, start, ex)
181 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
184 TestMid "test", 2, 2, "es"
185 TestMid "test", 2, 4, "est"
186 TestMid "test", 1, 2, "te"
187 TestMid "test", 1, 0, ""
188 TestMid "test", 1, 0, ""
189 TestMid "test", 5, 2, ""
190 TestMid2 "test", 1, "test"
191 TestMid2 "test", 2, "est"
192 TestMid2 "test", 4, "t"
193 TestMid2 "test", 5, ""
195 Sub TestUCase(str, ex)
197 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
200 TestUCase "test", "TEST"
201 TestUCase "123aBC?", "123ABC?"
204 if isEnglishLang then TestUCase true, "TRUE"
205 TestUCase 0.123, doubleAsString(0.123)
207 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
209 Sub TestLCase(str, ex)
211 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
214 TestLCase "test", "test"
215 TestLCase "123aBC?", "123abc?"
218 if isEnglishLang then TestLCase true, "true"
219 TestLCase 0.123, doubleAsString(0.123)
221 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
223 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
224 Call ok(Len("") = 0, "Len() = " & Len(""))
225 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
226 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
227 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
229 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
230 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
231 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
232 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
233 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
234 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
235 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
237 Sub TestStrReverse(str, ex)
238 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
241 TestStrReverse "test", "tset"
242 TestStrReverse "", ""
243 TestStrReverse 123, "321"
244 if isEnglishLang then TestStrReverse true, "eurT"
246 Sub TestLeft(str, len, ex)
247 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
250 TestLeft "test", 2, "te"
251 TestLeft "test", 5, "test"
252 TestLeft "test", 0, ""
253 TestLeft 123, 2, "12"
254 if isEnglishLang then TestLeft true, 2, "Tr"
256 Sub TestRight(str, len, ex)
257 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
260 TestRight "test", 2, "st"
261 TestRight "test", 5, "test"
262 TestRight "test", 0, ""
263 TestRight 123, 2, "23"
264 if isEnglishLang then TestRight true, 2, "ue"
266 Sub TestTrim(str, exstr)
267 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
270 TestTrim " test ", "test"
271 TestTrim "test ", "test"
272 TestTrim " test", "test"
273 TestTrim "test", "test"
276 if isEnglishLang then TestTrim true, "True"
278 Sub TestLTrim(str, exstr)
279 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
282 TestLTrim " test ", "test "
283 TestLTrim "test ", "test "
284 TestLTrim " test", "test"
285 TestLTrim "test", "test"
288 if isEnglishLang then TestLTrim true, "True"
290 Sub TestRound(val, exval, vt)
291 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
292 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
295 Sub TestRTrim(str, exstr)
296 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
299 TestRTrim " test ", " test"
300 TestRTrim "test ", "test"
301 TestRTrim " test", " test"
302 TestRTrim "test", "test"
305 if isEnglishLang then TestRTrim true, "True"
307 TestRound 3, 3, "VT_I2"
308 TestRound 3.3, 3, "VT_R8"
309 TestRound 3.8, 4, "VT_R8"
310 TestRound 3.5, 4, "VT_R8"
311 TestRound -3.3, -3, "VT_R8"
312 TestRound -3.5, -4, "VT_R8"
313 TestRound "2", 2, "VT_R8"
314 TestRound true, true, "VT_BOOL"
315 TestRound false, false, "VT_BOOL"
317 if isEnglishLang then
318 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
319 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
320 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
321 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
322 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
323 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
324 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
325 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
326 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
327 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
328 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
330 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
331 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
332 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
333 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
334 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
335 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
338 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
340 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
341 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
342 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
343 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
344 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
345 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
346 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
347 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
348 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
349 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
350 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
351 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
353 Call ok(vbOK = 1, "vbOK = " & vbOK)
354 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
355 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
356 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
357 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
358 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
359 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
360 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
361 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
362 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
363 Call ok(vbYes = 6, "vbYes = " & vbYes)
364 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
365 Call ok(vbNo = 7, "vbNo = " & vbNo)
366 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))