crypt32: Free the encoded msg (Coverity).
[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
73 Sub TestCStr(arg, exval)
74     dim x
75     x = CStr(arg)
76     Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
77     Call ok(x = exval, "CStr(" & arg & ") = " & x)
78 End Sub
79
80 TestCStr "test", "test"
81 TestCStr 3, "3"
82 if isEnglishLang then TestCStr 3.5, "3.5"
83 if isEnglishLang then TestCStr true, "True"
84
85 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
86 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
87 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
88
89 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
90 Set x = new EmptyClass
91 Call ok(isObject(x), "isObject(x) is not true?")
92 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
93 Call ok(not isObject(true), "isObject(true) is true?")
94 Call ok(not isObject(4), "isObject(4) is true?")
95 Call ok(not isObject("x"), "isObject(""x"") is true?")
96 Call ok(not isObject(Null), "isObject(Null) is true?")
97
98 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
99 Set x = new EmptyClass
100 Call ok(not isEmpty(x), "isEmpty(x) is true?")
101 x = empty
102 Call ok(isEmpty(x), "isEmpty(x) is not true?")
103 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
104 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
105 Call ok(not isEmpty(true), "isEmpty(true) is true?")
106 Call ok(not isEmpty(4), "isEmpty(4) is true?")
107 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
108 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
109
110 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
111 Set x = new EmptyClass
112 Call ok(not isNull(x), "isNull(x) is true?")
113 x = null
114 Call ok(isNull(x), "isNull(x) is not true?")
115 Call ok(not isNull(empty), "isNull(empty) is true?")
116 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
117 Call ok(not isNull(true), "isNull(true) is true?")
118 Call ok(not isNull(4), "isNull(4) is true?")
119 Call ok(not isNull("x"), "isNull(""x"") is true?")
120 Call ok(isNull(Null), "isNull(Null) is not true?")
121
122 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
123
124 Sub TestHex(x, ex)
125     Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
126 End Sub
127
128 TestHex 0, "0"
129 TestHex 6, "6"
130 TestHex 16, "10"
131 TestHex &hdeadbeef&, "DEADBEEF"
132 TestHex -1, "FFFF"
133 TestHex -16, "FFF0"
134 TestHex -934859845, "C8472BBB"
135 TestHex empty, "0"
136
137 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
138 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
139
140 x = InStr(1, "abcd", "bc")
141 Call ok(x = 2, "InStr returned " & x)
142
143 x = InStr("abcd", "bc")
144 Call ok(x = 2, "InStr returned " & x)
145
146 x = InStr("abc", "bc")
147 Call ok(x = 2, "InStr returned " & x)
148
149 x = InStr("abcbc", "bc")
150 Call ok(x = 2, "InStr returned " & x)
151
152 x = InStr("bcabc", "bc")
153 Call ok(x = 1, "InStr returned " & x)
154
155 x = InStr(3, "abcd", "bc")
156 Call ok(x = 0, "InStr returned " & x)
157
158 x = InStr("abcd", "bcx")
159 Call ok(x = 0, "InStr returned " & x)
160
161 x = InStr(5, "abcd", "bc")
162 Call ok(x = 0, "InStr returned " & x)
163
164 x = "abcd"
165 x = InStr(x, "bc")
166 Call ok(x = 2, "InStr returned " & x)
167
168 x = InStr("abcd", null)
169 Call ok(isNull(x), "InStr returned " & x)
170 x = InStr(null, "abcd")
171 Call ok(isNull(x), "InStr returned " & x)
172 x = InStr(2, null, "abcd")
173 Call ok(isNull(x), "InStr returned " & x)
174
175 x = InStr(1.3, "abcd", "bc")
176 Call ok(x = 2, "InStr returned " & x)
177
178 x = InStr(2.3, "abcd", "bc")
179 Call ok(x = 2, "InStr returned " & x)
180
181 x = InStr(2.6, "abcd", "bc")
182 Call ok(x = 0, "InStr returned " & x)
183
184 Sub TestMid(str, start, len, ex)
185     x = Mid(str, start, len)
186     Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
187 End Sub
188
189 Sub TestMid2(str, start, ex)
190     x = Mid(str, start)
191     Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
192 End Sub
193
194 TestMid "test", 2, 2, "es"
195 TestMid "test", 2, 4, "est"
196 TestMid "test", 1, 2, "te"
197 TestMid "test", 1, 0, ""
198 TestMid "test", 1, 0, ""
199 TestMid "test", 5, 2, ""
200 TestMid2 "test", 1, "test"
201 TestMid2 "test", 2, "est"
202 TestMid2 "test", 4, "t"
203 TestMid2 "test", 5, ""
204
205 Sub TestUCase(str, ex)
206     x = UCase(str)
207     Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
208 End Sub
209
210 TestUCase "test", "TEST"
211 TestUCase "123aBC?", "123ABC?"
212 TestUCase "", ""
213 TestUCase 1, "1"
214 if isEnglishLang then TestUCase true, "TRUE"
215 TestUCase 0.123, doubleAsString(0.123)
216 TestUCase Empty, ""
217 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
218
219 Sub TestLCase(str, ex)
220     x = LCase(str)
221     Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
222 End Sub
223
224 TestLCase "test", "test"
225 TestLCase "123aBC?", "123abc?"
226 TestLCase "", ""
227 TestLCase 1, "1"
228 if isEnglishLang then TestLCase true, "true"
229 TestLCase 0.123, doubleAsString(0.123)
230 TestLCase Empty, ""
231 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
232
233 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
234 Call ok(Len("") = 0, "Len() = " & Len(""))
235 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
236 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
237 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
238
239 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
240 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
241 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
242 Call ok(Space(5) = "     ", "Space(5) = " & Space(5) & """")
243 Call ok(Space(5.2) = "     ", "Space(5.2) = " & Space(5.2) & """")
244 Call ok(Space(5.8) = "      ", "Space(5.8) = " & Space(5.8) & """")
245 Call ok(Space(5.5) = "      ", "Space(5.5) = " & Space(5.5) & """")
246
247 Sub TestStrReverse(str, ex)
248     Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
249 End Sub
250
251 TestStrReverse "test", "tset"
252 TestStrReverse "", ""
253 TestStrReverse 123, "321"
254 if isEnglishLang then TestStrReverse true, "eurT"
255
256 Sub TestLeft(str, len, ex)
257     Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
258 End Sub
259
260 TestLeft "test", 2, "te"
261 TestLeft "test", 5, "test"
262 TestLeft "test", 0, ""
263 TestLeft 123, 2, "12"
264 if isEnglishLang then TestLeft true, 2, "Tr"
265
266 Sub TestRight(str, len, ex)
267     Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
268 End Sub
269
270 TestRight "test", 2, "st"
271 TestRight "test", 5, "test"
272 TestRight "test", 0, ""
273 TestRight 123, 2, "23"
274 if isEnglishLang then TestRight true, 2, "ue"
275
276 Sub TestTrim(str, exstr)
277     Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
278 End Sub
279
280 TestTrim "   test    ", "test"
281 TestTrim "test    ", "test"
282 TestTrim "   test", "test"
283 TestTrim "test", "test"
284 TestTrim "", ""
285 TestTrim 123, "123"
286 if isEnglishLang then TestTrim true, "True"
287
288 Sub TestLTrim(str, exstr)
289     Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
290 End Sub
291
292 TestLTrim "   test    ", "test    "
293 TestLTrim "test    ", "test    "
294 TestLTrim "   test", "test"
295 TestLTrim "test", "test"
296 TestLTrim "", ""
297 TestLTrim 123, "123"
298 if isEnglishLang then TestLTrim true, "True"
299
300 Sub TestRound(val, exval, vt)
301     Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
302     Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
303 End Sub
304
305 Sub TestRTrim(str, exstr)
306     Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
307 End Sub
308
309 TestRTrim "   test    ", "   test"
310 TestRTrim "test    ", "test"
311 TestRTrim "   test", "   test"
312 TestRTrim "test", "test"
313 TestRTrim "", ""
314 TestRTrim 123, "123"
315 if isEnglishLang then TestRTrim true, "True"
316
317 TestRound 3, 3, "VT_I2"
318 TestRound 3.3, 3, "VT_R8"
319 TestRound 3.8, 4, "VT_R8"
320 TestRound 3.5, 4, "VT_R8"
321 TestRound -3.3, -3, "VT_R8"
322 TestRound -3.5, -4, "VT_R8"
323 TestRound "2", 2, "VT_R8"
324 TestRound true, true, "VT_BOOL"
325 TestRound false, false, "VT_BOOL"
326
327 if isEnglishLang then
328     Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
329     Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
330     Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
331     Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
332     Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
333     Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
334     Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
335     Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
336     Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
337     Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
338     Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
339
340     Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
341     Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
342     Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
343     Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
344     Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
345     Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
346 end if
347
348 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
349
350 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
351 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
352 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
353 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
354 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
355 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
356 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
357 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
358 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
359 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
360 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
361 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
362
363 Call ok(vbOK = 1, "vbOK = " & vbOK)
364 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
365 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
366 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
367 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
368 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
369 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
370 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
371 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
372 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
373 Call ok(vbYes = 6, "vbYes = " & vbYes)
374 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
375 Call ok(vbNo = 7, "vbNo = " & vbNo)
376 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))
377
378 Call reportSuccess()