ntoskrnl.exe: Add KeQueryActiveProcessorCountEx() function.
[wine.git] / dlls / vbscript / tests / api.vbs
blob0a65984483f83a8798dc8053c660cb6f5d530d49
1 ' Copyright 2011 Jacek Caban for CodeWeavers
3 ' This library is free software; you can redistribute it and/or
4 ' modify it under the terms of the GNU Lesser General Public
5 ' License as published by the Free Software Foundation; either
6 ' version 2.1 of the License, or (at your option) any later version.
8 ' This library is distributed in the hope that it will be useful,
9 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 ' Lesser General Public License for more details.
13 ' You should have received a copy of the GNU Lesser General Public
14 ' License along with this library; if not, write to the Free Software
15 ' Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 Option Explicit
20 Dim x
22 Class EmptyClass
23 End Class
25 Call ok(vbSunday = 1, "vbSunday = " & vbSunday)
26 Call ok(getVT(vbSunday) = "VT_I2", "getVT(vbSunday) = " & getVT(vbSunday))
27 Call ok(vbMonday = 2, "vbMonday = " & vbMonday)
28 Call ok(getVT(vbMonday) = "VT_I2", "getVT(vbMonday) = " & getVT(vbMonday))
29 Call ok(vbTuesday = 3, "vbTuesday = " & vbTuesday)
30 Call ok(getVT(vbTuesday) = "VT_I2", "getVT(vbTuesday) = " & getVT(vbTuesday))
31 Call ok(vbWednesday = 4, "vbWednesday = " & vbWednesday)
32 Call ok(getVT(vbWednesday) = "VT_I2", "getVT(vbWednesday) = " & getVT(vbWednesday))
33 Call ok(vbThursday = 5, "vbThursday = " & vbThursday)
34 Call ok(getVT(vbThursday) = "VT_I2", "getVT(vbThursday) = " & getVT(vbThursday))
35 Call ok(vbFriday = 6, "vbFriday = " & vbFriday)
36 Call ok(getVT(vbFriday) = "VT_I2", "getVT(vbFriday) = " & getVT(vbFriday))
37 Call ok(vbSaturday = 7, "vbSaturday = " & vbSaturday)
38 Call ok(getVT(vbSaturday) = "VT_I2", "getVT(vbSaturday) = " & getVT(vbSaturday))
40 Sub TestConstant(name, val, exval)
41 Call ok(val = exval, name & " = " & val & " expected " & exval)
42 Call ok(getVT(val) = "VT_I2*", "getVT(" & name & ") = " & getVT(val))
43 End Sub
45 Sub TestConstantI4(name, val, exval)
46 Call ok(val = exval, name & " = " & val & " expected " & exval)
47 Call ok(getVT(val) = "VT_I4*", "getVT(" & name & ") = " & getVT(val))
48 End Sub
50 Sub TestConstantBSTR(name, val, exval)
51 Call ok(val = exval, name & " = " & val & " expected " & exval)
52 Call ok(getVT(val) = "VT_BSTR*", "getVT(" & name & ") = " & getVT(val))
53 End Sub
55 TestConstant "vbEmpty", vbEmpty, 0
56 TestConstant "vbNull", vbNull, 1
57 TestConstant "vbLong", vbLong, 3
58 TestConstant "vbSingle", vbSingle, 4
59 TestConstant "vbDouble", vbDouble, 5
60 TestConstant "vbCurrency", vbCurrency, 6
61 TestConstant "vbDate", vbDate, 7
62 TestConstant "vbString", vbString, 8
63 TestConstant "vbObject", vbObject, 9
64 TestConstant "vbError", vbError, 10
65 TestConstant "vbBoolean", vbBoolean, 11
66 TestConstant "vbVariant", vbVariant, 12
67 TestConstant "vbDataObject", vbDataObject, 13
68 TestConstant "vbDecimal", vbDecimal, 14
69 TestConstant "vbByte", vbByte, 17
70 TestConstant "vbArray", vbArray, 8192
71 TestConstant "vbCritical", vbCritical, 16
72 TestConstant "vbQuestion", vbQuestion, 32
73 TestConstant "vbExclamation", vbExclamation, 48
74 TestConstant "vbInformation", vbInformation, 64
75 TestConstant "vbDefaultButton1", vbDefaultButton1, 0
76 TestConstant "vbDefaultButton2", vbDefaultButton2, 256
77 TestConstant "vbDefaultButton3", vbDefaultButton3, 512
78 TestConstant "vbDefaultButton4", vbDefaultButton4, 768
79 TestConstant "vbApplicationModal", vbApplicationModal, 0
80 TestConstant "vbSystemModal", vbSystemModal, 4096
81 TestConstant "vbUseSystem", vbUseSystem, 0
82 TestConstant "vbUseSystemDayOfWeek", vbUseSystemDayOfWeek, 0
83 TestConstant "vbFirstJan1", vbFirstJan1, 1
84 TestConstant "vbFirstFourDays", vbFirstFourDays, 2
85 TestConstant "vbFirstFullWeek", vbFirstFullWeek, 3
86 TestConstant "vbTrue", vbTrue, -1
87 TestConstant "vbFalse", vbFalse, 0
88 TestConstantI4 "vbMsgBoxHelpButton", vbMsgBoxHelpButton, 16384
89 TestConstantI4 "vbMsgBoxSetForeground", vbMsgBoxSetForeground, 65536
90 TestConstantI4 "vbMsgBoxRight", vbMsgBoxRight, 524288
91 TestConstantI4 "vbMsgBoxRtlReading", vbMsgBoxRtlReading, 1048576
92 TestConstant "vbUseDefault", vbUseDefault, -2
93 TestConstant "vbBinaryCompare", vbBinaryCompare, 0
94 TestConstant "vbTextCompare", vbTextCompare, 1
95 TestConstant "vbDatabaseCompare", vbDatabaseCompare, 2
96 TestConstant "vbGeneralDate", vbGeneralDate, 0
97 TestConstant "vbLongDate", vbLongDate, 1
98 TestConstant "vbShortDate", vbShortDate, 2
99 TestConstant "vbLongTime", vbLongTime, 3
100 TestConstant "vbShortTime", vbShortTime, 4
101 TestConstantI4 "vbObjectError", vbObjectError, &h80040000&
102 TestConstantI4 "vbBlack", vbBlack, 0
103 TestConstantI4 "vbBlue", vbBlue, &hff0000&
104 TestConstantI4 "vbCyan", vbCyan, &hffff00&
105 TestConstantI4 "vbGreen", vbGreen, &h00ff00&
106 TestConstantI4 "vbMagenta", vbMagenta, &hff00ff&
107 TestConstantI4 "vbRed", vbRed, &h0000ff&
108 TestConstantI4 "vbWhite", vbWhite, &hffffff&
109 TestConstantI4 "vbYellow", vbYellow, &h00ffff&
110 TestConstantBSTR "vbCr", vbCr, Chr(13)
111 TestConstantBSTR "vbCrLf", vbCrLf, Chr(13)&Chr(10)
112 TestConstantBSTR "vbNewLine", vbNewLine, Chr(13)&Chr(10)
113 TestConstantBSTR "vbFormFeed", vbFormFeed, Chr(12)
114 TestConstantBSTR "vbLf", vbLf, Chr(10)
115 TestConstantBSTR "vbNullChar", vbNullChar, Chr(0)
116 TestConstantBSTR "vbNullString", vbNullString, ""
117 TestConstantBSTR "vbTab", vbTab, chr(9)
118 TestConstantBSTR "vbVerticalTab", vbVerticalTab, chr(11)
120 Sub TestCStr(arg, exval)
121 dim x
122 x = CStr(arg)
123 Call ok(getVT(x) = "VT_BSTR*", "getVT(x) = " & getVT(x))
124 Call ok(x = exval, "CStr(" & arg & ") = " & x)
125 End Sub
127 TestCStr "test", "test"
128 TestCStr 3, "3"
129 if isEnglishLang then TestCStr 3.5, "3.5"
130 if isEnglishLang then TestCStr true, "True"
132 sub testCStrError()
133 on error resume next
134 Error.clear()
135 CStr(null)
136 call ok(Err.number = 94, "Err.number = " & Err.number)
137 if isEnglishLang then call ok(Err.source = "Microsoft VBScript runtime error", "Err.source = " & Err.source)
138 if isEnglishLang then call ok(Err.description = "Invalid use of Null", "Err.description = " & Err.description)
139 end sub
140 call testCStrError()
142 Call ok(getVT(Chr(120)) = "VT_BSTR", "getVT(Chr(120)) = " & getVT(Chr(120)))
143 Call ok(getVT(Chr(255)) = "VT_BSTR", "getVT(Chr(255)) = " & getVT(Chr(255)))
144 Call ok(Chr(120) = "x", "Chr(120) = " & Chr(120))
145 Call ok(Chr(0) <> "", "Chr(0) = """"")
146 Call ok(Chr(120.5) = "x", "Chr(120.5) = " & Chr(120.5))
147 Call ok(Chr(119.5) = "x", "Chr(119.5) = " & Chr(119.5))
148 Call ok(Chr("120") = "x", "Chr(""120"") = " & Chr("120"))
150 sub testChrError
151 on error resume next
153 if isEnglishLang then
154 call Err.clear()
155 call Chr(-1)
156 call ok(Err.number = 5, "Err.number = " & Err.number)
157 if isEnglishLang then call ok(Err.description = "Invalid procedure call or argument", "Err.description = " & Err.description)
159 call Err.clear()
160 call Chr(256)
161 call ok(Err.number = 5, "Err.number = " & Err.number)
162 end if
164 call Err.clear()
165 call Chr(65536)
166 call ok(Err.number = 5, "Err.number = " & Err.number)
168 call Err.clear()
169 call Chr(-32769)
170 call ok(Err.number = 5, "Err.number = " & Err.number)
171 end sub
173 call testChrError
175 Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?")
176 Set x = new EmptyClass
177 Call ok(isObject(x), "isObject(x) is not true?")
178 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
179 Call ok(not isObject(true), "isObject(true) is true?")
180 Call ok(not isObject(4), "isObject(4) is true?")
181 Call ok(not isObject("x"), "isObject(""x"") is true?")
182 Call ok(not isObject(Null), "isObject(Null) is true?")
184 Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?")
185 Set x = new EmptyClass
186 Call ok(not isEmpty(x), "isEmpty(x) is true?")
187 x = empty
188 Call ok(isEmpty(x), "isEmpty(x) is not true?")
189 Call ok(isEmpty(empty), "isEmpty(empty) is not true?")
190 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
191 Call ok(not isEmpty(true), "isEmpty(true) is true?")
192 Call ok(not isEmpty(4), "isEmpty(4) is true?")
193 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
194 Call ok(not isEmpty(Null), "isEmpty(Null) is true?")
196 Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?")
197 Set x = new EmptyClass
198 Call ok(not isNull(x), "isNull(x) is true?")
199 x = null
200 Call ok(isNull(x), "isNull(x) is not true?")
201 Call ok(not isNull(empty), "isNull(empty) is true?")
202 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
203 Call ok(not isNull(true), "isNull(true) is true?")
204 Call ok(not isNull(4), "isNull(4) is true?")
205 Call ok(not isNull("x"), "isNull(""x"") is true?")
206 Call ok(isNull(Null), "isNull(Null) is not true?")
208 Call ok(isNumeric(Empty), "isNumeric(empty) is not true?")
209 Call ok(not isNumeric(Null), "isNumeric(Null) is not true?")
210 Call ok(isNumeric(32767), "isNumeric(32767) is true?")
211 Call ok(isNumeric(32768), "isNumeric(32768) is true?")
212 Call ok(isNumeric(CSng(3242.4)), "isNumeric(CSng(3242.4)) is true?")
213 Call ok(isNumeric(32768.4), "isNumeric(32768.4) is true?")
214 Call ok(isNumeric(CCur(32768.4)), "isNumeric(CCur(32768.4)) is true?")
215 Call ok(isNumeric("44"), "isNumeric(""44"") is true?")
216 Call ok(not isNumeric("rwrf"), "isNumeric(""rwrf"") is not true?")
217 Call ok(not isNumeric(Nothing), "isNumeric(Nothing) is not true?")
218 Call ok(not isNumeric(New EmptyClass), "isNumeric(New EmptyClass) is not true?")
219 Call ok(isNumeric(true), "isNumeric(true) is true?")
220 Call ok(isNumeric(CByte(32)), "isNumeric(CByte(32)) is true?")
221 Dim arr(2)
222 arr(0) = 2
223 arr(1) = 3
224 Call ok(not isNumeric(arr), "isNumeric(arr) is not true?")
226 Call ok(getVT(Array()) = "VT_ARRAY|VT_VARIANT", "getVT(Array()) = " & getVT(Array()))
227 x = Array("a1", 2, "a3")
228 Call ok(getVT(x) = "VT_ARRAY|VT_VARIANT*", "getVT(array) = " & getVT(x))
229 Call ok(getVT(x(0)) = "VT_BSTR*", "getVT(array(0)) = " & getVT(x(0)))
230 Call ok(x(0) = "a1", "array(0) = " & x(0))
231 Call ok(getVT(x(1)) = "VT_I2*", "getVT(array(1)) = " & getVT(x(1)))
232 Call ok(x(1) = 2, "array(1) = " & x(1))
233 Call ok(getVT(x(2)) = "VT_BSTR*", "getVT(array(2)) = " & getVT(x(2)))
234 Call ok(x(2) = "a3", "array(2) = " & x(2))
236 Dim new_array
237 new_array = x
238 x(0) = "new value"
239 Call ok(new_array(0) = "a1", "new_array(0) = " & new_array(0))
241 Call ok(getVT(UBound(x)) = "VT_I4", "getVT(UBound(x)) = " & getVT(UBound(x)))
242 Call ok(UBound(x) = 2, "UBound(x) = " & UBound(x))
243 Call ok(getVT(UBound(x, 1)) = "VT_I4", "getVT(UBound(x, 1)) = " & getVT(UBound(x, 1)))
244 Call ok(UBound(x, 1) = 2, "UBound(x) = " & UBound(x, 1))
246 x = Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33)
247 ok x(1) = 2, "x(1) = " & x(1)
248 ok x(32) = 33, "x(32) = " & x(32)
249 ok ubound(x) = 32, "ubound(x) = " & ubound(x)
251 Dim arr2(2, 4)
252 Call ok(UBound(arr2) = 2, "UBound(x) = " & UBound(x))
253 Call ok(UBound(arr2, 1) = 2, "UBound(x) = " & UBound(x))
254 Call ok(UBound(arr2, 2) = 4, "UBound(x) = " & UBound(x))
255 Call ok(Lbound(arr2) = 0, "Lbound(x) = " & Lbound(x))
256 Call ok(Lbound(arr2, 1) = 0, "Lbound(x) = " & Lbound(x))
257 Call ok(Lbound(arr2, 2) = 0, "Lbound(x) = " & Lbound(x))
259 sub testUBoundError()
260 on error resume next
261 call Err.clear()
262 call UBound()
263 call ok(Err.number = 450, "Err.number = " & Err.number)
264 call Err.clear()
265 call UBound(arr, 1, 2)
266 call ok(Err.number = 450, "Err.number = " & Err.number)
267 if isEnglishLang then call ok(Err.description = "Wrong number of arguments or invalid property assignment", _
268 "Err.description = " & Err.description)
269 end sub
270 call testUBoundError()
272 Dim newObject
273 Set newObject = New ValClass
274 newObject.myval = 1
275 Call ok(isNumeric(newObject), "isNumeric(newObject) is true?")
276 newObject.myval = "test"
277 Call ok(not isNumeric(newObject), "isNumeric(newObject) is not true?")
279 Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err))
281 Sub TestHex(x, ex)
282 Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex)
283 End Sub
285 TestHex 0, "0"
286 TestHex 6, "6"
287 TestHex 16, "10"
288 TestHex &hdeadbeef&, "DEADBEEF"
289 TestHex -1, "FFFF"
290 TestHex -16, "FFF0"
291 TestHex -934859845, "C8472BBB"
292 TestHex empty, "0"
293 TestHex "17", "11"
294 TestHex 228.5, "E4"
295 TestHex -32767, "8001"
296 TestHex -32768, "FFFF8000"
297 TestHex 2147483647.49, "7FFFFFFF"
298 TestHex -2147483647.5, "80000000"
299 newObject.myval = 30.5
300 TestHex newObject, "1E"
301 newObject.myval = "27"
302 TestHex newObject, "1B"
305 Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null)))
306 Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
308 Sub TestHexError(num, err_num)
309 On Error Resume Next
310 Call Hex(num)
311 Call ok(Err.number = err_num, "Hex(" & num & ") returns error number " & Err.number & " expected " & err_num)
312 End Sub
314 TestHexError 2147483647.5, 6
315 TestHexError 2147483648.51, 6
316 TestHexError "test", 13
318 Sub TestOct(x, ex, res_type)
319 Call ok(Oct(x) = ex, "Oct(" & x & ") = " & Oct(x) & " expected " & ex)
320 Call ok(getVT(Oct(x)) = res_type, "getVT(Oct(" &x & ")) = " & getVT(Oct(x)) & "expected " & res_type)
321 End Sub
323 Sub TestOctError(num, err_num)
324 On error resume next
325 Call Oct(num)
326 Call ok(Err.number = err_num, "Oct(" & num & ") error number is " & Err.number & " expected " & err_num)
327 End Sub
329 TestOct empty, "0", "VT_BSTR"
330 TestOct 0, "0", "VT_BSTR"
331 TestOct 9, "11", "VT_BSTR"
332 TestOct "9", "11", "VT_BSTR"
333 TestOct 8.5, "10", "VT_BSTR"
334 TestOct 9.5, "12", "VT_BSTR"
335 TestOct -1, "177777", "VT_BSTR"
336 TestOct -32767, "100001", "VT_BSTR"
337 TestOct -32768, "37777700000", "VT_BSTR"
338 TestOct 2147483647.49, "17777777777", "VT_BSTR"
339 TestOct -2147483648.5, "20000000000", "VT_BSTR"
340 Call ok(getVT(Oct(null)) = "VT_NULL", "getVT(Oct(null)) = " & getVT(Oct(null)))
341 newObject.myval = 5
342 TestOct newObject, "5", "VT_BSTR"
344 TestOctError 2147483647.5, 6
345 TestOctError -2147483648.51, 6
346 TestOctError "test", 13
348 x = InStr(1, "abcd", "bc")
349 Call ok(x = 2, "InStr returned " & x)
351 x = InStr("abcd", "bc")
352 Call ok(x = 2, "InStr returned " & x)
353 Call ok(getVT(x) = "VT_I4*", "getVT(InStr) returned " & getVT(x))
355 x = InStr("abc", "bc")
356 Call ok(x = 2, "InStr returned " & x)
358 x = InStr("abcbc", "bc")
359 Call ok(x = 2, "InStr returned " & x)
361 x = InStr("bcabc", "bc")
362 Call ok(x = 1, "InStr returned " & x)
364 x = InStr(3, "abcd", "bc")
365 Call ok(x = 0, "InStr returned " & x)
367 x = InStr("abcd", "bcx")
368 Call ok(x = 0, "InStr returned " & x)
370 x = InStr(5, "abcd", "bc")
371 Call ok(x = 0, "InStr returned " & x)
373 x = "abcd"
374 x = InStr(x, "bc")
375 Call ok(x = 2, "InStr returned " & x)
377 x = InStr("abcd", null)
378 Call ok(isNull(x), "InStr returned " & x)
379 x = InStr(null, "abcd")
380 Call ok(isNull(x), "InStr returned " & x)
381 x = InStr(2, null, "abcd")
382 Call ok(isNull(x), "InStr returned " & x)
384 x = InStr(1.3, "abcd", "bc")
385 Call ok(x = 2, "InStr returned " & x)
387 x = InStr(2.3, "abcd", "bc")
388 Call ok(x = 2, "InStr returned " & x)
390 x = InStr(2.6, "abcd", "bc")
391 Call ok(x = 0, "InStr returned " & x)
394 x = InStrRev("bcabcd", "bc")
395 Call ok(x = 4, "InStrRev returned " & x)
396 Call ok(getVT(x) = "VT_I4*", "getVT(InStrRev) returned " & getVT(x))
398 x = InStrRev("bcabcd", "bc", 6)
399 Call ok(x = 4, "InStrRev returned " & x)
401 x = InStrRev("abcd", "bcx")
402 Call ok(x = 0, "InStrRev returned " & x)
404 x = InStrRev("abcd", "bc", 3)
405 Call ok(x = 2, "InStrRev returned " & x)
407 x = InStrRev("abcd", "bc", 2)
408 Call ok(x = 0, "InStrRev returned " & x)
410 x = InStrRev("abcd", "b", 2)
411 Call ok(x = 2, "InStrRev returned " & x)
413 x = InStrRev("abcd", "bc", 5)
414 Call ok(x = 0, "InStrRev returned " & x)
416 x = InStrRev("abcd", "bc", 15)
417 Call ok(x = 0, "InStrRev returned " & x)
419 x = "abcd"
420 x = InStrRev(x, "bc")
421 Call ok(x = 2, "InStrRev returned " & x)
423 x = InStrRev("abcd", "bc", 1.3)
424 Call ok(x = 0, "InStrRev returned " & x)
426 x = InStrRev("abcd", "bc", 2.3)
427 Call ok(x = 0, "InStrRev returned " & x)
429 x = InStrRev("abcd", "bc", 2.6)
430 Call ok(x = 2, "InStrRev returned " & x)
432 x = InStrRev("1234", 34)
433 Call ok(x = 3, "InStrRev returned " & x)
435 x = InStrRev(1234, 34)
436 Call ok(x = 3, "InStrRev returned " & x)
438 Sub testInStrRevError(arg1, arg2, arg3, error_num)
439 on error resume next
440 Dim x
442 Call Err.clear()
443 x = InStrRev(arg1, arg2, arg3)
444 Call ok(Err.number = error_num, "Err.number = " & Err.number)
445 End Sub
447 call testInStrRevError("abcd", null, 2, 94)
448 call testInStrRevError(null, "abcd", 2, 94)
449 call testInStrRevError("abcd", "abcd", null, 94)
451 Sub TestMid(str, start, len, ex)
452 x = Mid(str, start, len)
453 Call ok(x = ex, "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected " & ex)
454 End Sub
456 Sub TestMid2(str, start, ex)
457 x = Mid(str, start)
458 Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex)
459 End Sub
461 TestMid "test", 2, 2, "es"
462 TestMid "test", 2, 4, "est"
463 TestMid "test", 1, 2, "te"
464 TestMid "test", 1, 0, ""
465 TestMid "test", 1, 0, ""
466 TestMid "test", 5, 2, ""
467 TestMid2 "test", 1, "test"
468 TestMid2 "test", 2, "est"
469 TestMid2 "test", 4, "t"
470 TestMid2 "test", 5, ""
472 Sub TestUCase(str, ex)
473 x = UCase(str)
474 Call ok(x = ex, "UCase(" & str & ") = " & x & " expected " & ex)
475 End Sub
477 TestUCase "test", "TEST"
478 TestUCase "123aBC?", "123ABC?"
479 TestUCase "", ""
480 TestUCase 1, "1"
481 if isEnglishLang then TestUCase true, "TRUE"
482 TestUCase 0.123, doubleAsString(0.123)
483 TestUCase Empty, ""
484 Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null)))
486 Sub TestLCase(str, ex)
487 x = LCase(str)
488 Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex)
489 End Sub
491 TestLCase "test", "test"
492 TestLCase "123aBC?", "123abc?"
493 TestLCase "", ""
494 TestLCase 1, "1"
495 if isEnglishLang then TestLCase true, "true"
496 TestLCase 0.123, doubleAsString(0.123)
497 TestLCase Empty, ""
498 Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null)))
500 Sub TestStrComp(str_left, str_right, mode, ex)
501 x = StrComp(str_left, str_right, mode)
502 Call ok(x = ex, "StrComp(" & str_left & ", " & str_right & ", " & mode & ") = " & x & " expected " & ex)
503 End Sub
505 TestStrComp "ABC", "abc", 0, -1
506 TestStrComp "abc", "ABC", 0, 1
507 TestStrComp "ABC", "ABC", 0, 0
508 TestStrComp "ABC", "abc", 0, -1
509 TestStrComp "abc", "ABC", 0, 1
510 TestStrComp "ABC", "ABC", 0, 0
511 TestStrComp "ABCD", "ABC", 0, 1
512 TestStrComp "ABC", "ABCD", 0, -1
513 TestStrComp "ABC", "abc", 1, 0
514 TestStrComp "ABC", "ABC", 1, 0
515 TestStrComp "ABCD", "ABC", 1, 1
516 TestStrComp "ABC", "ABCD", 1, -1
517 TestStrComp "ABC", "ABCD", "0", -1
518 TestStrComp "ABC", "ABCD", "1", -1
519 TestStrComp 1, 1, 1, 0
520 TestStrComp "1", 1, 1, 0
521 TestStrComp "1", 1.0, 1, 0
522 TestStrComp Empty, Empty, 1, 0
523 TestStrComp Empty, "", 1, 0
524 TestStrComp Empty, "ABC", 1, -1
525 TestStrComp "ABC", Empty, 1, 1
526 TestStrComp vbNull, vbNull, 1, 0
527 TestStrComp "", vbNull, 1, -1
529 sub testStrCompError()
530 on error resume next
531 call Err.clear()
532 call StrComp()
533 call ok(Err.number = 450, "Err.number = " & Err.number)
534 call Err.clear()
535 call StrComp("a", "a", 0, 1)
536 call ok(Err.number = 450, "Err.number = " & Err.number)
537 end sub
538 call testStrCompError()
540 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
541 Call ok(Len("") = 0, "Len() = " & Len(""))
542 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
543 Call ok(isNull(Len(null)), "Len(null) = " & Len(null))
544 Call ok(Len(empty) = 0, "Len(empty) = " & Len(empty))
545 Call ok(getVT(Len("abc")) = "VT_I4", "getVT(Len(abc)) = " & getVT(Len("abc")))
547 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
548 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
549 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
550 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
551 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
552 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
553 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
554 Call ok(Space(4.5) = " ", "Space(4.5) = " & Space(4.5) & """")
555 Call ok(Space(0.5) = "", "Space(0.5) = " & Space(0.5) & """")
556 Call ok(Space(1.5) = " ", "Space(1.5) = " & Space(1.5) & """")
557 Call ok(Space("1") = " ", "Space(""1"") = " & Space("1") & """")
559 sub test_string(cnt, char, exp)
560 call ok(String(cnt, char) = exp, "String(" & cnt & ", """ & char & """ = """ & _
561 String(cnt, char) & """ expected """ & exp & """")
562 end sub
564 test_string 3, "x", "xxx"
565 test_string 3, "xy", "xxx"
566 test_string 1, "z", "z"
567 test_string 0, "z", ""
568 test_string "3", "xy", "xxx"
569 test_string 3, Chr(3), Chr(3)&Chr(3)&Chr(3)
571 call ok(getVT(String(0, "z")) = "VT_BSTR", "getVT(String(0,z)) = " & getVT(String(0, "z")))
573 sub test_string_error()
574 on error resume next
575 dim x
576 x = String(-2, "x")
577 call ok(err.number = 5, "err.number = " & err.number)
578 err.clear
579 x = String(3, "")
580 call ok(err.number = 5, "err.number = " & err.number)
581 err.clear
582 x = String(0, "")
583 call ok(err.number = 5, "err.number = " & err.number)
584 end sub
585 call test_string_error
587 Sub TestStrReverse(str, ex)
588 Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str))
589 End Sub
591 TestStrReverse "test", "tset"
592 TestStrReverse "", ""
593 TestStrReverse 123, "321"
594 if isEnglishLang then TestStrReverse true, "eurT"
596 Sub TestLeft(str, len, ex)
597 Call ok(Left(str, len) = ex, "Left(" & str & ", " & len & ") = " & Left(str, len))
598 End Sub
600 TestLeft "test", 2, "te"
601 TestLeft "test", 5, "test"
602 TestLeft "test", 0, ""
603 TestLeft 123, 2, "12"
604 TestLeft "123456", 1.5, "12"
605 TestLeft "123456", 2.5, "12"
606 TestLeft "test", "2", "te"
607 if isEnglishLang then TestLeft true, 2, "Tr"
609 Sub TestRight(str, len, ex)
610 Call ok(Right(str, len) = ex, "Right(" & str & ", " & len & ") = " & Right(str, len))
611 End Sub
613 TestRight "test", 2, "st"
614 TestRight "test", 5, "test"
615 TestRight "test", 0, ""
616 TestRight 123, 2, "23"
617 if isEnglishLang then TestRight true, 2, "ue"
619 Sub TestTrim(str, exstr)
620 Call ok(Trim(str) = exstr, "Trim(" & str & ") = " & Trim(str))
621 End Sub
623 TestTrim " test ", "test"
624 TestTrim "test ", "test"
625 TestTrim " test", "test"
626 TestTrim "test", "test"
627 TestTrim "", ""
628 TestTrim 123, "123"
629 if isEnglishLang then TestTrim true, "True"
631 Sub TestLTrim(str, exstr)
632 Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str))
633 End Sub
635 TestLTrim " test ", "test "
636 TestLTrim "test ", "test "
637 TestLTrim " test", "test"
638 TestLTrim "test", "test"
639 TestLTrim "", ""
640 TestLTrim 123, "123"
641 if isEnglishLang then TestLTrim true, "True"
643 Sub TestRTrim(str, exstr)
644 Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str))
645 End Sub
647 TestRTrim " test ", " test"
648 TestRTrim "test ", "test"
649 TestRTrim " test", " test"
650 TestRTrim "test", "test"
651 TestRTrim "", ""
652 TestRTrim 123, "123"
653 if isEnglishLang then TestRTrim true, "True"
655 sub test_replace(str, find, rep, exp)
656 dim r
657 r = Replace(str, find, rep)
658 ok r = exp, "Replace(""" & str & """, """ & find & """, """ & rep & """) = """ & _
659 r & """ expected """ & exp & """"
660 end sub
662 sub test_replace_from(str, find, rep, from, exp)
663 dim r
664 r = Replace(str, find, rep, from)
665 ok r = exp, "Replace(""" & str & """, """ & find & """, """ & rep & """, " & from & ") = """ & _
666 r & """ expected """ & exp & """"
667 end sub
669 sub test_replace_cnt(str, find, rep, from, cnt, exp)
670 dim r
671 r = Replace(str, find, rep, from, cnt)
672 ok r = exp, "Replace(""" & str & """, """ & find & """, """ & rep & """, " & from & ", " & cnt & ") = """ & _
673 r & """ expected """ & exp & """"
674 end sub
676 test_replace "xx testxx(xx)", "xx", "!", "! test!(!)"
677 test_replace "xxx", "", "y", "xxx"
678 test_replace "xxxxx", "xx", "y", "yyx"
679 test_replace 123, 2, 6, "163"
680 test_replace "xyz" & Chr(0) & "xyz", "y", "Y", "xYz" & Chr(0) & "xYz"
681 test_replace "xyz" & Chr(0) & "xyz", Chr(0) & "x", "Y" & Chr(0) & Chr(0), "xyzY" & Chr(0) & Chr(0) & "yz"
683 test_replace_from "xx testxx(xx)", "xx", "!", 1, "! test!(!)"
684 test_replace_from "xx testxx(xx)", "xx", "!", 1, "! test!(!)"
685 test_replace_from "xx testxx(xx)", "xx", "!", 2, "x test!(!)"
686 test_replace_from "xx testxx(xx)", "xx", "!", 2000, ""
687 test_replace_from "xxx", "", "y", 2, "xx"
689 test_replace_cnt "xx testxx(xx)", "xx", "!", 1, 2, "! test!(xx)"
690 test_replace_cnt "xx testxx(xx)", "xx", "!", 1, 1, "! testxx(xx)"
691 test_replace_cnt "xx testxx(xx)", "xx", "!", 2, 1, "x test!(xx)"
692 test_replace_cnt "xx testxx(xx)", "xx", "!", 1, -1, "! test!(!)"
693 test_replace_cnt "xx testxx(xx)", "xx", "!", 1, 0, "xx testxx(xx)"
695 on error resume next
696 Replace "xx", "x", "y", -1
697 x = err.number
698 on error goto 0
699 ok x = 5, "err = " & x
701 on error resume next
702 Replace "xx", "x", "y", 0
703 x = err.number
704 on error goto 0
705 ok x = 5, "err = " & x
707 on error resume next
708 Replace "xx", "x", "y", 1, -2
709 x = err.number
710 on error goto 0
711 ok x = 5, "err = " & x
713 Sub TestRound(val, exval, vt)
714 Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val))
715 Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))
716 End Sub
718 TestRound 3, 3, "VT_I2"
719 TestRound 3.3, 3, "VT_R8"
720 TestRound 3.8, 4, "VT_R8"
721 TestRound 3.5, 4, "VT_R8"
722 TestRound -3.3, -3, "VT_R8"
723 TestRound -3.5, -4, "VT_R8"
724 TestRound "2", 2, "VT_R8"
725 TestRound true, true, "VT_BOOL"
726 TestRound false, false, "VT_BOOL"
728 if isEnglishLang then
729 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
730 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
731 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
732 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
733 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
734 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
735 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
736 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
737 Call ok(WeekDayName(1, true, 2.5) = "Mon", "WeekDayName(1, true, 2.5) = " & WeekDayName(1, true, 2.5))
738 Call ok(WeekDayName(1, true, 1.5) = "Mon", "WeekDayName(1, true, 1.5) = " & WeekDayName(1, true, 1.5))
739 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
740 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
742 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
743 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
744 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
745 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
746 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
747 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
748 end if
750 Call ok(WeekDayName(1, true, 0) = WeekDayName(1, true, firstDayOfWeek), _
751 "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
753 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
755 Call ok(vbOKOnly = 0, "vbOKOnly = " & vbOKOnly)
756 Call ok(getVT(vbOKOnly) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly))
757 Call ok(vbOKCancel = 1, "vbOKCancel = " & vbOKCancel)
758 Call ok(getVT(vbOKCancel) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel))
759 Call ok(vbAbortRetryIgnore = 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore)
760 Call ok(getVT(vbAbortRetryIgnore) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore))
761 Call ok(vbYesNoCancel = 3, "vbYesNoCancel = " & vbYesNoCancel)
762 Call ok(getVT(vbYesNoCancel) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel))
763 Call ok(vbYesNo = 4, "vbYesNo = " & vbYesNo)
764 Call ok(getVT(vbYesNo) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo))
765 Call ok(vbRetryCancel = 5, "vbRetryCancel = " & vbRetryCancel)
766 Call ok(getVT(vbRetryCancel) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel))
768 Call ok(vbOK = 1, "vbOK = " & vbOK)
769 Call ok(getVT(vbOK) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK))
770 Call ok(vbCancel = 2, "vbCancel = " & vbCancel)
771 Call ok(getVT(vbCancel) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel))
772 Call ok(vbAbort = 3, "vbAbort = " & vbAbort)
773 Call ok(getVT(vbAbort) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort))
774 Call ok(vbRetry = 4, "vbRetry = " & vbRetry)
775 Call ok(getVT(vbRetry) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry))
776 Call ok(vbIgnore = 5, "vbIgnore = " & vbIgnore)
777 Call ok(getVT(vbIgnore) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore))
778 Call ok(vbYes = 6, "vbYes = " & vbYes)
779 Call ok(getVT(vbYes) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes))
780 Call ok(vbNo = 7, "vbNo = " & vbNo)
781 Call ok(getVT(vbNo) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo))
783 Call ok(CInt(-36.75) = -37, "CInt(-36.75) = " & CInt(-36.75))
784 Call ok(getVT(CInt(-36.75)) = "VT_I2", "getVT(CInt(-36.75)) = " & getVT(CInt(-36.75)))
785 Call ok(CInt(-36.50) = -36, "CInt(-36.50) = " & CInt(-36.50))
786 Call ok(getVT(CInt(-36.50)) = "VT_I2", "getVT(CInt(-36.50)) = " & getVT(CInt(-36.50)))
787 Call ok(CInt(-36.25) = -36, "CInt(-36.25) = " & CInt(-36.25))
788 Call ok(getVT(CInt(-36.25)) = "VT_I2", "getVT(CInt(-36.25)) = " & getVT(CInt(-36.25)))
789 Call ok(CInt(-36) = -36, "CInt(-36) = " & CInt(-36))
790 Call ok(getVT(CInt(-36)) = "VT_I2", "getVT(CInt(-36)) = " & getVT(CInt(-36)))
791 Call ok(CInt(0) = 0, "CInt(0) = " & CInt(0))
792 Call ok(getVT(CInt(0)) = "VT_I2", "getVT(CInt(0)) = " & getVT(CInt(0)))
793 Call ok(CInt(0.0) = 0, "CInt(0.0) = " & CInt(0))
794 Call ok(getVT(CInt(0.0)) = "VT_I2", "getVT(CInt(0.0)) = " & getVT(CInt(0.0)))
795 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0))
796 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
797 Call ok(CInt(36) = 36, "CInt(36) = " & CInt(36))
798 Call ok(getVT(CInt(36)) = "VT_I2", "getVT(CInt(36)) = " & getVT(CInt(36)))
799 Call ok(CInt(36.25) = 36, "CInt(36.25) = " & CInt(36.25))
800 Call ok(getVT(CInt(36.25)) = "VT_I2", "getVT(CInt(36.25)) = " & getVT(CInt(36.25)))
801 Call ok(CInt(36.50) = 36, "CInt(36.50) = " & CInt(36.50))
802 Call ok(getVT(CInt(36.50)) = "VT_I2", "getVT(CInt(36.50)) = " & getVT(CInt(36.50)))
803 Call ok(CInt(36.75) = 37, "CInt(36.75) = " & CInt(36.75))
804 Call ok(getVT(CInt(36.75)) = "VT_I2", "getVT(CInt(36.75)) = " & getVT(CInt(36.75)))
807 Call ok(CBool(5) = true, "CBool(5) = " & CBool(5))
808 Call ok(getVT(CBool(5)) = "VT_BOOL", "getVT(CBool(5)) = " & getVT(CBool(5)))
809 Call ok(CBool(0) = false, "CBool(0) = " & CBool(0))
810 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
811 Call ok(CBool(-5) = true, "CBool(-5) = " & CBool(-5))
812 Call ok(getVT(CBool(-5)) = "VT_BOOL", "getVT(CBool(-5)) = " & getVT(CBool(-5)))
814 Sub testCBoolError(strings, error_num)
815 on error resume next
817 Call Err.clear()
818 Call CBool(strings)
819 Call ok(Err.number = error_num, "Err.number = " & Err.number)
820 End Sub
822 Class ValClass
823 Public myval
825 Public default Property Get defprop
826 defprop = myval
827 End Property
828 End Class
830 Dim MyObject
831 Set MyObject = New ValClass
833 Call ok(CBool(Empty) = False, "CBool(Empty) = " & CBool(Empty))
834 Call ok(getVT(CBool(Empty)) = "VT_BOOL", "getVT(CBool(Empty)) = " & getVT(CBool(Empty)))
835 Call ok(CBool(1) = True, "CBool(1) = " & CBool(1))
836 Call ok(getVT(CBool(1)) = "VT_BOOL", "getVT(CBool(1)) = " & getVT(CBool(1)))
837 Call ok(CBool(0) = False, "CBool(0) = " & CBool(0))
838 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
839 Call ok(CBool(-0.56) = True, "CBool(-0.56) = " & CBool(-0.56))
840 Call ok(getVT(CBool(-0.56)) = "VT_BOOL", "getVT(CBool(-0.56)) = " & getVT(CBool(-0.56)))
841 Call testCBoolError("", 13)
842 Call ok(CBool("0") = False, "CBool(""0"") = " & CBool("0"))
843 Call ok(getVT(CBool("0")) = "VT_BOOL", "getVT(CBool(""0"")) = " & getVT(CBool("0")))
844 If isEnglishLang Then
845 Call ok(CBool("0.1") = True, "CBool(""0.1"") = " & CBool("0.1"))
846 Call ok(getVT(CBool("0.1")) = "VT_BOOL", "getVT(CBool(""0.1"")) = " & getVT(CBool("0.1")))
847 End If
848 Call ok(CBool("true") = True, "CBool(""true"") = " & CBool("true"))
849 Call ok(getVT(CBool("true")) = "VT_BOOL", "getVT(CBool(""true"")) = " & getVT(CBool("true")))
850 Call ok(CBool("false") = False, "CBool(""false"") = " & CBool("false"))
851 Call ok(getVT(CBool("false")) = "VT_BOOL", "getVT(CBool(""false"")) = " & getVT(CBool("false")))
852 Call ok(CBool("TRUE") = True, "CBool(""TRUE"") = " & CBool("TRUE"))
853 Call ok(getVT(CBool("TRUE")) = "VT_BOOL", "getVT(CBool(""TRUE"")) = " & getVT(CBool("TRUE")))
854 Call ok(CBool("FALSE") = False, "CBool(""FALSE"") = " & CBool("FALSE"))
855 Call ok(getVT(CBool("FALSE")) = "VT_BOOL", "getVT(CBool(""FALSE"")) = " & getVT(CBool("FALSE")))
856 Call ok(CBool("#TRUE#") = True, "CBool(""#TRUE#"") = " & CBool("#TRUE#"))
857 Call ok(getVT(CBool("#TRUE#")) = "VT_BOOL", "getVT(CBool(""#TRUE#"")) = " & getVT(CBool("#TRUE#")))
858 Call ok(CBool("#FALSE#") = False, "CBool(""#FALSE#"") = " & CBool("#FALSE#"))
859 Call ok(getVT(CBool("#FALSE#")) = "VT_BOOL", "getVT(CBool(""#FALSE#"")) = " & getVT(CBool("#FALSE#")))
860 Call ok(CBool(MyObject) = False, "CBool(MyObject) = " & CBool(MyObject))
861 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
862 MyObject.myval = 1
863 Call ok(CBool(MyObject) = True, "CBool(MyObject) = " & CBool(MyObject))
864 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
865 MyObject.myval = 0
866 Call ok(CBool(MyObject) = False, "CBool(MyObject) = " & CBool(MyObject))
867 Call ok(getVT(CBool(MyObject)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject)))
869 Sub testCByteError(strings, error_num1,error_num2)
870 on error resume next
871 Dim x
873 Call Err.clear()
874 x = CByte(strings)
875 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
877 Call Err.clear()
878 Call CByte(strings)
879 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
880 End Sub
882 Call ok(CByte(Empty) = 0, "CByte(Empty) = " & CByte(Empty))
883 Call ok(getVT(CByte(Empty)) = "VT_UI1", "getVT(CByte(Empty)) = " & getVT(CByte(Empty)))
884 Call ok(CByte(255) = 255, "CByte(255) = " & CByte(255))
885 Call ok(getVT(CByte(255)) = "VT_UI1", "getVT(CByte(255)) = " & getVT(CByte(255)))
886 Call ok(CByte(255.49) = 255, "CByte(255.49) = " & CByte(255.49))
887 Call ok(getVT(CByte(255.49)) = "VT_UI1", "getVT(CByte(255.49)) = " & getVT(CByte(255.49)))
888 Call testCByteError(1, 0, 458)
889 Call testCByteError("", 13, 13)
890 Call testCByteError("-1", 6, 6)
891 Call testCByteError("258", 6, 6)
892 Call testCByteError("TRUE", 13, 13)
893 Call testCByteError("FALSE", 13, 13)
894 Call testCByteError("#TRue#", 13, 13)
895 Call testCByteError("#fAlSE#", 13, 13)
896 If isEnglishLang Then
897 Call ok(CByte("-0.5") = 0, "CByte(""-0.5"") = " & CByte("-0.5"))
898 Call ok(getVT(CByte("-0.5")) = "VT_UI1", "getVT(CByte(""-0.5"")) = " & getVT(CByte("-0.5")))
899 End If
900 Call ok(CByte(True) = 255, "CByte(True) = " & CByte(True))
901 Call ok(getVT(CByte(True)) = "VT_UI1", "getVT(CByte(True)) = " & getVT(CByte(True)))
902 Call ok(CByte(False) = 0, "CByte(False) = " & CByte(False))
903 Call ok(getVT(CByte(False)) = "VT_UI1", "getVT(CByte(False)) = " & getVT(CByte(False)))
904 Call ok(CByte(MyObject) = 0, "CByte(MyObject) = " & CByte(MyObject))
905 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
906 MyObject.myval = 1
907 Call ok(CByte(MyObject) = 1, "CByte(MyObject) = " & CByte(MyObject))
908 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
909 MyObject.myval = 0
910 Call ok(CByte(MyObject) = 0, "CByte(MyObject) = " & CByte(MyObject))
911 Call ok(getVT(CByte(MyObject)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject)))
913 Sub testCCurError(strings, error_num1, error_num2)
914 on error resume next
915 Dim x
917 Call Err.clear()
918 x = CCur(strings)
919 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
921 Call Err.clear()
922 Call CCur(strings)
923 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
924 End Sub
926 Call ok(CCur(Empty) = 0, "CCur(Empty) = " & CCur(Empty))
927 Call ok(getVT(CCur(Empty)) = "VT_CY", "getVT(CCur(Empty)) = " & getVT(CCur(Empty)))
928 Call ok(CCur(-32768) = -32768, "CCur(-32768) = " & CCur(-32768))
929 Call ok(getVT(CCur(-32768)) = "VT_CY", "getVT(CCur(-32768)) = " & getVT(CCur(-32768)))
930 Call ok(CCur(32768) = 32768, "CCur(32768) = " & CCur(32768))
931 Call ok(getVT(CCur(32768)) = "VT_CY", "getVT(CCur(32768)) = " & getVT(CCur(32768)))
932 Call ok(CCur(0.000149) = 0.0001, "CCur(0.000149) = " & CCur(0.000149))
933 Call ok(getVT(CCur(0.000149)) = "VT_CY", "getVT(CCur(0.000149)) = " & getVT(CCur(0.000149)))
934 Call ok(CCur(2147483647.99) = 2147483647.99, "CCur(2147483647.99) = " & CCur(2147483647.99))
935 Call ok(getVT(CCur(2147483647.99)) = "VT_CY", "getVT(CCur(2147483647.99)) = " & getVT(CCur(2147483647.99)))
936 Call ok(CCur("-1") = -1, "CCur(""-1"") = " & CCur("-1"))
937 Call ok(getVT(CCur("-1")) = "VT_CY", "getVT(CCur(""-1"")) = " & getVT(CCur("-1")))
938 If isEnglishLang Then
939 Call ok(CCur("-0.5") = -0.5, "CCur(""-0.5"") = " & CCur("-0.5"))
940 Call ok(getVT(CCur("-0.5")) = "VT_CY", "getVT(CCur(""-0.5"")) = " & getVT(CCur("-0.5")))
941 End If
942 Call testCCurError("", 13, 13)
943 Call testCCurError("-1", 0, 458)
944 Call testCCurError("TRUE", 13, 13)
945 Call testCCurError("FALSE", 13, 13)
946 Call testCCurError("#TRue#", 13, 13)
947 Call testCCurError("#fAlSE#", 13, 13)
948 Call testCCurError(1, 0, 458)
949 Call ok(CCur(True) = -1, "CCur(True) = " & CCur(True))
950 Call ok(getVT(CCur(True)) = "VT_CY", "getVT(CCur(True)) = " & getVT(CCur(True)))
951 Call ok(CCur(False) = 0, "CCur(False) = " & CCur(False))
952 Call ok(getVT(CCur(False)) = "VT_CY", "getVT(CCur(False)) = " & getVT(CCur(False)))
953 MyObject.myval = 0.1
954 Call ok(CCur(MyObject) = 0.1, "CCur(MyObject) = " & CCur(MyObject))
955 Call ok(getVT(CCur(MyObject)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject)))
956 MyObject.myval = 0
957 Call ok(CCur(MyObject) = 0, "CCur(MyObject) = " & CCur(MyObject))
958 Call ok(getVT(CCur(MyObject)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject)))
960 Sub testCDblError(strings, error_num1, error_num2)
961 on error resume next
962 Dim x
964 Call Err.clear()
965 x = CDbl(strings)
966 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
968 Call Err.clear()
969 Call CDbl(strings)
970 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
971 End Sub
973 Call ok(CDbl(Empty) = 0, "CDbl(Empty) = " & CDbl(Empty))
974 Call ok(getVT(CDbl(Empty)) = "VT_R8", "getVT(CDbl(Empty)) = " & getVT(CDbl(Empty)))
975 Call ok(CDbl(CByte(0)) = 0, "CDbl(CByte(0)) = " & CDbl(CByte(0)))
976 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
977 Call ok(CDbl(CCur(0)) = 0, "CDbl(CCur(0)) = " & CDbl(CCur(0)))
978 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
979 Call ok(CDbl(0) = 0, "CDbl(0) = " & CDbl(0))
980 Call ok(getVT(CDbl(0)) = "VT_R8", "getVT(CDbl(0)) = " & getVT(CDbl(0)))
981 Call ok(CDbl(32768) = 32768, "CDbl(32768) = " & CDbl(32768))
982 Call ok(getVT(CDbl(32768)) = "VT_R8", "getVT(CDbl(32768)) = " & getVT(CDbl(32768)))
983 Call ok(CDbl(0.001 * 0.001) = 0.000001, "CDbl(0.001 * 0.001) = " & CDbl(0.001 * 0.001))
984 Call ok(getVT(CDbl(0.001 * 0.001)) = "VT_R8", "getVT(CDbl(0.001 * 0.001)) = " & getVT(CDbl(0.001 * 0.001)))
985 Call ok(CDbl("-1") = -1, "CDbl(""-1"") = " & CDbl("-1"))
986 Call ok(getVT(CDbl("-1")) = "VT_R8", "getVT(CDbl(""-1"")) = " & getVT(CDbl("-1")))
987 If isEnglishLang Then
988 Call ok(CDbl("-0.5") = -0.5, "CDbl(""-0.5"") = " & CDbl("-0.5"))
989 Call ok(getVT(CDbl("-0.5")) = "VT_R8", "getVT(CDbl(""-0.5"")) = " & getVT(CDbl("-0.5")))
990 End If
991 Call testCDblError("", 13, 13)
992 Call testCDblError("TRUE", 13, 13)
993 Call testCDblError("FALSE", 13, 13)
994 Call testCDblError("#TRue#", 13, 13)
995 Call testCDblError("#fAlSE#", 13, 13)
996 Call testCDblError(1, 0, 458)
997 Call ok(CDbl(True) = -1, "CDbl(True) = " & CDbl(True))
998 Call ok(getVT(CDbl(True)) = "VT_R8", "getVT(CDbl(True)) = " & getVT(CDbl(True)))
999 Call ok(CDbl(False) = 0, "CDbl(False) = " & CDbl(False))
1000 Call ok(getVT(CDbl(False)) = "VT_R8", "getVT(CDbl(False)) = " & getVT(CDbl(False)))
1001 MyObject.myval = 0.1
1002 Call ok(CDbl(MyObject) = 0.1, "CDbl(MyObject) = " & CDbl(MyObject))
1003 Call ok(getVT(CDbl(MyObject)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject)))
1004 MyObject.myval = 0
1005 Call ok(CDbl(MyObject) = 0, "CDbl(MyObject) = " & CDbl(MyObject))
1006 Call ok(getVT(CDbl(MyObject)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject)))
1008 Sub testCLngError(strings, error_num1, error_num2)
1009 on error resume next
1010 Dim x
1012 Call Err.clear()
1013 x = CLng(strings)
1014 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
1016 Call Err.clear()
1017 Call CLng(strings)
1018 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
1019 End Sub
1021 Call ok(CLng(Empty) = 0, "CLng(Empty) = " & CLng(Empty))
1022 Call ok(getVT(CLng(Empty)) = "VT_I4", "getVT(CLng(Empty)) = " & getVT(CLng(Empty)))
1023 Call ok(CLng(CByte(0)) = 0, "CLng(CByte(0)) = " & CLng(CByte(0)))
1024 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
1025 Call ok(CLng(CCur(0)) = 0, "CLng(CCur(0)) = " & CLng(CCur(0)))
1026 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
1027 Call ok(CLng(0) = 0, "CLng(0) = " & CLng(0))
1028 Call ok(getVT(CLng(0)) = "VT_I4", "getVT(CLng(0)) = " & getVT(CLng(0)))
1029 Call ok(CLng(0.49) = 0, "CLng(0.49) = " & CLng(0.49))
1030 Call ok(getVT(CLng(0.49)) = "VT_I4", "getVT(CLng(0.49)) = " & getVT(CLng(0.49)))
1031 Call ok(CLng(0.5) = 0, "CLng(0.5) = " & CLng(0.5))
1032 Call ok(getVT(CLng(0.5)) = "VT_I4", "getVT(CLng(0.5)) = " & getVT(CLng(0.5)))
1033 Call ok(CLng(0.51) = 1, "CLng(0.51) = " & CLng(0.51))
1034 Call ok(getVT(CLng(0.51)) = "VT_I4", "getVT(CLng(0.51)) = " & getVT(CLng(0.51)))
1035 Call ok(CLng(1.49) = 1, "CLng(1.49) = " & CLng(1.49))
1036 Call ok(getVT(CLng(1.49)) = "VT_I4", "getVT(CLng(1.49)) = " & getVT(CLng(1.49)))
1037 Call ok(CLng(1.5) = 2, "CLng(1.5) = " & CLng(1.5))
1038 Call ok(getVT(CLng(1.5)) = "VT_I4", "getVT(CLng(1.5)) = " & getVT(CLng(1.5)))
1039 Call ok(CLng(1.51) = 2, "CLng(1.51) = " & CLng(1.51))
1040 Call ok(getVT(CLng(1.51)) = "VT_I4", "getVT(CLng(1.51)) = " & getVT(CLng(1.51)))
1041 Call ok(CLng("-1") = -1, "CLng(""-1"") = " & CLng("-1"))
1042 Call ok(getVT(CLng("-1")) = "VT_I4", "getVT(CLng(""-1"")) = " & getVT(CLng("-1")))
1043 If isEnglishLang Then
1044 Call ok(CLng("-0.5") = 0, "CLng(""-0.5"") = " & CLng("-0.5"))
1045 Call ok(getVT(CLng("-0.5")) = "VT_I4", "getVT(CLng(""-0.5"")) = " & getVT(CLng("-0.5")))
1046 End If
1047 Call testCLngError("", 13, 13)
1048 Call testCLngError("TRUE", 13, 13)
1049 Call testCLngError("FALSE", 13, 13)
1050 Call testCLngError("#TRue#", 13, 13)
1051 Call testCLngError("#fAlSE#", 13, 13)
1052 Call testCLngError(1, 0, 458)
1053 Call ok(CLng(True) = -1, "CLng(True) = " & CLng(True))
1054 Call ok(getVT(CLng(True)) = "VT_I4", "getVT(CLng(True)) = " & getVT(CLng(True)))
1055 Call ok(CLng(False) = 0, "CLng(False) = " & CLng(False))
1056 Call ok(getVT(CLng(False)) = "VT_I4", "getVT(CLng(False)) = " & getVT(CLng(False)))
1057 MyObject.myval = 1
1058 Call ok(CLng(MyObject) = 1, "CLng(MyObject) = " & CLng(MyObject))
1059 Call ok(getVT(CLng(MyObject)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject)))
1060 MyObject.myval = 0
1061 Call ok(CLng(MyObject) = 0, "CLng(MyObject) = " & CLng(MyObject))
1062 Call ok(getVT(CLng(MyObject)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject)))
1064 Sub testCIntError(strings, error_num1, error_num2)
1065 on error resume next
1066 Dim x
1068 Call Err.clear()
1069 x = CInt(strings)
1070 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
1072 Call Err.clear()
1073 Call CInt(strings)
1074 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
1075 End Sub
1077 Call ok(CInt(Empty) = 0, "CInt(Empty) = " & CInt(Empty))
1078 Call ok(getVT(CInt(Empty)) = "VT_I2", "getVT(CInt(Empty)) = " & getVT(CInt(Empty)))
1079 Call ok(CInt(CByte(0)) = 0, "CInt(CByte(0)) = " & CInt(CByte(0)))
1080 Call ok(getVT(CInt(CByte(0))) = "VT_I2", "getVT(CInt(CByte(0))) = " & getVT(CInt(CByte(0))))
1081 Call ok(CInt(CCur(0)) = 0, "CInt(CCur(0)) = " & CInt(CCur(0)))
1082 Call ok(getVT(CInt(CCur(0))) = "VT_I2", "getVT(CInt(CCur(0))) = " & getVT(CInt(CCur(0))))
1083 Call ok(CInt(0.49) = 0, "CInt(0.49) = " & CInt(0.49))
1084 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
1085 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0.5))
1086 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
1087 Call ok(CInt(0.51) = 1, "CInt(0.51) = " & CInt(0.51))
1088 Call ok(getVT(CInt(0.51)) = "VT_I2", "getVT(CInt(0.51)) = " & getVT(CInt(0.51)))
1089 Call ok(CInt(1.49) = 1, "CInt(0.49) = " & CInt(0.49))
1090 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
1091 Call ok(CInt(1.5) = 2, "CInt(1.5) = " & CInt(1.5))
1092 Call ok(getVT(CInt(1.5)) = "VT_I2", "getVT(CInt(1.5)) = " & getVT(CInt(1.5)))
1093 Call ok(CInt(1.51) = 2, "CInt(1.51) = " & CInt(1.51))
1094 Call ok(getVT(CInt(1.51)) = "VT_I2", "getVT(CInt(1.51)) = " & getVT(CInt(1.51)))
1095 Call ok(CInt("-1") = -1, "CInt(""-1"") = " & CInt("-1"))
1096 Call ok(getVT(CInt("-1")) = "VT_I2", "getVT(CInt(""-1"")) = " & getVT(CInt("-1")))
1097 If isEnglishLang Then
1098 Call ok(CInt("-0.5") = 0, "CInt(""-0.5"") = " & CInt("-0.5"))
1099 Call ok(getVT(CInt("-0.5")) = "VT_I2", "getVT(CInt(""-0.5"")) = " & getVT(CInt("-0.5")))
1100 End If
1101 Call testCIntError("", 13, 13)
1102 Call testCIntError("-1", 0, 458)
1103 Call testCIntError("TRUE", 13, 13)
1104 Call testCIntError("FALSE", 13, 13)
1105 Call testCIntError("#TRue#", 13, 13)
1106 Call testCIntError("#fAlSE#", 13, 13)
1107 Call testCIntError(1, 0, 458)
1108 Call testCIntError(32767.49, 0, 458)
1109 Call testCIntError(32767.5, 6, 6)
1110 Call testCIntError(-32768.5, 0, 458)
1111 Call testCIntError(-32768.51, 6, 6)
1112 Call ok(CInt(True) = -1, "CInt(True) = " & CInt(True))
1113 Call ok(getVT(CInt(True)) = "VT_I2", "getVT(CInt(True)) = " & getVT(CInt(True)))
1114 Call ok(CInt(False) = 0, "CInt(False) = " & CInt(False))
1115 Call ok(getVT(CInt(False)) = "VT_I2", "getVT(CInt(False)) = " & getVT(CInt(False)))
1116 MyObject.myval = 2.5
1117 Call ok(CInt(MyObject) = 2, "CInt(MyObject) = " & CInt(MyObject))
1118 Call ok(getVT(CInt(MyObject)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject)))
1119 MyObject.myval = 1.5
1120 Call ok(CInt(MyObject) = 2, "CInt(MyObject) = " & CInt(MyObject))
1121 Call ok(getVT(CInt(MyObject)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject)))
1123 Sub testCSngError(strings, error_num1, error_num2)
1124 on error resume next
1125 Dim x
1127 Call Err.clear()
1128 x = CSng(strings)
1129 Call ok(Err.number = error_num1, "Err.number = " & Err.number)
1131 Call Err.clear()
1132 Call CSng(strings)
1133 Call ok(Err.number = error_num2, "Err.number = " & Err.number)
1134 End Sub
1136 Call ok(CSng(Empty) = 0, "CSng(Empty) = " & CSng(Empty))
1137 Call ok(getVT(CSng(Empty)) = "VT_R4", "getVT(CSng(Empty)) = " & getVT(CSng(Empty)))
1138 Call ok(CSng(CByte(0)) = 0, "CSng(CByte(0)) = " & CSng(CByte(0)))
1139 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
1140 Call ok(CSng(CCur(0)) = 0, "CSng(CCur(0)) = " & CSng(CCur(0)))
1141 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
1142 Call ok(CSng(0) = 0, "CSng(0) = " & CSng(0))
1143 Call ok(getVT(CSng(0)) = "VT_R4", "getVT(CSng(0)) = " & getVT(CSng(0)))
1144 Call ok(CSng(32768) = 32768, "CSng(32768) = " & CSng(32768))
1145 Call ok(getVT(CSng(32768)) = "VT_R4", "getVT(CSng(32768)) = " & getVT(CSng(32768)))
1146 Call ok(CSng(0.001 * 0.001) = 0.000001, "CSng(0.001 * 0.001) = " & CSng(0.001 * 0.001))
1147 Call ok(getVT(CSng(0.001 * 0.001)) = "VT_R4", "getVT(CSng(0.001 * 0.001)) = " & getVT(CSng(0.001 * 0.001)))
1148 Call ok(CSng("-1") = -1, "CSng(""-1"") = " & CSng("-1"))
1149 Call ok(getVT(CSng("-1")) = "VT_R4", "getVT(CSng(""-1"")) = " & getVT(CSng("-1")))
1150 If isEnglishLang Then
1151 Call ok(CSng("-0.5") = -0.5, "CSng(""-0.5"") = " & CSng("-0.5"))
1152 Call ok(getVT(CSng("-0.5")) = "VT_R4", "getVT(CSng(""-0.5"")) = " & getVT(CSng("-0.5")))
1153 End If
1154 Call testCSngError("", 13, 13)
1155 Call testCSngError("TRUE", 13, 13)
1156 Call testCSngError("FALSE", 13, 13)
1157 Call testCSngError("#TRue#", 13, 13)
1158 Call testCSngError("#fAlSE#", 13, 13)
1159 Call testCSngError(1, 0, 458)
1160 Call ok(CSng(True) = -1, "CSng(True) = " & CSng(True))
1161 Call ok(getVT(CSng(True)) = "VT_R4", "getVT(CSng(True)) = " & getVT(CSng(True)))
1162 Call ok(CSng(False) = 0, "CSng(False) = " & CSng(False))
1163 Call ok(getVT(CSng(False)) = "VT_R4", "getVT(CSng(False)) = " & getVT(CSng(False)))
1164 MyObject.myval = 0.1
1165 Call ok(CSng(MyObject) = 0.1, "CSng(MyObject) = " & CSng(MyObject))
1166 Call ok(getVT(CSng(MyObject)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject)))
1167 MyObject.myval = 0
1168 Call ok(CSng(MyObject) = 0, "CSng(MyObject) = " & CSng(MyObject))
1169 Call ok(getVT(CSng(MyObject)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject)))
1171 Call ok(TypeName(Empty) = "Empty", "TypeName(MyEmpty) = " & TypeName(Empty))
1172 Call ok(getVT(TypeName(Empty)) = "VT_BSTR", "getVT(TypeName(Empty)) = " & getVT(TypeName(Empty)))
1173 Call ok(TypeName(Null) = "Null", "TypeName(Null) = " & TypeName(Null))
1174 Call ok(getVT(TypeName(Null)) = "VT_BSTR", "getVT(TypeName(Null)) = " & getVT(TypeName(Null)))
1175 Call ok(TypeName(CByte(255)) = "Byte", "TypeName(CByte(255)) = " & TypeName(CByte(255)))
1176 Call ok(getVT(TypeName(CByte(255))) = "VT_BSTR", "getVT(TypeName(CByte(255))) = " & getVT(TypeName(CByte(255))))
1177 Call ok(TypeName(255) = "Integer", "TypeName(255) = " & TypeName(255))
1178 Call ok(getVT(TypeName(255)) = "VT_BSTR", "getVT(TypeName(255)) = " & getVT(TypeName(255)))
1179 Call ok(TypeName(32768) = "Long", "TypeName(32768) = " & TypeName(32768))
1180 Call ok(getVT(TypeName(32768)) = "VT_BSTR", "getVT(TypeName(32768)) = " & getVT(TypeName(32768)))
1181 Call ok(TypeName(CSng(0.5)) = "Single", "TypeName(CSng(0.5)) = " & TypeName(CSng(0.5)))
1182 Call ok(getVT(TypeName(CSng(0.5))) = "VT_BSTR", "getVT(TypeName(CSng(0.5))) = " & getVT(TypeName(CSng(0.5))))
1183 Call ok(TypeName(-0.5) = "Double", "TypeName(-0.5) = " & TypeName(-0.5))
1184 Call ok(getVT(TypeName(-0.5)) = "VT_BSTR", "getVT(TypeName(-0.5)) = " & getVT(TypeName(-0.5)))
1185 Call ok(TypeName(CCur(0.5)) = "Currency", "TypeName(CCur(0.5)) = " & TypeName(CCur(0.5)))
1186 Call ok(getVT(TypeName(CCur(0.5))) = "VT_BSTR", "getVT(TypeName(CCur(0.5))) = " & getVT(TypeName(CCur(0.5))))
1187 Call ok(TypeName(CStr(0.5)) = "String", "TypeName(CStr(0.5)) = " & TypeName(CStr(0.5)))
1188 Call ok(getVT(TypeName(CStr(0.5))) = "VT_BSTR", "getVT(TypeName(CStr(0.5))) = " & getVT(TypeName(CStr(0.5))))
1189 Call ok(TypeName(True) = "Boolean", "TypeName(True) = " & TypeName(True))
1190 Call ok(getVT(TypeName(True)) = "VT_BSTR", "getVT(TypeName(True)) = " & getVT(TypeName(True)))
1192 Call ok(VarType(Empty) = vbEmpty, "VarType(Empty) = " & VarType(Empty))
1193 Call ok(getVT(VarType(Empty)) = "VT_I2", "getVT(VarType(Empty)) = " & getVT(VarType(Empty)))
1194 Call ok(VarType(Null) = vbNull, "VarType(Null) = " & VarType(Null))
1195 Call ok(getVT(VarType(Null)) = "VT_I2", "getVT(VarType(Null)) = " & getVT(VarType(Null)))
1196 Call ok(VarType(255) = vbInteger, "VarType(255) = " & VarType(255))
1197 Call ok(getVT(VarType(255)) = "VT_I2", "getVT(VarType(255)) = " & getVT(VarType(255)))
1198 set x = new EmptyClass
1199 Call ok(VarType(x) = vbObject, "VarType(x) = " & VarType(x))
1200 Call ok(getVT(VarType(x)) = "VT_I2", "getVT(VarType(x)) = " & getVT(VarType(x)))
1201 Call ok(VarType(32768) = vbLong, "VarType(32768) = " & VarType(32768))
1202 Call ok(getVT(VarType(32768)) = "VT_I2", "getVT(VarType(32768)) = " & getVT(VarType(32768)))
1203 Call ok(VarType(CSng(0.5)) = vbSingle, "VarType(CSng(0.5)) = " & VarType(CSng(0.5)))
1204 Call ok(getVT(VarType(CSng(0.5))) = "VT_I2", "getVT(VarType(CSng(0.5))) = " & getVT(VarType(CSng(0.5))))
1205 Call ok(VarType(-0.5) = vbDouble, "VarType(-0.5) = " & VarType(-0.5))
1206 Call ok(getVT(VarType(-0.5)) = "VT_I2", "getVT(VarType(-0.5)) = " & getVT(VarType(-0.5)))
1207 Call ok(VarType(CCur(0.5)) = vbCurrency, "VarType(CCur(0.5)) = " & VarType(CCur(0.5)))
1208 Call ok(getVT(VarType(CCur(0.5))) = "VT_I2", "getVT(VarType(CCur(0.5))) = " & getVT(VarType(CCur(0.5))))
1209 Call ok(VarType(CStr(0.5)) = vbString, "VarType(CStr(0.5)) = " & VarType(CStr(0.5)))
1210 Call ok(getVT(VarType(CStr(0.5))) = "VT_I2", "getVT(VarType(CStr(0.5))) = " & getVT(VarType(CStr(0.5))))
1211 Call ok(VarType(CBool(0.5)) = vbBoolean, "VarType(CBool(0.5)) = " & VarType(CBool(0.5)))
1212 Call ok(getVT(VarType(CBool(0.5))) = "VT_I2", "getVT(VarType(CBool(0.5))) = " & getVT(VarType(CBool(0.5))))
1213 Call ok(VarType(CByte(255)) = vbByte, "VarType(CByte(255)) = " & VarType(CByte(255)))
1214 Call ok(getVT(VarType(CByte(255))) = "VT_I2", "getVT(VarType(CByte(255))) = " & getVT(VarType(CByte(255))))
1215 Call ok(VarType(arr) = (vbArray or vbVariant), "VarType(arr) = " & VarType(arr))
1216 Call ok(getVT(VarType(arr)) = "VT_I2", "getVT(VarType(arr)) = " & getVT(VarType(arr)))
1218 Call ok(Sgn(Empty) = 0, "Sgn(MyEmpty) = " & Sgn(Empty))
1219 Call ok(getVT(Sgn(Empty)) = "VT_I2", "getVT(Sgn(MyEmpty)) = " & getVT(Sgn(Empty)))
1220 Call ok(Sgn(0) = 0, "Sgn(0) = " & Sgn(0))
1221 Call ok(getVT(Sgn(0)) = "VT_I2", "getVT(Sgn(0)) = " & getVT(Sgn(0)))
1222 Call ok(Sgn(-32769) = -1, "Sgn(-32769) = " & Sgn(-32769))
1223 Call ok(getVT(Sgn(-32769)) = "VT_I2", "getVT(Sgn(-32769)) = " & getVT(Sgn(-32769)))
1224 Call ok(Sgn(CSng(-0.5)) = -1, "Sgn(CSng(-0.5)) = " & Sgn(CSng(-0.5)))
1225 Call ok(getVT(Sgn(CSng(-0.5))) = "VT_I2", "getVT(Sgn(CSng(-0.5))) = " & getVT(Sgn(CSng(-0.5))))
1226 Call ok(Sgn(0.5) = 1, "Sgn(0.5) = " & Sgn(0.5))
1227 Call ok(getVT(Sgn(0.5)) = "VT_I2", "getVT(Sgn(0.5)) = " & getVT(Sgn(0.5)))
1228 Call ok(Sgn(CCur(-1)) = -1, "Sgn(CCur(-1)) = " & Sgn(CCur(-1)))
1229 Call ok(getVT(Sgn(CCur(-1))) = "VT_I2", "getVT(Sgn(CCur(-1))) = " & getVT(Sgn(CCur(-1))))
1230 Call ok(Sgn(CStr(-1)) = -1, "Sgn(CStr(-1)) = " & Sgn(CStr(-1)))
1231 Call ok(getVT(Sgn(CStr(-1))) = "VT_I2", "getVT(Sgn(CStr(-1))) = " & getVT(Sgn(CStr(-1))))
1232 Call ok(Sgn(False) = 0, "Sgn(False) = " & Sgn(False))
1233 Call ok(getVT(Sgn(False)) = "VT_I2", "getVT(Sgn(False)) = " & getVT(Sgn(False)))
1234 Call ok(Sgn(True) = -1, "Sgn(True) = " & Sgn(True))
1235 Call ok(getVT(Sgn(True)) = "VT_I2", "getVT(Sgn(True)) = " & getVT(Sgn(True)))
1236 Call ok(Sgn(CByte(1)) = 1, "Sgn(CByte(1)) = " & Sgn(CByte(1)))
1237 Call ok(getVT(Sgn(CByte(1))) ="VT_I2", "getVT(Sgn(CByte(1))) = " & getVT(Sgn(CByte(1))))
1239 Sub testSgnError(strings, error_num)
1240 on error resume next
1242 Call Err.clear()
1243 Call Sgn(strings)
1244 Call ok(Err.number = error_num, "Err.number = " & Err.number)
1245 End Sub
1247 Call testSgnError(Null, 94)
1249 Call ok(Abs(Empty) = 0, "Abs(Empty) = " & Abs(Empty))
1250 Call ok(getVT(Abs(Empty)) = "VT_I2", "getVT(Abs(Empty)) = " & getVT(Abs(Empty)))
1251 Call ok(IsNull(Abs(Null)), "Is Abs(Null) not Null?")
1252 Call ok(getVT(Abs(Null)) = "VT_NULL", "getVT(Abs(Null)) = " & getVT(Abs(Null)))
1253 Call ok(Abs(0) = 0, "Abs(0) = " & Abs(0))
1254 Call ok(getVT(Abs(0)) = "VT_I2", "getVT(Abs(0)) = " & getVT(Abs(0)))
1255 Call ok(Abs(-32769) = 32769, "Abs(-32769) = " & Abs(-32769))
1256 Call ok(getVT(Abs(-32769)) = "VT_I4", "getVT(Abs(-32769)) = " & getVT(Abs(-32769)))
1257 Call ok(Abs(CSng(-0.5)) = 0.5, "Abs(CSng(-0.5)) = " & Abs(CSng(-0.5)))
1258 Call ok(getVT(Abs(CSng(-0.5))) = "VT_R4", "getVT(Abs(CSng(-0.5))) = " & getVT(Abs(CSng(-0.5))))
1259 Call ok(Abs(0.5) = 0.5, "Abs(0.5) = " & Abs(0.5))
1260 Call ok(getVT(Abs(0.5)) = "VT_R8", "getVT(Abs(0.5)) = " & getVT(Abs(0.5)))
1261 Call ok(Abs(CCur(-1)) = 1, "Abs(CCur(-1)) = " & Abs(CCur(-1)))
1262 Call ok(getVT(Abs(CCur(-1))) = "VT_CY", "getVT(Abs(CCur(-1))) = " & getVT(Abs(CCur(-1))))
1263 Call ok(Abs("-1") = 1, "Abs(""-1"") = " & Abs("-1"))
1264 Call ok(getVT(Abs("-1")) = "VT_R8", "getVT(Abs(""-1"")) = " & getVT(Abs("-1")))
1265 Call ok(Abs(False) = 0, "Abs(False) = " & Abs(False))
1266 Call ok(getVT(Abs(False)) = "VT_I2", "getVT(Abs(False)) = " & getVT(Abs(False)))
1267 Call ok(Abs(True) = 1, "Abs(True) = " & Abs(True))
1268 Call ok(getVT(Abs(True)) = "VT_I2", "getVT(Abs(True)) = " & getVT(Abs(True)))
1269 Call ok(Abs(CByte(1)) = 1, "Abs(CByte(1)) = " & Abs(CByte(1)))
1270 Call ok(getVT(Abs(CByte(1))) = "VT_UI1", "getVT(Abs(CByte(1))) = " & getVT(Abs(CByte(1))))
1272 Sub testAbsError(strings, error_num1, error_num2)
1273 on error resume next
1274 Dim x
1276 Call Err.clear()
1277 x = Abs(strings)
1278 Call ok(Err.number = error_num1, "Err.number1 = " & Err.number)
1280 Call Err.clear()
1281 Call Abs(strings)
1282 Call ok(Err.number = error_num2, "Err.number2 = " & Err.number)
1283 End Sub
1285 Call testAbsError("strings", 13, 13)
1286 Call testAbsError(-4, 0, 0)
1288 Call ok(ScriptEngine = "VBScript", "Is scriptengine not VBScript?")
1289 Call ok(getVT(ScriptEngine) = "VT_BSTR", "getVT(ScriptEngine) = " & getVT(ScriptEngine))
1291 Call ok(getVT(ScriptEngineBuildVersion) = "VT_I4", "getVT(ScriptEngineBuildVersion) = " & getVT(ScriptEngineBuildVersion))
1293 Call ok(getVT(ScriptEngineMajorVersion) = "VT_I4", "getVT(ScriptEngineMajorVersion) = " & getVT(ScriptEngineMajorVersion))
1295 Call ok(getVT(ScriptEngineMinorVersion) = "VT_I4", "getVT(ScriptEngineMinorVersion) = " & getVT(ScriptEngineMinorVersion))
1297 Call ok(Fix(Empty) = 0, "Fix(Empty) = " & Fix(Empty))
1298 Call ok(getVT(Fix(Empty)) = "VT_I2", "getVT(Fix(Empty)) = " & getVT(Fix(Empty)))
1299 Call ok(Fix(CCur(-0.99)) = 0, "Fix(CCur(-0.99)) = " & Fix(CCur(-0.99)))
1300 Call ok(getVT(Fix(CCur(-0.99))) = "VT_CY", "getVT(Fix(CCur(-0.99))) = " & getVT(Fix(CCur(-0.99))))
1301 Call ok(Fix(1.99) = 1, "Fix(1.99) = " & Fix(1.99))
1302 Call ok(getVT(Fix(1.99)) = "VT_R8", "getVT(Fix(1.99)) = " & getVT(Fix(1.99)))
1303 Call ok(Fix(-1.99) = -1, "Fix(-1.99) = " & Fix(-1.99))
1304 Call ok(getVT(Fix(-1.99)) = "VT_R8", "getVT(Fix(-1.99)) = " & getVT(Fix(-1.99)))
1305 If isEnglishLang Then
1306 Call ok(Fix("1.99") = 1, "Fix(""1.99"") = " & Fix("1.99"))
1307 Call ok(getVT(Fix("1.99")) = "VT_R8", "getVT(Fix(""1.99"")) = " & getVT(Fix("1.99")))
1308 Call ok(Fix("-1.99") = -1, "Fix(""-1.99"") = " & Fix("-1.99"))
1309 Call ok(getVT(Fix("-1.99")) = "VT_R8", "getVT(Fix(""-1.99"")) = " & getVT(Fix("-1.99")))
1310 End If
1311 Call ok(Fix(True) = -1, "Fix(True) = " & Fix(True))
1312 Call ok(getVT(Fix(True)) = "VT_I2", "getVT(Fix(True)) = " & getVT(Fix(True)))
1313 Call ok(Fix(False) = 0, "Fix(False) = " & Fix(False))
1314 Call ok(getVT(Fix(False)) = "VT_I2", "getVT(Fix(False)) = " & getVT(Fix(False)))
1315 MyObject.myval = 2.5
1316 Call ok(Fix(MyObject) = 2, "Fix(MyObject) = " & Fix(MyObject))
1317 Call ok(getVT(Fix(MyObject)) = "VT_R8", "getVT(Fix(MyObject)) = " & getVT(Fix(MyObject)))
1318 MyObject.myval = -2.5
1319 Call ok(Fix(MyObject) = -2, "Fix(MyObject) = " & Fix(MyObject))
1320 Call ok(getVT(Fix(MyObject)) = "VT_R8", "getVT(Fix(MyObject)) = " & getVT(Fix(MyObject)))
1322 Call ok(Int(Empty) = 0, "Int(Empty) = " & Int(Empty))
1323 Call ok(getVT(Int(Empty)) = "VT_I2", "getVT(Int(Empty)) = " & getVT(Int(Empty)))
1324 Call ok(Int(CCur(-0.99)) = -1, "Int(CCur(-0.99)) = " & Int(CCur(-0.99)))
1325 Call ok(getVT(Int(CCur(-0.99))) = "VT_CY", "getVT(Int(CCur(-0.99))) = " & getVT(Int(CCur(-0.99))))
1326 Call ok(Int(1.99) = 1, "Int(1.99) = " & Int(1.99))
1327 Call ok(getVT(Int(1.99)) = "VT_R8", "getVT(Int(1.99)) = " & getVT(Int(1.99)))
1328 Call ok(Int(-1.99) = -2, "Int(-1.99) = " & Int(-1.99))
1329 Call ok(getVT(Int(-1.99)) = "VT_R8", "getVT(Int(-1.99)) = " & getVT(Int(-1.99)))
1330 If isEnglishLang Then
1331 Call ok(Int("1.99") = 1, "Int(""1.99"") = " & Int("1.99"))
1332 Call ok(getVT(Int("1.99")) = "VT_R8", "getVT(Int(""1.99"")) = " & getVT(Int("1.99")))
1333 Call ok(Int("-1.99") = -2, "Int(""-1.99"") = " & Int("-1.99"))
1334 Call ok(getVT(Int("-1.99")) = "VT_R8", "getVT(Int(""-1.99"")) = " & getVT(Int("-1.99")))
1335 End If
1336 Call ok(Int(True) = -1, "Int(True) = " & Int(True))
1337 Call ok(getVT(Int(True)) = "VT_I2", "getVT(Int(True)) = " & getVT(Int(True)))
1338 Call ok(Int(False) = 0, "Int(False) = " & Int(False))
1339 Call ok(getVT(Int(False)) = "VT_I2", "getVT(Int(False)) = " & getVT(Int(False)))
1340 MyObject.myval = 2.5
1341 Call ok(Int(MyObject) = 2, "Int(MyObject) = " & Int(MyObject))
1342 Call ok(getVT(Int(MyObject)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject)))
1343 MyObject.myval = -2.5
1344 Call ok(Int(MyObject) = -3, "Int(MyObject) = " & Int(MyObject))
1345 Call ok(getVT(Int(MyObject)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject)))
1347 Sub testSqrError(strings, error_num1, error_num2)
1348 on error resume next
1349 Dim x
1351 Call Err.clear()
1352 x = Sqr(strings)
1353 Call ok(Err.number = error_num1, "Err.number1 = " & Err.number)
1355 Call Err.clear()
1356 Call Sqr(strings)
1357 Call ok(Err.number = error_num2, "Err.number2 = " & Err.number)
1358 End Sub
1360 Call testSqrError(-2, 5, 5)
1361 Call testSqrError(True, 5, 5)
1363 Call ok(Sqr(Empty) = 0, "Sqr(Empty) = " & Sqr(Empty))
1364 Call ok(getVT(Sqr(Empty)) = "VT_R8", "getVT(Sqr(Empty)) = " & getVT(Sqr(Empty)))
1365 Call ok(Sqr(0) = 0, "Sqr(0) = " & Sqr(0))
1366 Call ok(getVT(Sqr(0)) = "VT_R8", "getVT(Sqr(0)) = " & getVT(Sqr(0)))
1367 Call ok(Sqr(1) = 1, "Sqr(1) = " & Sqr(1))
1368 Call ok(getVT(Sqr(1)) = "VT_R8", "getVT(Sqr(1)) = " & getVT(Sqr(1)))
1369 Call ok(Sqr(CSng(121)) = 11, "Sqr(CSng(121)) = " & Sqr(CSng(121)))
1370 Call ok(getVT(Sqr(CSng(121))) = "VT_R8", "getVT(Sqr(CSng(121))) = " & getVT(Sqr(CSng(121))))
1371 Call ok(Sqr(36100) = 190, "Sqr(36100) = " & Sqr(36100))
1372 Call ok(getVT(Sqr(36100)) = "VT_R8", "getVT(Sqr(36100)) = " & getVT(Sqr(36100)))
1373 Call ok(Sqr(CCur(0.0625)) = 0.25, "Sqr(CCur(0.0625)) = " & Sqr(CCur(0.0625)))
1374 Call ok(getVT(Sqr(CCur(0.0625))) = "VT_R8", "getVT(Sqr(CCur(0.0625))) = " & getVT(Sqr(CCur(0.0625))))
1375 Call ok(Sqr("100000000") = 10000, "Sqr(""100000000"") = " & Sqr("100000000"))
1376 Call ok(getVT(Sqr("100000000")) = "VT_R8", "getVT(Sqr(""100000000"")) = " & getVT(Sqr("100000000")))
1377 Call ok(Sqr(False) = 0, "Sqr(False) = " & Sqr(False))
1378 Call ok(getVT(Sqr(False)) = "VT_R8", "getVT(Sqr(False)) = " & getVT(Sqr(False)))
1379 Call ok(Sqr(CByte(225)) = 15, "Sqr(CByte(225)) = " & Sqr(CByte(225)))
1380 Call ok(getVT(Sqr(CByte(225))) = "VT_R8", "getVT(Sqr(CByte(225))) = " & getVT(Sqr(CByte(225))))
1382 Function Approch(func, res)
1383 If Abs(func - res) < 0.001 Then
1384 Approch = True
1385 Else
1386 Approch = False
1387 End If
1388 End Function
1390 Const PI = 3.1415926
1392 Call ok(Approch(Cos(Empty), 1), "Cos(Empty) = " & Cos(Empty))
1393 Call ok(getVT(Cos(Empty)) = "VT_R8", "getVT(Cos(Empty)) = " & getVT(Cos(Empty)))
1394 Call ok(Approch(Cos(PI / 6), Sqr(3) / 2), "Cos(PI / 6) = " & Cos(PI / 6))
1395 Call ok(getVT(Cos(PI / 6)) = "VT_R8", "getVT(Cos(PI / 6)) = " & getVT(Cos(PI / 6)))
1396 Call ok(Approch(Cos(CCur(PI / 4)), Sqr(2) / 2), "Cos(CCur(PI / 4)) = " & Cos(CCur(PI / 4)))
1397 Call ok(getVT(Cos(CCur(PI / 4))) = "VT_R8", "getVT(Cos(CCur(PI / 4))) = " & getVT(Cos(CCur(PI / 4))))
1398 Call ok(Approch(Cos(CSng(PI / 3)), 1 / 2), "Cos(CSng(PI / 3)) = " & Cos(CSng(PI / 3)))
1399 Call ok(getVT(Cos(CSng(PI / 3))) = "VT_R8", "getVT(Cos(CSng(PI))) = " & getVT(Cos(CSng(PI))))
1400 Call ok(Approch(Cos(PI / 2), 0), "Cos(0) = " & Cos(PI / 2))
1401 Call ok(getVT(Cos(PI / 2)) = "VT_R8", "getVT(Cos(PI / 2)) = " & getVT(Cos(PI / 2)))
1402 Call ok(Approch(Cos(PI), -1), "Cos(PI) = " & Cos(PI))
1403 Call ok(getVT(Cos(PI)) = "VT_R8", "getVT(Cos(PI)) = " & getVT(Cos(PI)))
1404 Call ok(Approch(Cos(5 * PI / 4), -Sqr(2) / 2), "Cos(5 * PI / 4) = " & Cos(5 * PI / 4))
1405 Call ok(getVT(Cos(5 * PI / 4)) = "VT_R8", "getVT(Cos(5 * PI / 4)) = " & getVT(Cos(5 * PI / 4)))
1406 Call ok(Approch(Cos(3 * PI / 2), 0), "Cos(3 * PI / 2) = " & Cos(3 * PI / 2))
1407 Call ok(getVT(Cos(3 * PI / 2)) = "VT_R8", "getVT(Cos(3 * PI / 2)) = " & getVT(Cos(3 * PI / 2)))
1408 Call ok(Approch(Cos(2 * PI), 1), "Cos(2 * PI) = " & Cos(2 * PI))
1409 Call ok(getVT(Cos(2 * PI)) = "VT_R8", "getVT(Cos(2 * PI)) = " & getVT(Cos(2 * PI)))
1410 Call ok(Approch(Cos("-32768"), 0.3729), "Cos(""-32768"") = " & Cos("-32768"))
1411 Call ok(getVT(Cos("-32768")) = "VT_R8", "getVT(Cos(""-32768"")) = " & getVT(Cos("-32768")))
1412 Call ok(Approch(Cos(False), 1), "Cos(False) = " & Cos(False))
1413 Call ok(getVT(Cos(False)) = "VT_R8", "getVT(Cos(False)) = " & getVT(Cos(False)))
1414 Call ok(Approch(Cos(True), 0.5403), "Cos(True) = " & Cos(True))
1415 Call ok(getVT(Cos(True)) = "VT_R8", "getVT(Cos(True)) = " & getVT(Cos(True)))
1416 Call ok(Approch(Cos(CByte(255)), -0.8623), "Cos(CByte(255)) = " & Cos(CByte(255)))
1417 Call ok(getVT(Cos(CByte(255))) = "VT_R8", "getVT(Cos(CByte(255))) = " & getVT(Cos(CByte(255))))
1419 Call ok(Approch(Sin(Empty), 0), "Sin(Empty) = " & Sin(Empty))
1420 Call ok(getVT(Sin(Empty)) = "VT_R8", "getVT(Sin(Empty)) = " & getVT(Sin(Empty)))
1421 Call ok(Approch(Sin(PI / 6), 1 / 2), "Sin(PI / 6) = " & Sin(PI / 6))
1422 Call ok(getVT(Sin(PI / 6)) = "VT_R8", "getVT(Sin(PI / 6)) = " & getVT(Sin(PI / 6)))
1423 Call ok(Approch(Sin(CCur(PI / 4)), Sqr(2) / 2), "Sin(CCur(PI / 4)) = " & Sin(CCur(PI / 4)))
1424 Call ok(getVT(Sin(CCur(PI / 4))) = "VT_R8", "getVT(Sin(CCur(PI / 4))) = " & getVT(Sin(CCur(PI / 4))))
1425 Call ok(Approch(Sin(CSng(PI / 3)), Sqr(3) / 2), "Sin(CSng(PI / 3)) = " & Sin(CSng(PI / 3)))
1426 Call ok(getVT(Sin(CSng(PI / 3))) = "VT_R8", "getVT(Sin(CSng(PI))) = " & getVT(Sin(CSng(PI))))
1427 Call ok(Approch(Sin(PI / 2), 1), "Sin(0) = " & Sin(PI / 2))
1428 Call ok(getVT(Sin(PI / 2)) = "VT_R8", "getVT(Sin(PI / 2)) = " & getVT(Sin(PI / 2)))
1429 Call ok(Approch(Sin(PI), 0), "Sin(PI) = " & Sin(PI))
1430 Call ok(getVT(Sin(PI)) = "VT_R8", "getVT(Sin(PI)) = " & getVT(Sin(PI)))
1431 Call ok(Approch(Sin(5 * PI / 4), -Sqr(2) / 2), "Sin(5 * PI / 4) = " & Sin(5 * PI / 4))
1432 Call ok(getVT(Sin(5 * PI / 4)) = "VT_R8", "getVT(Sin(5 * PI / 4)) = " & getVT(Sin(5 * PI / 4)))
1433 Call ok(Approch(Sin(3 * PI / 2), -1), "Sin(3 * PI / 2) = " & Sin(3 * PI / 2))
1434 Call ok(getVT(Sin(3 * PI / 2)) = "VT_R8", "getVT(Sin(3 * PI / 2)) = " & getVT(Sin(3 * PI / 2)))
1435 Call ok(Approch(Sin(2 * PI), 0), "Sin(2 * PI) = " & Sin(2 * PI))
1436 Call ok(getVT(Sin(2 * PI)) = "VT_R8", "getVT(Sin(2 * PI)) = " & getVT(Sin(2 * PI)))
1437 Call ok(Approch(Sin("-32768"), -0.9278), "Sin(""-32768"") = " & Sin("-32768"))
1438 Call ok(getVT(Sin("-32768")) = "VT_R8", "getVT(Sin(""-32768"")) = " & getVT(Sin("-32768")))
1439 Call ok(Approch(Sin(False), 0), "Sin(False) = " & Sin(False))
1440 Call ok(getVT(Sin(False)) = "VT_R8", "getVT(Sin(False)) = " & getVT(Sin(False)))
1441 Call ok(Approch(Sin(True), -0.84147), "Sin(True) = " & Sin(True))
1442 Call ok(getVT(Sin(True)) = "VT_R8", "getVT(Sin(True)) = " & getVT(Sin(True)))
1443 Call ok(Approch(Sin(CByte(255)), -0.5063), "Sin(CByte(255)) = " & Sin(CByte(255)))
1444 Call ok(getVT(Sin(CByte(255))) = "VT_R8", "getVT(Sin(CByte(255))) = " & getVT(Sin(CByte(255))))
1446 Call ok(Approch(Tan(Empty), 0), "Tan(Empty) = " & Tan(Empty))
1447 Call ok(getVT(Tan(Empty)) = "VT_R8", "getVT(Tan(Empty)) = " & getVT(Tan(Empty)))
1448 Call ok(Approch(Tan(PI / 6), Sqr(3) / 3), "Tan(PI / 6) = " & Tan(PI / 6))
1449 Call ok(getVT(Tan(PI / 6)) = "VT_R8", "getVT(Tan(PI / 6)) = " & getVT(Tan(PI / 6)))
1450 Call ok(Approch(Tan(CCur(PI / 4)), 1), "Tan(CCur(PI / 4)) = " & Tan(CCur(PI / 4)))
1451 Call ok(getVT(Tan(CCur(PI / 4))) = "VT_R8", "getVT(Tan(CCur(PI / 4))) = " & getVT(Tan(CCur(PI / 4))))
1452 Call ok(Approch(Tan(CSng(PI / 3)), Sqr(3)), "Tan(CSng(PI / 3)) = " & Tan(CSng(PI / 3)))
1453 Call ok(getVT(Tan(CSng(PI / 3))) = "VT_R8", "getVT(Tan(CSng(PI))) = " & getVT(Tan(CSng(PI))))
1454 Call ok(Approch(Tan(PI), 0), "Tan(PI) = " & Tan(PI))
1455 Call ok(getVT(Tan(PI)) = "VT_R8", "getVT(Tan(PI)) = " & getVT(Tan(PI)))
1456 Call ok(Approch(Tan(3 * PI / 4), -1), "Tan(3 * PI / 4) = " & Tan(3 * PI / 4))
1457 Call ok(getVT(Tan(3 * PI / 4)) = "VT_R8", "getVT(Tan(3 * PI / 4)) = " & getVT(Tan(3 * PI / 4)))
1458 Call ok(Approch(Tan(5 * PI / 4), 1), "Tan(5 * PI / 4) = " & Tan(5 * PI / 4))
1459 Call ok(getVT(Tan(5 * PI / 4)) = "VT_R8", "getVT(Tan(5 * PI / 4)) = " & getVT(Tan(5 * PI / 4)))
1460 Call ok(Approch(Tan(2 * PI), 0), "Tan(2 * PI) = " & Tan(2 * PI))
1461 Call ok(getVT(Tan(2 * PI)) = "VT_R8", "getVT(Tan(2 * PI)) = " & getVT(Tan(2 * PI)))
1462 Call ok(Approch(Tan("-32768"), -2.4879), "Tan(""-32768"") = " & Tan("-32768"))
1463 Call ok(getVT(Tan("-32768")) = "VT_R8", "getVT(Tan(""-32768"")) = " & getVT(Tan("-32768")))
1464 Call ok(Approch(Tan(False), 0), "Tan(False) = " & Tan(False))
1465 Call ok(getVT(Tan(False)) = "VT_R8", "getVT(Tan(False)) = " & getVT(Tan(False)))
1466 Call ok(Approch(Tan(True), -1.5574), "Tan(True) = " & Tan(True))
1467 Call ok(getVT(Tan(True)) = "VT_R8", "getVT(Tan(True)) = " & getVT(Tan(True)))
1468 Call ok(Approch(Tan(CByte(255)), 0.5872), "Tan(CByte(255)) = " & Tan(CByte(255)))
1469 Call ok(getVT(Tan(CByte(255))) = "VT_R8", "getVT(Tan(CByte(255))) = " & getVT(Tan(CByte(255))))
1471 Call ok(Approch(Atn(Empty), 0), "Atn(Empty) = " & Atn(Empty))
1472 Call ok(getVT(Atn(Empty)) = "VT_R8", "getVT(Atn(Empty)) = " & getVT(Atn(Empty)))
1473 Call ok(Approch(Atn(Sqr(3) / 3), PI / 6), "Atn(Sqr(3) / 3) = " & Atn(Sqr(3) / 3))
1474 Call ok(getVT(Atn(Sqr(3) / 3)) = "VT_R8", "getVT(Atn(Sqr(3) / 3)) = " & getVT(Atn(Sqr(3) / 3)))
1475 Call ok(Approch(Atn(CCur(1)), PI / 4), "Atn(CCur(1)) = " & Atn(CCur(1)))
1476 Call ok(getVT(Atn(CCur(1))) = "VT_R8", "getVT(Atn(CCur(1))) = " & getVT(Atn(CCur(1))))
1477 Call ok(Approch(Atn(CSng(Sqr(3))), PI / 3), "Atn(CSng(Sqr(3))) = " & Atn(CSng(Sqr(3))))
1478 Call ok(getVT(Atn(CSng(Sqr(3)))) = "VT_R8", "getVT(Atn(CSng(PI))) = " & getVT(Atn(CSng(PI))))
1479 Call ok(Approch(Atn(0), 0), "Atn(0) = " & Atn(0))
1480 Call ok(getVT(Atn(0)) = "VT_R8", "getVT(Atn(0)) = " & getVT(Atn(0)))
1481 Call ok(Approch(Atn(-1), -PI / 4), "Atn(-1) = " & Atn(-1))
1482 Call ok(getVT(Atn(-1)) = "VT_R8", "getVT(Atn(-1)) = " & getVT(Atn(-1)))
1483 Call ok(Approch(Atn("-32768"), -1.5707), "Atn(""-32768"") = " & Atn("-32768"))
1484 Call ok(getVT(Atn("-32768")) = "VT_R8", "getVT(Atn(""-32768"")) = " & getVT(Atn("-32768")))
1485 Call ok(Approch(Atn(False), 0), "Atn(False) = " & Atn(False))
1486 Call ok(getVT(Atn(False)) = "VT_R8", "getVT(Atn(False)) = " & getVT(Atn(False)))
1487 Call ok(Approch(Atn(True), -0.7853), "Atn(True) = " & Atn(True))
1488 Call ok(getVT(Atn(True)) = "VT_R8", "getVT(Atn(True)) = " & getVT(Atn(True)))
1489 Call ok(Approch(Atn(CByte(255)), 1.5668), "Atn(CByte(255)) = " & Atn(CByte(255)))
1490 Call ok(getVT(Atn(CByte(255))) = "VT_R8", "getVT(Atn(CByte(255))) = " & getVT(Atn(CByte(255))))
1492 Call ok(Approch(Exp(Empty), 1), "Exp(Empty) = " & Exp(Empty))
1493 Call ok(getVT(Exp(Empty)) = "VT_R8", "getVT(Exp(Empty)) = " & getVT(Exp(Empty)))
1494 Call ok(Approch(Exp(1), 2.7182), "Exp(1) = " & Exp(1))
1495 Call ok(getVT(Exp(1)) = "VT_R8", "getVT(Exp(1)) = " & getVT(Exp(1)))
1496 Call ok(Approch(Exp(CCur(-1)), 0.3678), "Exp(CCur(-1)) = " & Exp(CCur(-1)))
1497 Call ok(getVT(Exp(CCur(-1))) = "VT_R8", "getVT(Exp(CCur(-1))) = " & getVT(Exp(CCur(-1))))
1498 Call ok(Approch(Exp(CSng(0.5)), 1.6487), "Exp(CSng(0.5)) = " & Exp(CSng(0.5)))
1499 Call ok(getVT(Exp(CSng(0.5))) = "VT_R8", "getVT(Exp(CSng(PI))) = " & getVT(Exp(CSng(PI))))
1500 Call ok(Approch(Exp(-0.5), 0.6065), "Exp(-0.5) = " & Exp(-0.5))
1501 Call ok(getVT(Exp(-0.5)) = "VT_R8", "getVT(Exp(-0.5)) = " & getVT(Exp(-0.5)))
1502 Call ok(Approch(Exp("-2"), 0.1353), "Exp(""-2"") = " & Exp("-2"))
1503 Call ok(getVT(Exp("-2")) = "VT_R8", "getVT(Exp(""-2"")) = " & getVT(Exp("-2")))
1504 Call ok(Approch(Exp(False), 1), "Exp(False) = " & Exp(False))
1505 Call ok(getVT(Exp(False)) = "VT_R8", "getVT(Exp(False)) = " & getVT(Exp(False)))
1506 Call ok(Approch(Exp(True), 0.3678), "Exp(True) = " & Exp(True))
1507 Call ok(getVT(Exp(True)) = "VT_R8", "getVT(Exp(True)) = " & getVT(Exp(True)))
1508 Call ok(Approch(Exp(CByte(2)), 7.389), "Exp(CByte(2)) = " & Exp(CByte(2)))
1509 Call ok(getVT(Exp(CByte(2))) = "VT_R8", "getVT(Exp(CByte(2))) = " & getVT(Exp(CByte(2))))
1511 Sub testLogError(strings, error_num1, error_num2)
1512 on error resume next
1513 Dim x
1515 Call Err.clear()
1516 x = Log(strings)
1517 Call ok(Err.number = error_num1, "Err.number1 = " & Err.number)
1519 Call Err.clear()
1520 Call Log(strings)
1521 Call ok(Err.number = error_num2, "Err.number2 = " & Err.number)
1522 End Sub
1524 Call testLogError(0, 5, 5)
1525 Call testLogError(-2, 5, 5)
1526 Call testLogError(False, 5, 5)
1527 Call testLogError(True, 5, 5)
1528 Call ok(Approch(Log(1), 0), "Log(1) = " & Log(1))
1529 Call ok(getVT(Log(1)) = "VT_R8", "getVT(Log(1)) = " & getVT(Log(1)))
1530 Call ok(Approch(Log(CCur(0.5)), -0.6931), "Log(CCur(0.5)) = " & Log(CCur(0.5)))
1531 Call ok(getVT(Log(CCur(0.5))) = "VT_R8", "getVT(Log(CCur(0.5))) = " & getVT(Log(CCur(0.5))))
1532 Call ok(Approch(Log(CSng(2.7182)), 1), "Log(CSng(2.7182)) = " & Log(CSng(2.7182)))
1533 Call ok(getVT(Log(CSng(2.7182))) = "VT_R8", "getVT(Log(CSng(PI))) = " & getVT(Log(CSng(PI))))
1534 Call ok(Approch(Log(32768), 10.3972), "Log(32768) = " & Log(32768))
1535 Call ok(getVT(Log(32768)) = "VT_R8", "getVT(Log(32768)) = " & getVT(Log(32768)))
1536 Call ok(Approch(Log("10"), 2.3025), "Log(""10"") = " & Log("10"))
1537 Call ok(getVT(Log("10")) = "VT_R8", "getVT(Log(""10"")) = " & getVT(Log("10")))
1538 Call ok(Approch(Log(CByte(2)), 0.6931), "Log(CByte(2)) = " & Log(CByte(2)))
1539 Call ok(getVT(Log(CByte(2))) = "VT_R8", "getVT(Log(CByte(2))) = " & getVT(Log(CByte(2))))
1541 Call ok(getVT(Date) = "VT_DATE", "getVT(Date) = " & getVT(Date))
1542 Call ok(getVT(Time) = "VT_DATE", "getVT(Time) = " & getVT(Time))
1544 Call ok(getVT(Day(now)) = "VT_I2", "getVT(Day(now)) = " & getVT(Day(now)))
1545 Call ok(Day(2) = 1, "Day(2) = " & Day(2))
1546 Call ok(getVT(Month(now)) = "VT_I2", "getVT(Month(now)) = " & getVT(Month(now)))
1547 Call ok(Month(2) = 1, "Month(2) = " & Month(2))
1548 Call ok(getVT(Year(now)) = "VT_I2", "getVT(Year(now)) = " & getVT(Year(now)))
1549 Call ok(Year(2) = 1900, "Year(2) = " & Year(2))
1550 Call ok(getVT(Hour(now)) = "VT_I2", "getVT(Hour(now)) = " & getVT(Hour(now)))
1551 Call ok(Hour(2) = 0, "Hour(2) = " & Hour(2))
1552 Call ok(Hour(2.75) = 18, "Hour(2) = " & Hour(2.75))
1553 Call ok(getVT(Minute(now)) = "VT_I2", "getVT(Minute(now)) = " & getVT(Minute(now)))
1554 Call ok(Minute(2) = 0, "Minute(2) = " & Minute(2))
1555 Call ok(Minute(2.02083) = 30, "Minute(2.02083) = " & Minute(2.02083))
1556 Call ok(getVT(Second(now)) = "VT_I2", "getVT(Second(now)) = " & getVT(Second(now)))
1557 Call ok(Second(2) = 0, "Second(2) = " & Second(2))
1559 Sub testRGBError(arg1, arg2, arg3, error_num)
1560 on error resume next
1561 Dim x
1563 Call Err.clear()
1564 x = RGB(arg1, arg2, arg3)
1565 Call ok(Err.number = error_num, "Err.number1 = " & Err.number)
1567 Call Err.clear()
1568 Call RGB(arg1, arg2, arg3)
1569 Call ok(Err.number = error_num, "Err.number2 = " & Err.number)
1570 End Sub
1572 Call ok(RGB(0, &h1f&, &hf1&) = &hf11f00&, "RGB(0, &h1f&, &hf1&) = " & RGB(0, &h1f&, &hf1&))
1573 Call ok(getVT(RGB(0, &h1f&, &hf1&)) = "VT_I4", "getVT(RGB(&hf1&, &h1f&, &hf1&)) = " & getVT(RGB(&hf1&, &h1f&, &hf1&)))
1574 Call ok(RGB(&hef&, &hab&, &hcd&) = &hcdabef&, "RGB(&hef&, &hab&, &hcd&) = " & RGB(&hef&, &hab&, &hcd&))
1575 Call ok(getVT(RGB(&hef&, &hab&, &hcd&)) = "VT_I4", "getVT(RGB(&hef&, &hab&, &hcd&)) = " & getVT(RGB(&hef&, &hab&, &hcd&)))
1576 Call ok(RGB(&h1&, &h100&, &h111&) = &hffff01&, "RGB(&h1&, &h100&, &h111&) = " & RGB(&h1&, &h100&, &h111&))
1577 Call ok(getVT(RGB(&h1&, &h100&, &h111&)) = "VT_I4", "getVT(RGB(&h1&, &h100&, &h111&)) = " & getVT(RGB(&h1&, &h100&, &h111&)))
1578 Call testRGBError(-1, &h1e&, &h3b&, 5)
1579 Call testRGBError(&h4d&, -2, &h2f&, 5)
1581 Call ok(getVT(Timer) = "VT_R4", "getVT(Timer) = " & getVT(Timer))
1583 sub testAsc(arg, expected)
1584 dim x
1585 x = Asc(arg)
1586 call ok(x = expected, "x = " & x & " expected " & expected)
1587 call ok(getVT(x) = "VT_I2*", "getVT = " & getVT(x))
1588 end sub
1590 sub testAscError()
1591 on error resume next
1592 call Err.clear()
1593 call Asc(null)
1594 Call ok(Err.number = 94, "Err.number = " & Err.number)
1595 call Err.clear()
1596 call Asc(empty)
1597 Call ok(Err.number = 5, "Err.number = " & Err.number)
1598 call Err.clear()
1599 call Asc()
1600 Call ok(Err.number = 450, "Err.number = " & Err.number)
1601 call Err.clear()
1602 call Asc(Chr(260)) ' some versions of vista allow it
1603 Call ok(Err.number = 5 or Err.number = 0, "asc4 Err.number = " & Err.number)
1604 call Err.clear()
1605 call Asc("")
1606 Call ok(Err.number = 5, "Err.number = " & Err.number)
1607 end sub
1609 call testAsc("T", 84)
1610 call testAsc("test", 116)
1611 call testAsc("3", 51)
1612 call testAsc(3, 51)
1613 call testAsc(" ", 32)
1614 call testAsc(Chr(255), 255)
1615 call testAsc(Chr(0), 0)
1616 if isEnglishLang then testAsc true, 84
1617 call testAscError()
1619 sub testErrNumber(n)
1620 call ok(err.number = n, "err.number = " & err.number & " expected " & n)
1621 end sub
1623 sub testErrRaise()
1624 on error resume next
1625 call ok(err.number = 0, "err.number = " & err.number)
1626 err.raise 1
1627 call ok(err.number = 1, "err.number = " & err.number)
1628 err.raise
1629 call ok(err.number = 450, "err.number = " & err.number)
1630 call testErrNumber(450)
1631 err.raise &h10000&
1632 call ok(err.number = 5, "err.number = " & err.number)
1634 err.clear
1635 call ok(getVT(err.source) = "VT_BSTR", "err.source = " & err.source)
1636 call ok(getVT(err.description) = "VT_BSTR", "err.description = " & err.description)
1637 call ok(getVT(err.helpfile) = "VT_BSTR", "err.helpfile = " & err.helpfile)
1638 call ok(getVT(err.helpcontext) = "VT_I4", "err.helpcontext = " & err.helpcontext)
1639 call ok(err.source = "", "err.source = " & err.source)
1640 call ok(err.description = "", "err.description = " & err.description)
1641 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1642 call ok(err.helpcontext = 0, "err.helpcontext = " & err.helpcontext)
1644 err.raise 1, "abc"
1645 call ok(err.number = 1, "err.number = " & err.number)
1646 call ok(err.source = "abc", "err.source = " & err.source)
1647 if isEnglishLang then call ok(err.description = "Unknown runtime error", "err.description = " & err.description)
1648 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1650 err.raise 1, 2, "desc", "hf", 1
1651 call ok(err.number = 1, "err.number = " & err.number)
1652 call ok(getVT(err.source) = "VT_BSTR", "err.source = " & err.source)
1653 call ok(err.source = "2", "err.source = " & err.source)
1654 call ok(err.description = "desc", "err.description = " & err.description)
1655 call ok(err.helpfile = "hf", "err.helpfile = " & err.helpfile)
1656 call ok(getVT(err.helpcontext) = "VT_I4", "err.helpcontext = " & err.helpcontext)
1657 call ok(err.helpcontext = 1, "err.helpcontext = " & err.helpcontext)
1659 err.raise 5
1660 call ok(err.number = 5, "err.number = " & err.number)
1661 call ok(err.source = "2", "err.source = " & err.source)
1662 call ok(err.description = "desc", "err.description = " & err.description)
1663 call ok(err.helpfile = "hf", "err.helpfile = " & err.helpfile)
1664 call ok(getVT(err.helpcontext) = "VT_I4", "err.helpcontext = " & err.helpcontext)
1665 call ok(err.helpcontext = 1, "err.helpcontext = " & err.helpcontext)
1667 err.clear
1668 err.raise &h8007000E&
1669 call ok(err.number = 7, "err.number = " & err.number)
1670 if isEnglishLang then call ok(err.source = "Microsoft VBScript runtime error", "err.source = " & err.source)
1671 if isEnglishLang then call ok(err.description = "Out of memory", "err.description = " & err.description)
1672 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1673 call ok(err.helpcontext = 0, "err.helpcontext = " & err.helpcontext)
1675 err.clear
1676 err.raise 1, "test"
1677 err.raise &h8007000E&
1678 call ok(err.number = 7, "err.number = " & err.number)
1679 call ok(err.source = "test", "err.source = " & err.source)
1680 if isEnglishLang then call ok(err.description = "Unknown runtime error", "err.description = " & err.description)
1681 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1682 call ok(err.helpcontext = 0, "err.helpcontext = " & err.helpcontext)
1684 err.raise 1, 2, "desc", "hf", 1
1685 err.unknownIdent
1686 call ok(err.number = 438, "err.number = " & err.number)
1687 if isEnglishLang then call ok(err.source = "Microsoft VBScript runtime error", "err.source = " & err.source)
1688 if isEnglishLang then call ok(err.description = "Object doesn't support this property or method", _
1689 "err.description = " & err.description)
1690 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1691 call ok(err.helpcontext = 0, "err.helpcontext = " & err.helpcontext)
1693 e = err
1694 call ok(getVT(e) = "VT_I4*", "getVT(e) = " & getVT(e))
1695 call ok(e = 438, "e = " & e)
1697 err.raise 1, 2, "desc", "hf", 1
1698 on error goto 0
1699 call ok(err.number = 0, "err.number = " & err.number)
1700 call ok(err.source = "", "err.source = " & err.source)
1701 call ok(err.description = "", "err.description = " & err.description)
1702 call ok(err.helpfile = "", "err.helpfile = " & err.helpfile)
1703 call ok(err.helpcontext = 0, "err.helpcontext = " & err.helpcontext)
1705 dim e
1706 e = err
1707 call ok(getVT(e) = "VT_I4*", "getVT(e) = " & getVT(e))
1708 call ok(e = 0, "e = " & e)
1709 end sub
1710 call testErrRaise()
1712 Call reportSuccess()