jscript: Rename jsheap_t to heap_pool_t.
[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 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
88
89 Sub TestCStr(arg, exval)
90     dim x
91     x = CStr(arg)
92     Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
93     Call ok(x = exval, "CStr(" & arg & ") = " & x)
94 End Sub
95
96 TestCStr "test", "test"
97 TestCStr 3, "3"
98 if isEnglishLang then TestCStr 3.5, "3.5"
99 if isEnglishLang then TestCStr true, "True"
100
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))
104
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?")
113
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?")
117 x = empty
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?")
125
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?")
129 x = null
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?")
137
138 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
139
140 Sub TestHex(x, ex)
141     Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
142 End Sub
143
144 TestHex 0, "0"
145 TestHex 6, "6"
146 TestHex 16, "10"
147 TestHex &hdeadbeef&, "DEADBEEF"
148 TestHex -1, "FFFF"
149 TestHex -16, "FFF0"
150 TestHex -934859845, "C8472BBB"
151 TestHex empty, "0"
152
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)))
155
156 x = InStr(1, "abcd", "bc")
157 Call ok(x = 2, "InStr returned " & x)
158
159 x = InStr("abcd", "bc")
160 Call ok(x = 2, "InStr returned " & x)
161
162 x = InStr("abc", "bc")
163 Call ok(x = 2, "InStr returned " & x)
164
165 x = InStr("abcbc", "bc")
166 Call ok(x = 2, "InStr returned " & x)
167
168 x = InStr("bcabc", "bc")
169 Call ok(x = 1, "InStr returned " & x)
170
171 x = InStr(3, "abcd", "bc")
172 Call ok(x = 0, "InStr returned " & x)
173
174 x = InStr("abcd", "bcx")
175 Call ok(x = 0, "InStr returned " & x)
176
177 x = InStr(5, "abcd", "bc")
178 Call ok(x = 0, "InStr returned " & x)
179
180 x = "abcd"
181 x = InStr(x, "bc")
182 Call ok(x = 2, "InStr returned " & x)
183
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)
190
191 x = InStr(1.3, "abcd", "bc")
192 Call ok(x = 2, "InStr returned " & x)
193
194 x = InStr(2.3, "abcd", "bc")
195 Call ok(x = 2, "InStr returned " & x)
196
197 x = InStr(2.6, "abcd", "bc")
198 Call ok(x = 0, "InStr returned " & x)
199
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)
203 End Sub
204
205 Sub TestMid2(str, start, ex)
206     x = Mid(str, start)
207     Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
208 End Sub
209
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, ""
220
221 Sub TestUCase(str, ex)
222     x = UCase(str)
223     Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
224 End Sub
225
226 TestUCase "test", "TEST"
227 TestUCase "123aBC?", "123ABC?"
228 TestUCase "", ""
229 TestUCase 1, "1"
230 if isEnglishLang then TestUCase true, "TRUE"
231 TestUCase 0.123, doubleAsString(0.123)
232 TestUCase Empty, ""
233 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
234
235 Sub TestLCase(str, ex)
236     x = LCase(str)
237     Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
238 End Sub
239
240 TestLCase "test", "test"
241 TestLCase "123aBC?", "123abc?"
242 TestLCase "", ""
243 TestLCase 1, "1"
244 if isEnglishLang then TestLCase true, "true"
245 TestLCase 0.123, doubleAsString(0.123)
246 TestLCase Empty, ""
247 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
248
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))
254
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) & """")
262
263 Sub TestStrReverse(str, ex)
264     Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
265 End Sub
266
267 TestStrReverse "test", "tset"
268 TestStrReverse "", ""
269 TestStrReverse 123, "321"
270 if isEnglishLang then TestStrReverse true, "eurT"
271
272 Sub TestLeft(str, len, ex)
273     Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
274 End Sub
275
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"
281
282 Sub TestRight(str, len, ex)
283     Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
284 End Sub
285
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"
291
292 Sub TestTrim(str, exstr)
293     Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
294 End Sub
295
296 TestTrim "   test    ", "test"
297 TestTrim "test    ", "test"
298 TestTrim "   test", "test"
299 TestTrim "test", "test"
300 TestTrim "", ""
301 TestTrim 123, "123"
302 if isEnglishLang then TestTrim true, "True"
303
304 Sub TestLTrim(str, exstr)
305     Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
306 End Sub
307
308 TestLTrim "   test    ", "test    "
309 TestLTrim "test    ", "test    "
310 TestLTrim "   test", "test"
311 TestLTrim "test", "test"
312 TestLTrim "", ""
313 TestLTrim 123, "123"
314 if isEnglishLang then TestLTrim true, "True"
315
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)))
319 End Sub
320
321 Sub TestRTrim(str, exstr)
322     Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
323 End Sub
324
325 TestRTrim "   test    ", "   test"
326 TestRTrim "test    ", "test"
327 TestRTrim "   test", "   test"
328 TestRTrim "test", "test"
329 TestRTrim "", ""
330 TestRTrim 123, "123"
331 if isEnglishLang then TestRTrim true, "True"
332
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"
342
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))
355
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))
362 end if
363
364 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
365
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))
378
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))
393
394 Call reportSuccess()