wbemprox: Return an empty object if the path is NULL or empty.
[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 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
79
80 Sub TestCStr(arg, exval)
81     dim x
82     x = CStr(arg)
83     Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
84     Call ok(x = exval, "CStr(" & arg & ") = " & x)
85 End Sub
86
87 TestCStr "test", "test"
88 TestCStr 3, "3"
89 if isEnglishLang then TestCStr 3.5, "3.5"
90 if isEnglishLang then TestCStr true, "True"
91
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))
95
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?")
104
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?")
108 x = empty
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?")
116
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?")
120 x = null
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?")
128
129 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
130
131 Sub TestHex(x, ex)
132     Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
133 End Sub
134
135 TestHex 0, "0"
136 TestHex 6, "6"
137 TestHex 16, "10"
138 TestHex &hdeadbeef&, "DEADBEEF"
139 TestHex -1, "FFFF"
140 TestHex -16, "FFF0"
141 TestHex -934859845, "C8472BBB"
142 TestHex empty, "0"
143
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)))
146
147 x = InStr(1, "abcd", "bc")
148 Call ok(x = 2, "InStr returned " & x)
149
150 x = InStr("abcd", "bc")
151 Call ok(x = 2, "InStr returned " & x)
152
153 x = InStr("abc", "bc")
154 Call ok(x = 2, "InStr returned " & x)
155
156 x = InStr("abcbc", "bc")
157 Call ok(x = 2, "InStr returned " & x)
158
159 x = InStr("bcabc", "bc")
160 Call ok(x = 1, "InStr returned " & x)
161
162 x = InStr(3, "abcd", "bc")
163 Call ok(x = 0, "InStr returned " & x)
164
165 x = InStr("abcd", "bcx")
166 Call ok(x = 0, "InStr returned " & x)
167
168 x = InStr(5, "abcd", "bc")
169 Call ok(x = 0, "InStr returned " & x)
170
171 x = "abcd"
172 x = InStr(x, "bc")
173 Call ok(x = 2, "InStr returned " & x)
174
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)
181
182 x = InStr(1.3, "abcd", "bc")
183 Call ok(x = 2, "InStr returned " & x)
184
185 x = InStr(2.3, "abcd", "bc")
186 Call ok(x = 2, "InStr returned " & x)
187
188 x = InStr(2.6, "abcd", "bc")
189 Call ok(x = 0, "InStr returned " & x)
190
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)
194 End Sub
195
196 Sub TestMid2(str, start, ex)
197     x = Mid(str, start)
198     Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
199 End Sub
200
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, ""
211
212 Sub TestUCase(str, ex)
213     x = UCase(str)
214     Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
215 End Sub
216
217 TestUCase "test", "TEST"
218 TestUCase "123aBC?", "123ABC?"
219 TestUCase "", ""
220 TestUCase 1, "1"
221 if isEnglishLang then TestUCase true, "TRUE"
222 TestUCase 0.123, doubleAsString(0.123)
223 TestUCase Empty, ""
224 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
225
226 Sub TestLCase(str, ex)
227     x = LCase(str)
228     Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
229 End Sub
230
231 TestLCase "test", "test"
232 TestLCase "123aBC?", "123abc?"
233 TestLCase "", ""
234 TestLCase 1, "1"
235 if isEnglishLang then TestLCase true, "true"
236 TestLCase 0.123, doubleAsString(0.123)
237 TestLCase Empty, ""
238 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
239
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))
245
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) & """")
253
254 Sub TestStrReverse(str, ex)
255     Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
256 End Sub
257
258 TestStrReverse "test", "tset"
259 TestStrReverse "", ""
260 TestStrReverse 123, "321"
261 if isEnglishLang then TestStrReverse true, "eurT"
262
263 Sub TestLeft(str, len, ex)
264     Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
265 End Sub
266
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"
272
273 Sub TestRight(str, len, ex)
274     Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
275 End Sub
276
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"
282
283 Sub TestTrim(str, exstr)
284     Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
285 End Sub
286
287 TestTrim "   test    ", "test"
288 TestTrim "test    ", "test"
289 TestTrim "   test", "test"
290 TestTrim "test", "test"
291 TestTrim "", ""
292 TestTrim 123, "123"
293 if isEnglishLang then TestTrim true, "True"
294
295 Sub TestLTrim(str, exstr)
296     Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
297 End Sub
298
299 TestLTrim "   test    ", "test    "
300 TestLTrim "test    ", "test    "
301 TestLTrim "   test", "test"
302 TestLTrim "test", "test"
303 TestLTrim "", ""
304 TestLTrim 123, "123"
305 if isEnglishLang then TestLTrim true, "True"
306
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)))
310 End Sub
311
312 Sub TestRTrim(str, exstr)
313     Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
314 End Sub
315
316 TestRTrim "   test    ", "   test"
317 TestRTrim "test    ", "test"
318 TestRTrim "   test", "   test"
319 TestRTrim "test", "test"
320 TestRTrim "", ""
321 TestRTrim 123, "123"
322 if isEnglishLang then TestRTrim true, "True"
323
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"
333
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))
346
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))
353 end if
354
355 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
356
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))
369
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))
384
385 Call reportSuccess()