Release 1.5.29.
[wine] / dlls / vbscript / tests / api.vbs
1 '
2 ' Copyright 2011 Jacek Caban for CodeWeavers
3 '
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.
8 '
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.
13 '
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
17 '
18
19 Option Explicit
20
21 Dim x
22
23 Class EmptyClass
24 End Class
25
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))
40
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))
44 End Sub
45
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))
49 End Sub
50
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))
54 End Sub
55
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)
120
121 Sub TestCStr(arg, exval)
122     dim x
123     x = CStr(arg)
124     Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
125     Call ok(x = exval, "CStr(" & arg & ") = " & x)
126 End Sub
127
128 TestCStr "test", "test"
129 TestCStr 3, "3"
130 if isEnglishLang then TestCStr 3.5, "3.5"
131 if isEnglishLang then TestCStr true, "True"
132
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) = """"")
137
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?")
146
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?")
150 x = empty
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?")
158
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?")
162 x = null
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?")
170
171 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
172
173 Sub TestHex(x, ex)
174     Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
175 End Sub
176
177 TestHex 0, "0"
178 TestHex 6, "6"
179 TestHex 16, "10"
180 TestHex &hdeadbeef&, "DEADBEEF"
181 TestHex -1, "FFFF"
182 TestHex -16, "FFF0"
183 TestHex -934859845, "C8472BBB"
184 TestHex empty, "0"
185
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)))
188
189 x = InStr(1, "abcd", "bc")
190 Call ok(x = 2, "InStr returned " & x)
191
192 x = InStr("abcd", "bc")
193 Call ok(x = 2, "InStr returned " & x)
194
195 x = InStr("abc", "bc")
196 Call ok(x = 2, "InStr returned " & x)
197
198 x = InStr("abcbc", "bc")
199 Call ok(x = 2, "InStr returned " & x)
200
201 x = InStr("bcabc", "bc")
202 Call ok(x = 1, "InStr returned " & x)
203
204 x = InStr(3, "abcd", "bc")
205 Call ok(x = 0, "InStr returned " & x)
206
207 x = InStr("abcd", "bcx")
208 Call ok(x = 0, "InStr returned " & x)
209
210 x = InStr(5, "abcd", "bc")
211 Call ok(x = 0, "InStr returned " & x)
212
213 x = "abcd"
214 x = InStr(x, "bc")
215 Call ok(x = 2, "InStr returned " & x)
216
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)
223
224 x = InStr(1.3, "abcd", "bc")
225 Call ok(x = 2, "InStr returned " & x)
226
227 x = InStr(2.3, "abcd", "bc")
228 Call ok(x = 2, "InStr returned " & x)
229
230 x = InStr(2.6, "abcd", "bc")
231 Call ok(x = 0, "InStr returned " & x)
232
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)
236 End Sub
237
238 Sub TestMid2(str, start, ex)
239     x = Mid(str, start)
240     Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
241 End Sub
242
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, ""
253
254 Sub TestUCase(str, ex)
255     x = UCase(str)
256     Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
257 End Sub
258
259 TestUCase "test", "TEST"
260 TestUCase "123aBC?", "123ABC?"
261 TestUCase "", ""
262 TestUCase 1, "1"
263 if isEnglishLang then TestUCase true, "TRUE"
264 TestUCase 0.123, doubleAsString(0.123)
265 TestUCase Empty, ""
266 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
267
268 Sub TestLCase(str, ex)
269     x = LCase(str)
270     Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
271 End Sub
272
273 TestLCase "test", "test"
274 TestLCase "123aBC?", "123abc?"
275 TestLCase "", ""
276 TestLCase 1, "1"
277 if isEnglishLang then TestLCase true, "true"
278 TestLCase 0.123, doubleAsString(0.123)
279 TestLCase Empty, ""
280 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
281
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))
287
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) & """")
295
296 Sub TestStrReverse(str, ex)
297     Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
298 End Sub
299
300 TestStrReverse "test", "tset"
301 TestStrReverse "", ""
302 TestStrReverse 123, "321"
303 if isEnglishLang then TestStrReverse true, "eurT"
304
305 Sub TestLeft(str, len, ex)
306     Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
307 End Sub
308
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"
314
315 Sub TestRight(str, len, ex)
316     Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
317 End Sub
318
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"
324
325 Sub TestTrim(str, exstr)
326     Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
327 End Sub
328
329 TestTrim "   test    ", "test"
330 TestTrim "test    ", "test"
331 TestTrim "   test", "test"
332 TestTrim "test", "test"
333 TestTrim "", ""
334 TestTrim 123, "123"
335 if isEnglishLang then TestTrim true, "True"
336
337 Sub TestLTrim(str, exstr)
338     Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
339 End Sub
340
341 TestLTrim "   test    ", "test    "
342 TestLTrim "test    ", "test    "
343 TestLTrim "   test", "test"
344 TestLTrim "test", "test"
345 TestLTrim "", ""
346 TestLTrim 123, "123"
347 if isEnglishLang then TestLTrim true, "True"
348
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)))
352 End Sub
353
354 Sub TestRTrim(str, exstr)
355     Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
356 End Sub
357
358 TestRTrim "   test    ", "   test"
359 TestRTrim "test    ", "test"
360 TestRTrim "   test", "   test"
361 TestRTrim "test", "test"
362 TestRTrim "", ""
363 TestRTrim 123, "123"
364 if isEnglishLang then TestRTrim true, "True"
365
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"
375
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))
388
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))
395 end if
396
397 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
398
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))
411
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))
426
427 Call reportSuccess()