vbscript: Use VariantChangeType in to_int.
[wine.git] / dlls / vbscript / tests / api.vbs
blob38e5e76beed32bfede2c8ab234a701b1124418d7
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
19 Option Explicit
21 Dim x
23 Class EmptyClass
24 End Class
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))
44 End Sub
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
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
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)
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
128 TestCStr "test", "test"
129 TestCStr 3, "3"
130 if isEnglishLang then TestCStr 3.5, "3.5"
131 if isEnglishLang then TestCStr true, "True"
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 Call ok(Chr(120.5) = "x", "Chr(120.5) = " & Chr(120.5))
138 Call ok(Chr(119.5) = "x", "Chr(119.5) = " & Chr(119.5))
139 Call ok(Chr("120") = "x", "Chr(""120"") = " & Chr("120"))
141 sub testChrError
142 on error resume next
144 if isEnglishLang then
145 call Err.clear()
146 call Chr(-1)
147 call ok(Err.number = 5, "Err.number = " & Err.number)
149 call Err.clear()
150 call Chr(256)
151 call ok(Err.number = 5, "Err.number = " & Err.number)
152 end if
154 call Err.clear()
155 call Chr(65536)
156 call ok(Err.number = 5, "Err.number = " & Err.number)
158 call Err.clear()
159 call Chr(-32769)
160 call ok(Err.number = 5, "Err.number = " & Err.number)
161 end sub
163 call testChrError
165 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
166 Set x = new EmptyClass
167 Call ok(isObject(x), "isObject(x) is not true?")
168 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
169 Call ok(not isObject(true), "isObject(true) is true?")
170 Call ok(not isObject(4), "isObject(4) is true?")
171 Call ok(not isObject("x"), "isObject(""x"") is true?")
172 Call ok(not isObject(Null), "isObject(Null) is true?")
174 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
175 Set x = new EmptyClass
176 Call ok(not isEmpty(x), "isEmpty(x) is true?")
177 x = empty
178 Call ok(isEmpty(x), "isEmpty(x) is not true?")
179 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
180 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
181 Call ok(not isEmpty(true), "isEmpty(true) is true?")
182 Call ok(not isEmpty(4), "isEmpty(4) is true?")
183 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
184 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
186 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
187 Set x = new EmptyClass
188 Call ok(not isNull(x), "isNull(x) is true?")
189 x = null
190 Call ok(isNull(x), "isNull(x) is not true?")
191 Call ok(not isNull(empty), "isNull(empty) is true?")
192 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
193 Call ok(not isNull(true), "isNull(true) is true?")
194 Call ok(not isNull(4), "isNull(4) is true?")
195 Call ok(not isNull("x"), "isNull(""x"") is true?")
196 Call ok(isNull(Null), "isNull(Null) is not true?")
198 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
200 Sub TestHex(x, ex)
201 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
202 End Sub
204 TestHex 0, "0"
205 TestHex 6, "6"
206 TestHex 16, "10"
207 TestHex &hdeadbeef&, "DEADBEEF"
208 TestHex -1, "FFFF"
209 TestHex -16, "FFF0"
210 TestHex -934859845, "C8472BBB"
211 TestHex empty, "0"
213 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
214 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
216 x = InStr(1, "abcd", "bc")
217 Call ok(x = 2, "InStr returned " & x)
219 x = InStr("abcd", "bc")
220 Call ok(x = 2, "InStr returned " & x)
222 x = InStr("abc", "bc")
223 Call ok(x = 2, "InStr returned " & x)
225 x = InStr("abcbc", "bc")
226 Call ok(x = 2, "InStr returned " & x)
228 x = InStr("bcabc", "bc")
229 Call ok(x = 1, "InStr returned " & x)
231 x = InStr(3, "abcd", "bc")
232 Call ok(x = 0, "InStr returned " & x)
234 x = InStr("abcd", "bcx")
235 Call ok(x = 0, "InStr returned " & x)
237 x = InStr(5, "abcd", "bc")
238 Call ok(x = 0, "InStr returned " & x)
240 x = "abcd"
241 x = InStr(x, "bc")
242 Call ok(x = 2, "InStr returned " & x)
244 x = InStr("abcd", null)
245 Call ok(isNull(x), "InStr returned " & x)
246 x = InStr(null, "abcd")
247 Call ok(isNull(x), "InStr returned " & x)
248 x = InStr(2, null, "abcd")
249 Call ok(isNull(x), "InStr returned " & x)
251 x = InStr(1.3, "abcd", "bc")
252 Call ok(x = 2, "InStr returned " & x)
254 x = InStr(2.3, "abcd", "bc")
255 Call ok(x = 2, "InStr returned " & x)
257 x = InStr(2.6, "abcd", "bc")
258 Call ok(x = 0, "InStr returned " & x)
260 Sub TestMid(str, start, len, ex)
261 x = Mid(str, start, len)
262 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
263 End Sub
265 Sub TestMid2(str, start, ex)
266 x = Mid(str, start)
267 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
268 End Sub
270 TestMid "test", 2, 2, "es"
271 TestMid "test", 2, 4, "est"
272 TestMid "test", 1, 2, "te"
273 TestMid "test", 1, 0, ""
274 TestMid "test", 1, 0, ""
275 TestMid "test", 5, 2, ""
276 TestMid2 "test", 1, "test"
277 TestMid2 "test", 2, "est"
278 TestMid2 "test", 4, "t"
279 TestMid2 "test", 5, ""
281 Sub TestUCase(str, ex)
282 x = UCase(str)
283 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
284 End Sub
286 TestUCase "test", "TEST"
287 TestUCase "123aBC?", "123ABC?"
288 TestUCase "", ""
289 TestUCase 1, "1"
290 if isEnglishLang then TestUCase true, "TRUE"
291 TestUCase 0.123, doubleAsString(0.123)
292 TestUCase Empty, ""
293 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
295 Sub TestLCase(str, ex)
296 x = LCase(str)
297 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
298 End Sub
300 TestLCase "test", "test"
301 TestLCase "123aBC?", "123abc?"
302 TestLCase "", ""
303 TestLCase 1, "1"
304 if isEnglishLang then TestLCase true, "true"
305 TestLCase 0.123, doubleAsString(0.123)
306 TestLCase Empty, ""
307 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
309 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
310 Call ok(Len("") = 0, "Len() = " & Len(""))
311 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
312 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
313 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
315 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
316 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
317 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
318 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
319 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
320 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
321 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
322 Call ok(Space(4.5) = " ", "Space(4.5) = " & Space(4.5) & """")
323 Call ok(Space(0.5) = "", "Space(0.5) = " & Space(0.5) & """")
324 Call ok(Space(1.5) = " ", "Space(1.5) = " & Space(1.5) & """")
325 Call ok(Space("1") = " ", "Space(""1"") = " & Space("1") & """")
327 Sub TestStrReverse(str, ex)
328 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
329 End Sub
331 TestStrReverse "test", "tset"
332 TestStrReverse "", ""
333 TestStrReverse 123, "321"
334 if isEnglishLang then TestStrReverse true, "eurT"
336 Sub TestLeft(str, len, ex)
337 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
338 End Sub
340 TestLeft "test", 2, "te"
341 TestLeft "test", 5, "test"
342 TestLeft "test", 0, ""
343 TestLeft 123, 2, "12"
344 TestLeft "123456", 1.5, "12"
345 TestLeft "123456", 2.5, "12"
346 TestLeft "test", "2", "te"
347 if isEnglishLang then TestLeft true, 2, "Tr"
349 Sub TestRight(str, len, ex)
350 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
351 End Sub
353 TestRight "test", 2, "st"
354 TestRight "test", 5, "test"
355 TestRight "test", 0, ""
356 TestRight 123, 2, "23"
357 if isEnglishLang then TestRight true, 2, "ue"
359 Sub TestTrim(str, exstr)
360 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
361 End Sub
363 TestTrim " test ", "test"
364 TestTrim "test ", "test"
365 TestTrim " test", "test"
366 TestTrim "test", "test"
367 TestTrim "", ""
368 TestTrim 123, "123"
369 if isEnglishLang then TestTrim true, "True"
371 Sub TestLTrim(str, exstr)
372 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
373 End Sub
375 TestLTrim " test ", "test "
376 TestLTrim "test ", "test "
377 TestLTrim " test", "test"
378 TestLTrim "test", "test"
379 TestLTrim "", ""
380 TestLTrim 123, "123"
381 if isEnglishLang then TestLTrim true, "True"
383 Sub TestRound(val, exval, vt)
384 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
385 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
386 End Sub
388 Sub TestRTrim(str, exstr)
389 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
390 End Sub
392 TestRTrim " test ", " test"
393 TestRTrim "test ", "test"
394 TestRTrim " test", " test"
395 TestRTrim "test", "test"
396 TestRTrim "", ""
397 TestRTrim 123, "123"
398 if isEnglishLang then TestRTrim true, "True"
400 TestRound 3, 3, "VT_I2"
401 TestRound 3.3, 3, "VT_R8"
402 TestRound 3.8, 4, "VT_R8"
403 TestRound 3.5, 4, "VT_R8"
404 TestRound -3.3, -3, "VT_R8"
405 TestRound -3.5, -4, "VT_R8"
406 TestRound "2", 2, "VT_R8"
407 TestRound true, true, "VT_BOOL"
408 TestRound false, false, "VT_BOOL"
410 if isEnglishLang then
411 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
412 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
413 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
414 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
415 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
416 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
417 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
418 Call ok(WeekDayName(1, true, 0) = "Sun", "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
419 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
420 Call ok(WeekDayName(1, true, 2.5) = "Mon", "WeekDayName(1, true, 2.5) = " & WeekDayName(1, true, 2.5))
421 Call ok(WeekDayName(1, true, 1.5) = "Mon", "WeekDayName(1, true, 1.5) = " & WeekDayName(1, true, 1.5))
422 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
423 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
425 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
426 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
427 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
428 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
429 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
430 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
431 end if
433 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
435 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
436 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
437 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
438 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
439 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
440 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
441 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
442 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
443 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
444 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
445 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
446 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
448 Call ok(vbOK = 1, "vbOK = " & vbOK)
449 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
450 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
451 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
452 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
453 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
454 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
455 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
456 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
457 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
458 Call ok(vbYes = 6, "vbYes = " & vbYes)
459 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
460 Call ok(vbNo = 7, "vbNo = " & vbNo)
461 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))
463 Call ok(CInt(-36.75) = -37, "CInt(-36.75) = " & CInt(-36.75))
464 Call ok(getVT(CInt(-36.75)) = "VT_I2", "getVT(CInt(-36.75)) = " & getVT(CInt(-36.75)))
465 Call ok(CInt(-36.50) = -36, "CInt(-36.50) = " & CInt(-36.50))
466 Call ok(getVT(CInt(-36.50)) = "VT_I2", "getVT(CInt(-36.50)) = " & getVT(CInt(-36.50)))
467 Call ok(CInt(-36.25) = -36, "CInt(-36.25) = " & CInt(-36.25))
468 Call ok(getVT(CInt(-36.25)) = "VT_I2", "getVT(CInt(-36.25)) = " & getVT(CInt(-36.25)))
469 Call ok(CInt(-36) = -36, "CInt(-36) = " & CInt(-36))
470 Call ok(getVT(CInt(-36)) = "VT_I2", "getVT(CInt(-36)) = " & getVT(CInt(-36)))
471 Call ok(CInt(0) = 0, "CInt(0) = " & CInt(0))
472 Call ok(getVT(CInt(0)) = "VT_I2", "getVT(CInt(0)) = " & getVT(CInt(0)))
473 Call ok(CInt(0.0) = 0, "CInt(0.0) = " & CInt(0))
474 Call ok(getVT(CInt(0.0)) = "VT_I2", "getVT(CInt(0.0)) = " & getVT(CInt(0.0)))
475 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0))
476 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
477 Call ok(CInt(36) = 36, "CInt(36) = " & CInt(36))
478 Call ok(getVT(CInt(36)) = "VT_I2", "getVT(CInt(36)) = " & getVT(CInt(36)))
479 Call ok(CInt(36.25) = 36, "CInt(36.25) = " & CInt(36.25))
480 Call ok(getVT(CInt(36.25)) = "VT_I2", "getVT(CInt(36.25)) = " & getVT(CInt(36.25)))
481 Call ok(CInt(36.50) = 36, "CInt(36.50) = " & CInt(36.50))
482 Call ok(getVT(CInt(36.50)) = "VT_I2", "getVT(CInt(36.50)) = " & getVT(CInt(36.50)))
483 Call ok(CInt(36.75) = 37, "CInt(36.75) = " & CInt(36.75))
484 Call ok(getVT(CInt(36.75)) = "VT_I2", "getVT(CInt(36.75)) = " & getVT(CInt(36.75)))
487 Call ok(CBool(5) = true, "CBool(5) = " & CBool(5))
488 Call ok(getVT(CBool(5)) = "VT_BOOL", "getVT(CBool(5)) = " & getVT(CBool(5)))
489 Call ok(CBool(0) = false, "CBool(0) = " & CBool(0))
490 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
491 Call ok(CBool(-5) = true, "CBool(-5) = " & CBool(-5))
492 Call ok(getVT(CBool(-5)) = "VT_BOOL", "getVT(CBool(-5)) = " & getVT(CBool(-5)))
494 Sub testCBoolError(strings, error_num)
495 on error resume next
497 Call Err.clear()
498 Call CBool(strings)
499 Call ok(Err.number = error_num, "Err.number = " & Err.number)
500 End Sub
502 Class ValClass
503 Public myval
505 Public default Property Get defprop
506 defprop = myval
507 End Property
508 End Class
510 Dim MyObject
511 Set MyObject = New ValClass
513 Call ok(CBool(Empty) = False, "CBool(Empty) = " & CBool(Empty))
514 Call ok(getVT(CBool(Empty)) = "VT_BOOL", "getVT(CBool(Empty)) = " & getVT(CBool(Empty)))
515 Call ok(CBool(1) = True, "CBool(1) = " & CBool(1))
516 Call ok(getVT(CBool(1)) = "VT_BOOL", "getVT(CBool(1)) = " & getVT(CBool(1)))
517 Call ok(CBool(0) = False, "CBool(0) = " & CBool(0))
518 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
519 Call ok(CBool(-0.56) = True, "CBool(-0.56) = " & CBool(-0.56))
520 Call ok(getVT(CBool(-0.56)) = "VT_BOOL", "getVT(CBool(-0.56)) = " & getVT(CBool(-0.56)))
521 Call testCBoolError("", 13)
522 Call ok(CBool("0") = False, "CBool(""0"") = " & CBool("0"))
523 Call ok(getVT(CBool("0")) = "VT_BOOL", "getVT(CBool(""0"")) = " & getVT(CBool("0")))
524 If isEnglishLang Then
525 Call ok(CBool("0.1") = True, "CBool(""0.1"") = " & CBool("0.1"))
526 Call ok(getVT(CBool("0.1")) = "VT_BOOL", "getVT(CBool(""0.1"")) = " & getVT(CBool("0.1")))
527 End If
528 Call ok(CBool("true") = True, "CBool(""true"") = " & CBool("true"))
529 Call ok(getVT(CBool("true")) = "VT_BOOL", "getVT(CBool(""true"")) = " & getVT(CBool("true")))
530 Call ok(CBool("false") = False, "CBool(""false"") = " & CBool("false"))
531 Call ok(getVT(CBool("false")) = "VT_BOOL", "getVT(CBool(""false"")) = " & getVT(CBool("false")))
532 Call ok(CBool("TRUE") = True, "CBool(""TRUE"") = " & CBool("TRUE"))
533 Call ok(getVT(CBool("TRUE")) = "VT_BOOL", "getVT(CBool(""TRUE"")) = " & getVT(CBool("TRUE")))
534 Call ok(CBool("FALSE") = False, "CBool(""FALSE"") = " & CBool("FALSE"))
535 Call ok(getVT(CBool("FALSE")) = "VT_BOOL", "getVT(CBool(""FALSE"")) = " & getVT(CBool("FALSE")))
536 Call ok(CBool("#TRUE#") = True, "CBool(""#TRUE#"") = " & CBool("#TRUE#"))
537 Call ok(getVT(CBool("#TRUE#")) = "VT_BOOL", "getVT(CBool(""#TRUE#"")) = " & getVT(CBool("#TRUE#")))
538 Call ok(CBool("#FALSE#") = False, "CBool(""#FALSE#"") = " & CBool("#FALSE#"))
539 Call ok(getVT(CBool("#FALSE#")) = "VT_BOOL", "getVT(CBool(""#FALSE#"")) = " & getVT(CBool("#FALSE#")))
540 Call ok(CBool(MyObject) = False, "CBool(MyObject) = " & CBool(MyObject))
541 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
542 MyObject.myval = 1
543 Call ok(CBool(MyObject) = True, "CBool(MyObject) = " & CBool(MyObject))
544 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
545 MyObject.myval = 0
546 Call ok(CBool(MyObject) = False, "CBool(MyObject) = " & CBool(MyObject))
547 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
549 Sub testCByteError(strings, error_num1,error_num2)
550 on error resume next
551 Dim x
553 Call Err.clear()
554 x = CByte(strings)
555 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
557 Call Err.clear()
558 Call CByte(strings)
559 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
560 End Sub
562 Call ok(CByte(Empty) = 0, "CByte(Empty) = " & CByte(Empty))
563 Call ok(getVT(CByte(Empty)) = "VT_UI1", "getVT(CByte(Empty)) = " & getVT(CByte(Empty)))
564 Call ok(CByte(255) = 255, "CByte(255) = " & CByte(255))
565 Call ok(getVT(CByte(255)) = "VT_UI1", "getVT(CByte(255)) = " & getVT(CByte(255)))
566 Call ok(CByte(255.49) = 255, "CByte(255.49) = " & CByte(255.49))
567 Call ok(getVT(CByte(255.49)) = "VT_UI1", "getVT(CByte(255.49)) = " & getVT(CByte(255.49)))
568 Call testCByteError(1, 0, 458)
569 Call testCByteError("", 13, 13)
570 Call testCByteError("-1", 6, 6)
571 Call testCByteError("258", 6, 6)
572 Call testCByteError("TRUE", 13, 13)
573 Call testCByteError("FALSE", 13, 13)
574 Call testCByteError("#TRue#", 13, 13)
575 Call testCByteError("#fAlSE#", 13, 13)
576 If isEnglishLang Then
577 Call ok(CByte("-0.5") = 0, "CByte(""-0.5"") = " & CByte("-0.5"))
578 Call ok(getVT(CByte("-0.5")) = "VT_UI1", "getVT(CByte(""-0.5"")) = " & getVT(CByte("-0.5")))
579 End If
580 Call ok(CByte(True) = 255, "CByte(True) = " & CByte(True))
581 Call ok(getVT(CByte(True)) = "VT_UI1", "getVT(CByte(True)) = " & getVT(CByte(True)))
582 Call ok(CByte(False) = 0, "CByte(False) = " & CByte(False))
583 Call ok(getVT(CByte(False)) = "VT_UI1", "getVT(CByte(False)) = " & getVT(CByte(False)))
584 Call ok(CByte(MyObject) = 0, "CByte(MyObject) = " & CByte(MyObject))
585 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
586 MyObject.myval = 1
587 Call ok(CByte(MyObject) = 1, "CByte(MyObject) = " & CByte(MyObject))
588 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
589 MyObject.myval = 0
590 Call ok(CByte(MyObject) = 0, "CByte(MyObject) = " & CByte(MyObject))
591 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
593 Sub testCCurError(strings, error_num1, error_num2)
594 on error resume next
595 Dim x
597 Call Err.clear()
598 x = CCur(strings)
599 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
601 Call Err.clear()
602 Call CCur(strings)
603 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
604 End Sub
606 Call ok(CCur(Empty) = 0, "CCur(Empty) = " & CCur(Empty))
607 Call ok(getVT(CCur(Empty)) = "VT_CY", "getVT(CCur(Empty)) = " & getVT(CCur(Empty)))
608 Call ok(CCur(-32768) = -32768, "CCur(-32768) = " & CCur(-32768))
609 Call ok(getVT(CCur(-32768)) = "VT_CY", "getVT(CCur(-32768)) = " & getVT(CCur(-32768)))
610 Call ok(CCur(32768) = 32768, "CCur(32768) = " & CCur(32768))
611 Call ok(getVT(CCur(32768)) = "VT_CY", "getVT(CCur(32768)) = " & getVT(CCur(32768)))
612 Call ok(CCur(0.000149) = 0.0001, "CCur(0.000149) = " & CCur(0.000149))
613 Call ok(getVT(CCur(0.000149)) = "VT_CY", "getVT(CCur(0.000149)) = " & getVT(CCur(0.000149)))
614 Call ok(CCur(2147483647.99) = 2147483647.99, "CCur(2147483647.99) = " & CCur(2147483647.99))
615 Call ok(getVT(CCur(2147483647.99)) = "VT_CY", "getVT(CCur(2147483647.99)) = " & getVT(CCur(2147483647.99)))
616 Call ok(CCur("-1") = -1, "CCur(""-1"") = " & CCur("-1"))
617 Call ok(getVT(CCur("-1")) = "VT_CY", "getVT(CCur(""-1"")) = " & getVT(CCur("-1")))
618 If isEnglishLang Then
619 Call ok(CCur("-0.5") = -0.5, "CCur(""-0.5"") = " & CCur("-0.5"))
620 Call ok(getVT(CCur("-0.5")) = "VT_CY", "getVT(CCur(""-0.5"")) = " & getVT(CCur("-0.5")))
621 End If
622 Call testCCurError("", 13, 13)
623 Call testCCurError("-1", 0, 458)
624 Call testCCurError("TRUE", 13, 13)
625 Call testCCurError("FALSE", 13, 13)
626 Call testCCurError("#TRue#", 13, 13)
627 Call testCCurError("#fAlSE#", 13, 13)
628 Call testCCurError(1, 0, 458)
629 Call ok(CCur(True) = -1, "CCur(True) = " & CCur(True))
630 Call ok(getVT(CCur(True)) = "VT_CY", "getVT(CCur(True)) = " & getVT(CCur(True)))
631 Call ok(CCur(False) = 0, "CCur(False) = " & CCur(False))
632 Call ok(getVT(CCur(False)) = "VT_CY", "getVT(CCur(False)) = " & getVT(CCur(False)))
633 MyObject.myval = 0.1
634 Call ok(CCur(MyObject) = 0.1, "CCur(MyObject) = " & CCur(MyObject))
635 Call ok(getVT(CCur(MyObject)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject)))
636 MyObject.myval = 0
637 Call ok(CCur(MyObject) = 0, "CCur(MyObject) = " & CCur(MyObject))
638 Call ok(getVT(CCur(MyObject)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject)))
640 Sub testCDblError(strings, error_num1, error_num2)
641 on error resume next
642 Dim x
644 Call Err.clear()
645 x = CDbl(strings)
646 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
648 Call Err.clear()
649 Call CDbl(strings)
650 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
651 End Sub
653 Call ok(CDbl(Empty) = 0, "CDbl(Empty) = " & CDbl(Empty))
654 Call ok(getVT(CDbl(Empty)) = "VT_R8", "getVT(CDbl(Empty)) = " & getVT(CDbl(Empty)))
655 Call ok(CDbl(CByte(0)) = 0, "CDbl(CByte(0)) = " & CDbl(CByte(0)))
656 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
657 Call ok(CDbl(CCur(0)) = 0, "CDbl(CCur(0)) = " & CDbl(CCur(0)))
658 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
659 Call ok(CDbl(0) = 0, "CDbl(0) = " & CDbl(0))
660 Call ok(getVT(CDbl(0)) = "VT_R8", "getVT(CDbl(0)) = " & getVT(CDbl(0)))
661 Call ok(CDbl(32768) = 32768, "CDbl(32768) = " & CDbl(32768))
662 Call ok(getVT(CDbl(32768)) = "VT_R8", "getVT(CDbl(32768)) = " & getVT(CDbl(32768)))
663 Call ok(CDbl(0.001 * 0.001) = 0.000001, "CDbl(0.001 * 0.001) = " & CDbl(0.001 * 0.001))
664 Call ok(getVT(CDbl(0.001 * 0.001)) = "VT_R8", "getVT(CDbl(0.001 * 0.001)) = " & getVT(CDbl(0.001 * 0.001)))
665 Call ok(CDbl("-1") = -1, "CDbl(""-1"") = " & CDbl("-1"))
666 Call ok(getVT(CDbl("-1")) = "VT_R8", "getVT(CDbl(""-1"")) = " & getVT(CDbl("-1")))
667 If isEnglishLang Then
668 Call ok(CDbl("-0.5") = -0.5, "CDbl(""-0.5"") = " & CDbl("-0.5"))
669 Call ok(getVT(CDbl("-0.5")) = "VT_R8", "getVT(CDbl(""-0.5"")) = " & getVT(CDbl("-0.5")))
670 End If
671 Call testCDblError("", 13, 13)
672 Call testCDblError("TRUE", 13, 13)
673 Call testCDblError("FALSE", 13, 13)
674 Call testCDblError("#TRue#", 13, 13)
675 Call testCDblError("#fAlSE#", 13, 13)
676 Call testCDblError(1, 0, 458)
677 Call ok(CDbl(True) = -1, "CDbl(True) = " & CDbl(True))
678 Call ok(getVT(CDbl(True)) = "VT_R8", "getVT(CDbl(True)) = " & getVT(CDbl(True)))
679 Call ok(CDbl(False) = 0, "CDbl(False) = " & CDbl(False))
680 Call ok(getVT(CDbl(False)) = "VT_R8", "getVT(CDbl(False)) = " & getVT(CDbl(False)))
681 MyObject.myval = 0.1
682 Call ok(CDbl(MyObject) = 0.1, "CDbl(MyObject) = " & CDbl(MyObject))
683 Call ok(getVT(CDbl(MyObject)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject)))
684 MyObject.myval = 0
685 Call ok(CDbl(MyObject) = 0, "CDbl(MyObject) = " & CDbl(MyObject))
686 Call ok(getVT(CDbl(MyObject)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject)))
688 Sub testCLngError(strings, error_num1, error_num2)
689 on error resume next
690 Dim x
692 Call Err.clear()
693 x = CLng(strings)
694 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
696 Call Err.clear()
697 Call CLng(strings)
698 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
699 End Sub
701 Call ok(CLng(Empty) = 0, "CLng(Empty) = " & CLng(Empty))
702 Call ok(getVT(CLng(Empty)) = "VT_I4", "getVT(CLng(Empty)) = " & getVT(CLng(Empty)))
703 Call ok(CLng(CByte(0)) = 0, "CLng(CByte(0)) = " & CLng(CByte(0)))
704 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
705 Call ok(CLng(CCur(0)) = 0, "CLng(CCur(0)) = " & CLng(CCur(0)))
706 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
707 Call ok(CLng(0) = 0, "CLng(0) = " & CLng(0))
708 Call ok(getVT(CLng(0)) = "VT_I4", "getVT(CLng(0)) = " & getVT(CLng(0)))
709 Call ok(CLng(0.49) = 0, "CLng(0.49) = " & CLng(0.49))
710 Call ok(getVT(CLng(0.49)) = "VT_I4", "getVT(CLng(0.49)) = " & getVT(CLng(0.49)))
711 Call ok(CLng(0.5) = 0, "CLng(0.5) = " & CLng(0.5))
712 Call ok(getVT(CLng(0.5)) = "VT_I4", "getVT(CLng(0.5)) = " & getVT(CLng(0.5)))
713 Call ok(CLng(0.51) = 1, "CLng(0.51) = " & CLng(0.51))
714 Call ok(getVT(CLng(0.51)) = "VT_I4", "getVT(CLng(0.51)) = " & getVT(CLng(0.51)))
715 Call ok(CLng(1.49) = 1, "CLng(1.49) = " & CLng(1.49))
716 Call ok(getVT(CLng(1.49)) = "VT_I4", "getVT(CLng(1.49)) = " & getVT(CLng(1.49)))
717 Call ok(CLng(1.5) = 2, "CLng(1.5) = " & CLng(1.5))
718 Call ok(getVT(CLng(1.5)) = "VT_I4", "getVT(CLng(1.5)) = " & getVT(CLng(1.5)))
719 Call ok(CLng(1.51) = 2, "CLng(1.51) = " & CLng(1.51))
720 Call ok(getVT(CLng(1.51)) = "VT_I4", "getVT(CLng(1.51)) = " & getVT(CLng(1.51)))
721 Call ok(CLng("-1") = -1, "CLng(""-1"") = " & CLng("-1"))
722 Call ok(getVT(CLng("-1")) = "VT_I4", "getVT(CLng(""-1"")) = " & getVT(CLng("-1")))
723 If isEnglishLang Then
724 Call ok(CLng("-0.5") = 0, "CLng(""-0.5"") = " & CLng("-0.5"))
725 Call ok(getVT(CLng("-0.5")) = "VT_I4", "getVT(CLng(""-0.5"")) = " & getVT(CLng("-0.5")))
726 End If
727 Call testCLngError("", 13, 13)
728 Call testCLngError("TRUE", 13, 13)
729 Call testCLngError("FALSE", 13, 13)
730 Call testCLngError("#TRue#", 13, 13)
731 Call testCLngError("#fAlSE#", 13, 13)
732 Call testCLngError(1, 0, 458)
733 Call ok(CLng(True) = -1, "CLng(True) = " & CLng(True))
734 Call ok(getVT(CLng(True)) = "VT_I4", "getVT(CLng(True)) = " & getVT(CLng(True)))
735 Call ok(CLng(False) = 0, "CLng(False) = " & CLng(False))
736 Call ok(getVT(CLng(False)) = "VT_I4", "getVT(CLng(False)) = " & getVT(CLng(False)))
737 MyObject.myval = 1
738 Call ok(CLng(MyObject) = 1, "CLng(MyObject) = " & CLng(MyObject))
739 Call ok(getVT(CLng(MyObject)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject)))
740 MyObject.myval = 0
741 Call ok(CLng(MyObject) = 0, "CLng(MyObject) = " & CLng(MyObject))
742 Call ok(getVT(CLng(MyObject)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject)))
744 Sub testCIntError(strings, error_num1, error_num2)
745 on error resume next
746 Dim x
748 Call Err.clear()
749 x = CInt(strings)
750 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
752 Call Err.clear()
753 Call CInt(strings)
754 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
755 End Sub
757 Call ok(CInt(Empty) = 0, "CInt(Empty) = " & CInt(Empty))
758 Call ok(getVT(CInt(Empty)) = "VT_I2", "getVT(CInt(Empty)) = " & getVT(CInt(Empty)))
759 Call ok(CInt(CByte(0)) = 0, "CInt(CByte(0)) = " & CInt(CByte(0)))
760 Call ok(getVT(CInt(CByte(0))) = "VT_I2", "getVT(CInt(CByte(0))) = " & getVT(CInt(CByte(0))))
761 Call ok(CInt(CCur(0)) = 0, "CInt(CCur(0)) = " & CInt(CCur(0)))
762 Call ok(getVT(CInt(CCur(0))) = "VT_I2", "getVT(CInt(CCur(0))) = " & getVT(CInt(CCur(0))))
763 Call ok(CInt(0.49) = 0, "CInt(0.49) = " & CInt(0.49))
764 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
765 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0.5))
766 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
767 Call ok(CInt(0.51) = 1, "CInt(0.51) = " & CInt(0.51))
768 Call ok(getVT(CInt(0.51)) = "VT_I2", "getVT(CInt(0.51)) = " & getVT(CInt(0.51)))
769 Call ok(CInt(1.49) = 1, "CInt(0.49) = " & CInt(0.49))
770 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
771 Call ok(CInt(1.5) = 2, "CInt(1.5) = " & CInt(1.5))
772 Call ok(getVT(CInt(1.5)) = "VT_I2", "getVT(CInt(1.5)) = " & getVT(CInt(1.5)))
773 Call ok(CInt(1.51) = 2, "CInt(1.51) = " & CInt(1.51))
774 Call ok(getVT(CInt(1.51)) = "VT_I2", "getVT(CInt(1.51)) = " & getVT(CInt(1.51)))
775 Call ok(CInt("-1") = -1, "CInt(""-1"") = " & CInt("-1"))
776 Call ok(getVT(CInt("-1")) = "VT_I2", "getVT(CInt(""-1"")) = " & getVT(CInt("-1")))
777 If isEnglishLang Then
778 Call ok(CInt("-0.5") = 0, "CInt(""-0.5"") = " & CInt("-0.5"))
779 Call ok(getVT(CInt("-0.5")) = "VT_I2", "getVT(CInt(""-0.5"")) = " & getVT(CInt("-0.5")))
780 End If
781 Call testCIntError("", 13, 13)
782 Call testCIntError("-1", 0, 458)
783 Call testCIntError("TRUE", 13, 13)
784 Call testCIntError("FALSE", 13, 13)
785 Call testCIntError("#TRue#", 13, 13)
786 Call testCIntError("#fAlSE#", 13, 13)
787 Call testCIntError(1, 0, 458)
788 Call testCIntError(32767.49, 0, 458)
789 Call testCIntError(32767.5, 6, 6)
790 Call testCIntError(-32768.5, 0, 458)
791 Call testCIntError(-32768.51, 6, 6)
792 Call ok(CInt(True) = -1, "CInt(True) = " & CInt(True))
793 Call ok(getVT(CInt(True)) = "VT_I2", "getVT(CInt(True)) = " & getVT(CInt(True)))
794 Call ok(CInt(False) = 0, "CInt(False) = " & CInt(False))
795 Call ok(getVT(CInt(False)) = "VT_I2", "getVT(CInt(False)) = " & getVT(CInt(False)))
796 MyObject.myval = 2.5
797 Call ok(CInt(MyObject) = 2, "CInt(MyObject) = " & CInt(MyObject))
798 Call ok(getVT(CInt(MyObject)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject)))
799 MyObject.myval = 1.5
800 Call ok(CInt(MyObject) = 2, "CInt(MyObject) = " & CInt(MyObject))
801 Call ok(getVT(CInt(MyObject)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject)))
803 Sub testCSngError(strings, error_num1, error_num2)
804 on error resume next
805 Dim x
807 Call Err.clear()
808 x = CSng(strings)
809 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
811 Call Err.clear()
812 Call CSng(strings)
813 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
814 End Sub
816 Call ok(CSng(Empty) = 0, "CSng(Empty) = " & CSng(Empty))
817 Call ok(getVT(CSng(Empty)) = "VT_R4", "getVT(CSng(Empty)) = " & getVT(CSng(Empty)))
818 Call ok(CSng(CByte(0)) = 0, "CSng(CByte(0)) = " & CSng(CByte(0)))
819 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
820 Call ok(CSng(CCur(0)) = 0, "CSng(CCur(0)) = " & CSng(CCur(0)))
821 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
822 Call ok(CSng(0) = 0, "CSng(0) = " & CSng(0))
823 Call ok(getVT(CSng(0)) = "VT_R4", "getVT(CSng(0)) = " & getVT(CSng(0)))
824 Call ok(CSng(32768) = 32768, "CSng(32768) = " & CSng(32768))
825 Call ok(getVT(CSng(32768)) = "VT_R4", "getVT(CSng(32768)) = " & getVT(CSng(32768)))
826 Call ok(CSng(0.001 * 0.001) = 0.000001, "CSng(0.001 * 0.001) = " & CSng(0.001 * 0.001))
827 Call ok(getVT(CSng(0.001 * 0.001)) = "VT_R4", "getVT(CSng(0.001 * 0.001)) = " & getVT(CSng(0.001 * 0.001)))
828 Call ok(CSng("-1") = -1, "CSng(""-1"") = " & CSng("-1"))
829 Call ok(getVT(CSng("-1")) = "VT_R4", "getVT(CSng(""-1"")) = " & getVT(CSng("-1")))
830 If isEnglishLang Then
831 Call ok(CSng("-0.5") = -0.5, "CSng(""-0.5"") = " & CSng("-0.5"))
832 Call ok(getVT(CSng("-0.5")) = "VT_R4", "getVT(CSng(""-0.5"")) = " & getVT(CSng("-0.5")))
833 End If
834 Call testCSngError("", 13, 13)
835 Call testCSngError("TRUE", 13, 13)
836 Call testCSngError("FALSE", 13, 13)
837 Call testCSngError("#TRue#", 13, 13)
838 Call testCSngError("#fAlSE#", 13, 13)
839 Call testCSngError(1, 0, 458)
840 Call ok(CSng(True) = -1, "CSng(True) = " & CSng(True))
841 Call ok(getVT(CSng(True)) = "VT_R4", "getVT(CSng(True)) = " & getVT(CSng(True)))
842 Call ok(CSng(False) = 0, "CSng(False) = " & CSng(False))
843 Call ok(getVT(CSng(False)) = "VT_R4", "getVT(CSng(False)) = " & getVT(CSng(False)))
844 MyObject.myval = 0.1
845 Call ok(CSng(MyObject) = 0.1, "CSng(MyObject) = " & CSng(MyObject))
846 Call ok(getVT(CSng(MyObject)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject)))
847 MyObject.myval = 0
848 Call ok(CSng(MyObject) = 0, "CSng(MyObject) = " & CSng(MyObject))
849 Call ok(getVT(CSng(MyObject)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject)))
851 Call ok(TypeName(Empty) = "Empty", "TypeName(MyEmpty) = " & TypeName(Empty))
852 Call ok(getVT(TypeName(Empty)) = "VT_BSTR", "getVT(TypeName(Empty)) = " & getVT(TypeName(Empty)))
853 Call ok(TypeName(Null) = "Null", "TypeName(Null) = " & TypeName(Null))
854 Call ok(getVT(TypeName(Null)) = "VT_BSTR", "getVT(TypeName(Null)) = " & getVT(TypeName(Null)))
855 Call ok(TypeName(CByte(255)) = "Byte", "TypeName(CByte(255)) = " & TypeName(CByte(255)))
856 Call ok(getVT(TypeName(CByte(255))) = "VT_BSTR", "getVT(TypeName(CByte(255))) = " & getVT(TypeName(CByte(255))))
857 Call ok(TypeName(255) = "Integer", "TypeName(255) = " & TypeName(255))
858 Call ok(getVT(TypeName(255)) = "VT_BSTR", "getVT(TypeName(255)) = " & getVT(TypeName(255)))
859 Call ok(TypeName(32768) = "Long", "TypeName(32768) = " & TypeName(32768))
860 Call ok(getVT(TypeName(32768)) = "VT_BSTR", "getVT(TypeName(32768)) = " & getVT(TypeName(32768)))
861 Call ok(TypeName(CSng(0.5)) = "Single", "TypeName(CSng(0.5)) = " & TypeName(CSng(0.5)))
862 Call ok(getVT(TypeName(CSng(0.5))) = "VT_BSTR", "getVT(TypeName(CSng(0.5))) = " & getVT(TypeName(CSng(0.5))))
863 Call ok(TypeName(-0.5) = "Double", "TypeName(-0.5) = " & TypeName(-0.5))
864 Call ok(getVT(TypeName(-0.5)) = "VT_BSTR", "getVT(TypeName(-0.5)) = " & getVT(TypeName(-0.5)))
865 Call ok(TypeName(CCur(0.5)) = "Currency", "TypeName(CCur(0.5)) = " & TypeName(CCur(0.5)))
866 Call ok(getVT(TypeName(CCur(0.5))) = "VT_BSTR", "getVT(TypeName(CCur(0.5))) = " & getVT(TypeName(CCur(0.5))))
867 Call ok(TypeName(CStr(0.5)) = "String", "TypeName(CStr(0.5)) = " & TypeName(CStr(0.5)))
868 Call ok(getVT(TypeName(CStr(0.5))) = "VT_BSTR", "getVT(TypeName(CStr(0.5))) = " & getVT(TypeName(CStr(0.5))))
869 Call ok(TypeName(True) = "Boolean", "TypeName(True) = " & TypeName(True))
870 Call ok(getVT(TypeName(True)) = "VT_BSTR", "getVT(TypeName(True)) = " & getVT(TypeName(True)))
872 Call ok(VarType(Empty) = vbEmpty, "VarType(Empty) = " & VarType(Empty))
873 Call ok(getVT(VarType(Empty)) = "VT_I2", "getVT(VarType(Empty)) = " & getVT(VarType(Empty)))
874 Call ok(VarType(Null) = vbNull, "VarType(Null) = " & VarType(Null))
875 Call ok(getVT(VarType(Null)) = "VT_I2", "getVT(VarType(Null)) = " & getVT(VarType(Null)))
876 Call ok(VarType(255) = vbInteger, "VarType(255) = " & VarType(255))
877 Call ok(getVT(VarType(255)) = "VT_I2", "getVT(VarType(255)) = " & getVT(VarType(255)))
878 Call ok(VarType(32768) = vbLong, "VarType(32768) = " & VarType(32768))
879 Call ok(getVT(VarType(32768)) = "VT_I2", "getVT(VarType(32768)) = " & getVT(VarType(32768)))
880 Call ok(VarType(CSng(0.5)) = vbSingle, "VarType(CSng(0.5)) = " & VarType(CSng(0.5)))
881 Call ok(getVT(VarType(CSng(0.5))) = "VT_I2", "getVT(VarType(CSng(0.5))) = " & getVT(VarType(CSng(0.5))))
882 Call ok(VarType(-0.5) = vbDouble, "VarType(-0.5) = " & VarType(-0.5))
883 Call ok(getVT(VarType(-0.5)) = "VT_I2", "getVT(VarType(-0.5)) = " & getVT(VarType(-0.5)))
884 Call ok(VarType(CCur(0.5)) = vbCurrency, "VarType(CCur(0.5)) = " & VarType(CCur(0.5)))
885 Call ok(getVT(VarType(CCur(0.5))) = "VT_I2", "getVT(VarType(CCur(0.5))) = " & getVT(VarType(CCur(0.5))))
886 Call ok(VarType(CStr(0.5)) = vbString, "VarType(CStr(0.5)) = " & VarType(CStr(0.5)))
887 Call ok(getVT(VarType(CStr(0.5))) = "VT_I2", "getVT(VarType(CStr(0.5))) = " & getVT(VarType(CStr(0.5))))
888 Call ok(VarType(CBool(0.5)) = vbBoolean, "VarType(CBool(0.5)) = " & VarType(CBool(0.5)))
889 Call ok(getVT(VarType(CBool(0.5))) = "VT_I2", "getVT(VarType(CBool(0.5))) = " & getVT(VarType(CBool(0.5))))
890 Call ok(VarType(CByte(255)) = vbByte, "VarType(CByte(255)) = " & VarType(CByte(255)))
891 Call ok(getVT(VarType(CByte(255))) = "VT_I2", "getVT(VarType(CByte(255))) = " & getVT(VarType(CByte(255))))
893 Call ok(Sgn(Empty) = 0, "Sgn(MyEmpty) = " & Sgn(Empty))
894 Call ok(getVT(Sgn(Empty)) = "VT_I2", "getVT(Sgn(MyEmpty)) = " & getVT(Sgn(Empty)))
895 Call ok(Sgn(0) = 0, "Sgn(0) = " & Sgn(0))
896 Call ok(getVT(Sgn(0)) = "VT_I2", "getVT(Sgn(0)) = " & getVT(Sgn(0)))
897 Call ok(Sgn(-32769) = -1, "Sgn(-32769) = " & Sgn(-32769))
898 Call ok(getVT(Sgn(-32769)) = "VT_I2", "getVT(Sgn(-32769)) = " & getVT(Sgn(-32769)))
899 Call ok(Sgn(CSng(-0.5)) = -1, "Sgn(CSng(-0.5)) = " & Sgn(CSng(-0.5)))
900 Call ok(getVT(Sgn(CSng(-0.5))) = "VT_I2", "getVT(Sgn(CSng(-0.5))) = " & getVT(Sgn(CSng(-0.5))))
901 Call ok(Sgn(0.5) = 1, "Sgn(0.5) = " & Sgn(0.5))
902 Call ok(getVT(Sgn(0.5)) = "VT_I2", "getVT(Sgn(0.5)) = " & getVT(Sgn(0.5)))
903 Call ok(Sgn(CCur(-1)) = -1, "Sgn(CCur(-1)) = " & Sgn(CCur(-1)))
904 Call ok(getVT(Sgn(CCur(-1))) = "VT_I2", "getVT(Sgn(CCur(-1))) = " & getVT(Sgn(CCur(-1))))
905 Call ok(Sgn(CStr(-1)) = -1, "Sgn(CStr(-1)) = " & Sgn(CStr(-1)))
906 Call ok(getVT(Sgn(CStr(-1))) = "VT_I2", "getVT(Sgn(CStr(-1))) = " & getVT(Sgn(CStr(-1))))
907 Call ok(Sgn(False) = 0, "Sgn(False) = " & Sgn(False))
908 Call ok(getVT(Sgn(False)) = "VT_I2", "getVT(Sgn(False)) = " & getVT(Sgn(False)))
909 Call ok(Sgn(True) = -1, "Sgn(True) = " & Sgn(True))
910 Call ok(getVT(Sgn(True)) = "VT_I2", "getVT(Sgn(True)) = " & getVT(Sgn(True)))
911 Call ok(Sgn(CByte(1)) = 1, "Sgn(CByte(1)) = " & Sgn(CByte(1)))
912 Call ok(getVT(Sgn(CByte(1))) ="VT_I2", "getVT(Sgn(CByte(1))) = " & getVT(Sgn(CByte(1))))
914 Sub testSgnError(strings, error_num)
915 on error resume next
917 Call Err.clear()
918 Call Sgn(strings)
919 Call ok(Err.number = error_num, "Err.number = " & Err.number)
920 End Sub
922 Call testSgnError(Null, 94)
924 Call ok(Abs(Empty) = 0, "Abs(Empty) = " & Abs(Empty))
925 Call ok(getVT(Abs(Empty)) = "VT_I2", "getVT(Abs(Empty)) = " & getVT(Abs(Empty)))
926 Call ok(IsNull(Abs(Null)), "Is Abs(Null) not Null?")
927 Call ok(getVT(Abs(Null)) = "VT_NULL", "getVT(Abs(Null)) = " & getVT(Abs(Null)))
928 Call ok(Abs(0) = 0, "Abs(0) = " & Abs(0))
929 Call ok(getVT(Abs(0)) = "VT_I2", "getVT(Abs(0)) = " & getVT(Abs(0)))
930 Call ok(Abs(-32769) = 32769, "Abs(-32769) = " & Abs(-32769))
931 Call ok(getVT(Abs(-32769)) = "VT_I4", "getVT(Abs(-32769)) = " & getVT(Abs(-32769)))
932 Call ok(Abs(CSng(-0.5)) = 0.5, "Abs(CSng(-0.5)) = " & Abs(CSng(-0.5)))
933 Call ok(getVT(Abs(CSng(-0.5))) = "VT_R4", "getVT(Abs(CSng(-0.5))) = " & getVT(Abs(CSng(-0.5))))
934 Call ok(Abs(0.5) = 0.5, "Abs(0.5) = " & Abs(0.5))
935 Call ok(getVT(Abs(0.5)) = "VT_R8", "getVT(Abs(0.5)) = " & getVT(Abs(0.5)))
936 Call ok(Abs(CCur(-1)) = 1, "Abs(CCur(-1)) = " & Abs(CCur(-1)))
937 Call ok(getVT(Abs(CCur(-1))) = "VT_CY", "getVT(Abs(CCur(-1))) = " & getVT(Abs(CCur(-1))))
938 Call ok(Abs("-1") = 1, "Abs(""-1"") = " & Abs("-1"))
939 Call ok(getVT(Abs("-1")) = "VT_R8", "getVT(Abs(""-1"")) = " & getVT(Abs("-1")))
940 Call ok(Abs(False) = 0, "Abs(False) = " & Abs(False))
941 Call ok(getVT(Abs(False)) = "VT_I2", "getVT(Abs(False)) = " & getVT(Abs(False)))
942 Call ok(Abs(True) = 1, "Abs(True) = " & Abs(True))
943 Call ok(getVT(Abs(True)) = "VT_I2", "getVT(Abs(True)) = " & getVT(Abs(True)))
944 Call ok(Abs(CByte(1)) = 1, "Abs(CByte(1)) = " & Abs(CByte(1)))
945 Call ok(getVT(Abs(CByte(1))) = "VT_UI1", "getVT(Abs(CByte(1))) = " & getVT(Abs(CByte(1))))
947 Sub testAbsError(strings, error_num1, error_num2)
948 on error resume next
949 Dim x
951 Call Err.clear()
952 x = Abs(strings)
953 Call ok(Err.number = error_num1, "Err.number1 = " & Err.number)
955 Call Err.clear()
956 Call Abs(strings)
957 Call ok(Err.number = error_num2, "Err.number2 = " & Err.number)
958 End Sub
960 Call testAbsError("strings", 13, 13)
961 Call testAbsError(-4, 0, 0)
963 Call reportSuccess()