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
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
))
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
))
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
))
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
)
123 Call ok(getVT(x
) = "VT_BSTR*", "getVT(x) = " & getVT(x
))
124 Call ok(x
= exval
, "CStr(" & arg
& ") = " & x
)
127 TestCStr
"test", "test"
129 if isEnglishLang
then TestCStr
3.5, "3.5"
130 if isEnglishLang
then TestCStr
true, "True"
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
)
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"))
153 if MaxCharSize
= 1 then
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
)
161 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
165 call ok(Err
.number
= 0, "Err.number = " & Err
.number
)
168 call ok(Err
.number
= 0, "Err.number = " & Err
.number
)
173 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
177 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
182 Call ok(isObject(new EmptyClass
), "isObject(new EmptyClass) is not true?")
183 Set x
= new EmptyClass
184 Call ok(isObject(x
), "isObject(x) is not true?")
185 Call ok(isObject(Nothing), "isObject(Nothing) is not true?")
186 Call ok(not isObject(true), "isObject(true) is true?")
187 Call ok(not isObject(4), "isObject(4) is true?")
188 Call ok(not isObject("x"), "isObject(""x"") is true?")
189 Call ok(not isObject(Null
), "isObject(Null) is true?")
191 Call ok(not isDate(new EmptyClass
), "isDate(new EmptyClass) is true?")
192 Set x
= new EmptyClass
193 Call ok(not isDate(x
), "isDate(x) is true?")
195 Call ok(isDate(x
), "isDate(x) is not true?")
196 Call ok(isDate(#
1/1/2000#
), "isDate(#1/1/2000#) is not true?")
197 Call ok(not isDate(empty
), "isDate(empty) is true?")
198 Call ok(not isDate(Nothing), "isDate(Nothing) is true?")
199 Call ok(not isDate(true), "isDate(true) is true?")
200 Call ok(not isDate(4), "isDate(4) is true?")
201 Call ok(not isDate("4"), "isDate(""4"") is true?")
202 Call ok(not isDate("x"), "isDate(""x"") is true?")
203 Call ok(not isDate(Null
), "isDate(Null) is true?")
205 Call ok(not isEmpty(new EmptyClass
), "isEmpty(new EmptyClass) is true?")
206 Set x
= new EmptyClass
207 Call ok(not isEmpty(x
), "isEmpty(x) is true?")
209 Call ok(isEmpty(x
), "isEmpty(x) is not true?")
210 Call ok(isEmpty(empty
), "isEmpty(empty) is not true?")
211 Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?")
212 Call ok(not isEmpty(true), "isEmpty(true) is true?")
213 Call ok(not isEmpty(4), "isEmpty(4) is true?")
214 Call ok(not isEmpty("x"), "isEmpty(""x"") is true?")
215 Call ok(not isEmpty(Null
), "isEmpty(Null) is true?")
217 Call ok(not isNull(new EmptyClass
), "isNull(new EmptyClass) is true?")
218 Set x
= new EmptyClass
219 Call ok(not isNull(x
), "isNull(x) is true?")
221 Call ok(isNull(x
), "isNull(x) is not true?")
222 Call ok(not isNull(empty
), "isNull(empty) is true?")
223 Call ok(not isNull(Nothing), "isNull(Nothing) is true?")
224 Call ok(not isNull(true), "isNull(true) is true?")
225 Call ok(not isNull(4), "isNull(4) is true?")
226 Call ok(not isNull("x"), "isNull(""x"") is true?")
227 Call ok(isNull(Null
), "isNull(Null) is not true?")
229 Call ok(isNumeric(Empty
), "isNumeric(empty) is not true?")
230 Call ok(not isNumeric(Null
), "isNumeric(Null) is not true?")
231 Call ok(isNumeric(32767), "isNumeric(32767) is true?")
232 Call ok(isNumeric(32768), "isNumeric(32768) is true?")
233 Call ok(isNumeric(CSng(3242.4)), "isNumeric(CSng(3242.4)) is true?")
234 Call ok(isNumeric(32768.4), "isNumeric(32768.4) is true?")
235 Call ok(isNumeric(CCur(32768.4)), "isNumeric(CCur(32768.4)) is true?")
236 Call ok(isNumeric("44"), "isNumeric(""44"") is true?")
237 Call ok(not isNumeric("rwrf"), "isNumeric(""rwrf"") is not true?")
238 Call ok(not isNumeric(Nothing), "isNumeric(Nothing) is not true?")
239 Call ok(not isNumeric(New EmptyClass
), "isNumeric(New EmptyClass) is not true?")
240 Call ok(isNumeric(true), "isNumeric(true) is true?")
241 Call ok(isNumeric(CByte(32)), "isNumeric(CByte(32)) is true?")
245 Call ok(not isNumeric(arr
), "isNumeric(arr) is not true?")
247 Call ok(isArray(arr
), "isArray(arr) is not true?")
249 Call ok(isArray(arr
), "isArray(Array()) is not true?")
250 Call ok(not isArray(Empty
), "isArray(empty) is true?")
251 Call ok(not isArray(Null
), "isArray(Null) is true?")
252 Call ok(not isArray(42), "isArray(42) is true?")
253 Call ok(not isArray(CSng(3242.4)), "isArray(CSng(3242.4)) is true?")
254 Call ok(not isArray(CCur(32768.4)), "isArray(CCur(32768.4)) is true?")
255 Call ok(not isArray("44"), "isArray(""44"") is true?")
256 Call ok(not isArray("rwrf"), "isArray(""rwrf"") is true?")
257 Call ok(not isArray(Nothing), "isArray(Nothing) is true?")
258 Call ok(not isArray(New EmptyClass
), "isArray(New EmptyClass) is true?")
259 Call ok(not isArray(true), "isArray(true) is true?")
260 Call ok(not isArray(CByte(32)), "isArray(CByte(32)) is true?")
262 Call ok(getVT(Array()) = "VT_ARRAY|VT_VARIANT", "getVT(Array()) = " & getVT(Array()))
263 x
= Array("a1", 2, "a3")
264 Call ok(getVT(x
) = "VT_ARRAY|VT_VARIANT*", "getVT(array) = " & getVT(x
))
265 Call ok(getVT(x(0)) = "VT_BSTR*", "getVT(array(0)) = " & getVT(x(0)))
266 Call ok(x(0) = "a1", "array(0) = " & x(0))
267 Call ok(getVT(x(1)) = "VT_I2*", "getVT(array(1)) = " & getVT(x(1)))
268 Call ok(x(1) = 2, "array(1) = " & x(1))
269 Call ok(getVT(x(2)) = "VT_BSTR*", "getVT(array(2)) = " & getVT(x(2)))
270 Call ok(x(2) = "a3", "array(2) = " & x(2))
275 Call ok(new_array(0) = "a1", "new_array(0) = " & new_array(0))
277 Call ok(getVT(UBound(x
)) = "VT_I4", "getVT(UBound(x)) = " & getVT(UBound(x
)))
278 Call ok(UBound(x
) = 2, "UBound(x) = " & UBound(x
))
279 Call ok(getVT(UBound(x
, 1)) = "VT_I4", "getVT(UBound(x, 1)) = " & getVT(UBound(x
, 1)))
280 Call ok(UBound(x
, 1) = 2, "UBound(x) = " & UBound(x
, 1))
282 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)
283 ok
x(1) = 2, "x(1) = " & x(1)
284 ok
x(32) = 33, "x(32) = " & x(32)
285 ok
ubound(x
) = 32, "ubound(x) = " & ubound(x
)
288 Call ok(UBound(arr2
) = 2, "UBound(x) = " & UBound(x
))
289 Call ok(UBound(arr2
, 1) = 2, "UBound(x) = " & UBound(x
))
290 Call ok(UBound(arr2
, 2) = 4, "UBound(x) = " & UBound(x
))
291 Call ok(Lbound(arr2
) = 0, "Lbound(x) = " & Lbound(x
))
292 Call ok(Lbound(arr2
, 1) = 0, "Lbound(x) = " & Lbound(x
))
293 Call ok(Lbound(arr2
, 2) = 0, "Lbound(x) = " & Lbound(x
))
295 sub testLBoundError()
299 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
302 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
305 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
307 call LBound(arr
, 1, 2)
308 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
309 if isEnglishLang
then call ok(Err
.description
= "Wrong number of arguments or invalid property assignment", _
310 "Err.description = " & Err
.description
)
313 sub testUBoundError()
317 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
320 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
323 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
325 call UBound(arr
, 1, 2)
326 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
327 if isEnglishLang
then call ok(Err
.description
= "Wrong number of arguments or invalid property assignment", _
328 "Err.description = " & Err
.description
)
331 call testLBoundError()
332 call testUBoundError()
335 Set newObject
= New ValClass
337 Call ok(isNumeric(newObject
), "isNumeric(newObject) is true?")
338 newObject
.myval
= "test"
339 Call ok(not isNumeric(newObject
), "isNumeric(newObject) is not true?")
341 Call ok(getVT(err
) = "VT_DISPATCH", "getVT(err) = " & getVT(err
))
344 Call ok(hex(x
) = ex
, "hex(" & x
& ") = " & hex(x
) & " expected " & ex
)
350 TestHex
&hdeadbeef
&, "DEADBEEF"
353 TestHex
-934859845, "C8472BBB"
357 TestHex
-32767, "8001"
358 TestHex
-32768, "FFFF8000"
359 TestHex
2147483647.49, "7FFFFFFF"
360 TestHex
-2147483647.5, "80000000"
361 newObject
.myval
= 30.5
362 TestHex newObject
, "1E"
363 newObject
.myval
= "27"
364 TestHex newObject
, "1B"
367 Call ok(getVT(hex(null
)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null
)))
368 Call ok(getVT(hex(empty
)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty
)))
370 Sub TestHexError(num
, err_num
)
373 Call ok(Err
.number
= err_num
, "Hex(" & num
& ") returns error number " & Err
.number
& " expected " & err_num
)
376 TestHexError
2147483647.5, 6
377 TestHexError
2147483648.51, 6
378 TestHexError
"test", 13
380 Sub TestOct(x
, ex
, res_type
)
381 Call ok(Oct(x
) = ex
, "Oct(" & x
& ") = " & Oct(x
) & " expected " & ex
)
382 Call ok(getVT(Oct(x
)) = res_type
, "getVT(Oct(" &x
& ")) = " & getVT(Oct(x
)) & "expected " & res_type
)
385 Sub TestOctError(num
, err_num
)
388 Call ok(Err
.number
= err_num
, "Oct(" & num
& ") error number is " & Err
.number
& " expected " & err_num
)
391 TestOct empty
, "0", "VT_BSTR"
392 TestOct
0, "0", "VT_BSTR"
393 TestOct
9, "11", "VT_BSTR"
394 TestOct
"9", "11", "VT_BSTR"
395 TestOct
8.5, "10", "VT_BSTR"
396 TestOct
9.5, "12", "VT_BSTR"
397 TestOct
-1, "177777", "VT_BSTR"
398 TestOct
-32767, "100001", "VT_BSTR"
399 TestOct
-32768, "37777700000", "VT_BSTR"
400 TestOct
2147483647.49, "17777777777", "VT_BSTR"
401 TestOct
-2147483648.5, "20000000000", "VT_BSTR"
402 Call ok(getVT(Oct(null
)) = "VT_NULL", "getVT(Oct(null)) = " & getVT(Oct(null
)))
404 TestOct newObject
, "5", "VT_BSTR"
406 TestOctError
2147483647.5, 6
407 TestOctError
-2147483648.51, 6
408 TestOctError
"test", 13
410 x
= InStr(1, "abcd", "bc")
411 Call ok(x
= 2, "InStr returned " & x
)
413 x
= InStr("abcd", "bc")
414 Call ok(x
= 2, "InStr returned " & x
)
415 Call ok(getVT(x
) = "VT_I4*", "getVT(InStr) returned " & getVT(x
))
417 x
= InStr("abc", "bc")
418 Call ok(x
= 2, "InStr returned " & x
)
420 x
= InStr("abcbc", "bc")
421 Call ok(x
= 2, "InStr returned " & x
)
423 x
= InStr("bcabc", "bc")
424 Call ok(x
= 1, "InStr returned " & x
)
426 x
= InStr(3, "abcd", "bc")
427 Call ok(x
= 0, "InStr returned " & x
)
429 x
= InStr("abcd", "bcx")
430 Call ok(x
= 0, "InStr returned " & x
)
432 x
= InStr(5, "abcd", "bc")
433 Call ok(x
= 0, "InStr returned " & x
)
437 Call ok(x
= 2, "InStr returned " & x
)
439 x
= InStr("abcd", null
)
440 Call ok(isNull(x
), "InStr returned " & x
)
441 x
= InStr(null
, "abcd")
442 Call ok(isNull(x
), "InStr returned " & x
)
443 x
= InStr(2, null
, "abcd")
444 Call ok(isNull(x
), "InStr returned " & x
)
446 x
= InStr(1.3, "abcd", "bc")
447 Call ok(x
= 2, "InStr returned " & x
)
449 x
= InStr(2.3, "abcd", "bc")
450 Call ok(x
= 2, "InStr returned " & x
)
452 x
= InStr(2.6, "abcd", "bc")
453 Call ok(x
= 0, "InStr returned " & x
)
455 x
= InStr(3, "abcdefgh", "fg", 0)
456 Call ok(x
= 6, "InStr returned " & x
)
458 x
= InStr(3, "abcdefgh", "FG", 0)
459 Call ok(x
= 0, "InStr returned " & x
)
461 x
= InStr(3, "abcdefgh", "FG", 1)
462 Call ok(x
= 6, "InStr returned " & x
)
464 x
= InStr(3, "abcdefgh", "FG", 1.4)
465 Call ok(x
= 6, "InStr returned " & x
)
467 x
= InStr(3, "abcdefgh", "FG", -0.3)
468 Call ok(x
= 0, "InStr returned " & x
)
470 x
= InStr(1, "abcABC", "aB", 0)
471 Call ok(x
= 0, "InStr returned " & x
)
473 x
= InStr(1, "abcABC", "aB", 1)
474 Call ok(x
= 1, "InStr returned " & x
)
476 x
= InStr(2, "abcABC", "aB", 1)
477 Call ok(x
= 4, "InStr returned " & x
)
479 x
= InStr(5, "abcABC", "aB", 1)
480 Call ok(x
= 0, "InStr returned " & x
)
482 x
= InStr(2, "abcABC", "ab", 1)
483 Call ok(x
= 4, "InStr returned " & x
)
485 x
= InStr(6, "abcABC", "c", 1)
486 Call ok(x
= 6, "InStr returned " & x
)
488 x
= InStr(2, "abc" & Chr(0) & "A" & Chr(0) & "BC", "C", 0)
489 Call ok(x
= 8, "InStr returned " & x
)
491 x
= InStr(1, "abc" & Chr(0) & "ABC", Chr(0) & "a", 1)
492 Call ok(x
= 4, "InStr returned " & x
)
494 x
= InStr(1, 23456, 45, 0)
495 Call ok(x
= 3, "InStr returned " & x
)
497 x
= InStr(1, "23456", 34, 1)
498 Call ok(x
= 2, "InStr returned " & x
)
500 x
= InStr(2, "", "abcd", 0)
501 Call ok(x
= 0, "InStr returned " & x
)
503 x
= InStr(4, "abcdef", "", 0)
504 Call ok(x
= 4, "InStr returned " & x
)
506 x
= InStr(20, "abcdef", "", 0)
507 Call ok(x
= 0, "InStr returned " & x
)
509 x
= InStr(4, "", "", 0)
510 Call ok(x
= 0, "InStr returned " & x
)
512 Sub testInStrError(arg1
, arg2
, arg3
, arg4
, error_num
)
517 x
= InStr(arg1
, arg2
, arg3
, arg4
)
518 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
521 call testInStrError(2, "abcd", null
, 0, 0)
522 call testInStrError(2, Null
, "abcd", 0, 0)
523 call testInStrError(Null
, "abcd", "abcd", 0, 94)
524 call testInStrError(2, "abcd", "abcd", null
, 94)
525 call testInStrError(-20, "abcd", "abcd", 1, 5)
526 Call testInStrError(2, "abcd", "abcd", 10, 5)
529 x
= InStrRev("bcabcd", "bc")
530 Call ok(x
= 4, "InStrRev returned " & x
)
531 Call ok(getVT(x
) = "VT_I4*", "getVT(InStrRev) returned " & getVT(x
))
533 x
= InStrRev("bcabcd", "bc", 6)
534 Call ok(x
= 4, "InStrRev returned " & x
)
536 x
= InStrRev("abcd", "bcx")
537 Call ok(x
= 0, "InStrRev returned " & x
)
539 x
= InStrRev("abcd", "bc", 3)
540 Call ok(x
= 2, "InStrRev returned " & x
)
542 x
= InStrRev("abcd", "bc", 2)
543 Call ok(x
= 0, "InStrRev returned " & x
)
545 x
= InStrRev("abcd", "b", 2)
546 Call ok(x
= 2, "InStrRev returned " & x
)
548 x
= InStrRev("abcd", "bc", 5)
549 Call ok(x
= 0, "InStrRev returned " & x
)
551 x
= InStrRev("abcd", "bc", 15)
552 Call ok(x
= 0, "InStrRev returned " & x
)
555 x
= InStrRev(x
, "bc")
556 Call ok(x
= 2, "InStrRev returned " & x
)
558 x
= InStrRev("abcd", "bc", 1.3)
559 Call ok(x
= 0, "InStrRev returned " & x
)
561 x
= InStrRev("abcd", "bc", 2.3)
562 Call ok(x
= 0, "InStrRev returned " & x
)
564 x
= InStrRev("abcd", "bc", 2.6)
565 Call ok(x
= 2, "InStrRev returned " & x
)
567 x
= InStrRev("1234", 34)
568 Call ok(x
= 3, "InStrRev returned " & x
)
570 x
= InStrRev(1234, 34)
571 Call ok(x
= 3, "InStrRev returned " & x
)
573 x
= InStrRev("abcd", "A", 1, 0)
574 Call ok(x
= 0, "InStrRev returned " & x
)
576 x
= InStrRev("abcd", "A", 1, 1)
577 Call ok(x
= 1, "InStrRev returned " & x
)
579 x
= InStrRev("abcd", "Ab", 1, 1)
580 Call ok(x
= 0, "InStrRev returned " & x
)
582 x
= InStrRev("abcd", "Ab", -1, 1)
583 Call ok(x
= 1, "InStrRev returned " & x
)
585 x
= InStrRev("abcd", "cd", 3, 1)
586 Call ok(x
= 0, "InStrRev returned " & x
)
588 x
= InStrRev("abcd", "cd", 4, 1)
589 Call ok(x
= 3, "InStrRev returned " & x
)
591 x
= InStrRev("abcd", "cd", 5, 1)
592 Call ok(x
= 0, "InStrRev returned " & x
)
594 x
= InStrRev("abc" & Chr(0) & "A" & Chr(0) & "BC", "c", 8, 0)
595 Call ok(x
= 3, "InStrRev returned " & x
)
597 x
= InStrRev("abc" & Chr(0) & "ABC", Chr(0) & "a", 6, 1)
598 Call ok(x
= 4, "InStrRev returned " & x
)
600 x
= InStrRev("", "hi", 1, 0)
601 Call ok(x
= 0, "InStrRev returned " & x
)
603 x
= InStrRev("abcd", "", 3, 1)
604 Call ok(x
= 3, "InStrRev returned " & x
)
606 x
= InStrRev("", "", 3, 0)
607 Call ok(x
= 0, "InStrRev returned " & x
)
609 Sub testInStrRevError(arg1
, arg2
, arg3
, arg4
, error_num
)
614 x
= InStrRev(arg1
, arg2
, arg3
, arg4
)
615 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
618 call testInStrRevError("abcd", null
, 2, 0, 94)
619 call testInStrRevError(null
, "abcd", 2, 0, 94)
620 call testInStrRevError("abcd", "abcd", null
, 0, 94)
621 call testInStrRevError("abcd", "abcd", 2, null
, 94)
622 call testInStrRevError("abcd", "abcd", -20, 1, 5)
623 Call testInStrRevError("abcd", "abcd", 2, 10, 5)
625 Sub TestMid(str
, start
, len
, ex
)
626 x
= Mid(str
, start
, len
)
627 Call ok(x
= ex
, "Mid(" & str
& ", " & start
& ", " & len
& ") = " & x
& " expected " & ex
)
630 Sub TestMid2(str
, start
, ex
)
632 Call ok(x
= ex
, "Mid(" & str
& ", " & start
& ") = " & x
& " expected " & ex
)
635 TestMid
"test", 2, 2, "es"
636 TestMid
"test", 2, 4, "est"
637 TestMid
"test", 1, 2, "te"
638 TestMid
"test", 1, 0, ""
639 TestMid
"test", 1, 0, ""
640 TestMid
"test", 5, 2, ""
641 TestMid
1234, 1, 2, "12"
642 TestMid
1234, 5, 2, ""
643 TestMid2
"test", 1, "test"
644 TestMid2
"test", 2, "est"
645 TestMid2
"test", 4, "t"
646 TestMid2
"test", 5, ""
652 call Mid("test", "a", 1)
653 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
655 call Mid("test", "a", null
)
656 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
658 call Mid("test", "a", empty
)
659 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
660 call Mid("test", 0, -1)
661 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
663 call Mid("test", -1, -1)
664 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
666 call Mid(null
, -1, -1)
667 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
669 call Mid("test", 0, null
)
670 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
672 call Mid("test", -1, null
)
673 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
675 call Mid("test", null
, 2)
676 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
678 call Mid("test", null
, -1)
679 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
681 call Mid(null
, -1, -1)
682 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
684 call Mid("test", empty
, 1)
685 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
687 call Mid("test", 0, empty
)
688 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
690 call Mid(empty
, 0, 0)
691 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
695 Sub TestUCase(str
, ex
)
697 Call ok(x
= ex
, "UCase(" & str
& ") = " & x
& " expected " & ex
)
700 TestUCase
"test", "TEST"
701 TestUCase
"123aBC?", "123ABC?"
704 if isEnglishLang
then TestUCase
true, "TRUE"
705 TestUCase
0.123, doubleAsString(0.123)
707 Call ok(getVT(UCase(Null
)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null
)))
709 Sub TestLCase(str
, ex
)
711 Call ok(x
= ex
, "LCase(" & str
& ") = " & x
& " expected " & ex
)
714 TestLCase
"test", "test"
715 TestLCase
"123aBC?", "123abc?"
718 if isEnglishLang
then TestLCase
true, "true"
719 TestLCase
0.123, doubleAsString(0.123)
721 Call ok(getVT(LCase(Null
)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null
)))
724 Call ok(x(0) = "abc", "Split(""abc"")(0)=" & x(0))
726 Call ok(x(0) = "abc", "Split(""abc def"")(0)=" & x(0))
727 Call ok(x(1) = "def", "Split(""abc def"")(1)=" & x(1))
728 x
= Split("abc def ghi")
729 Call ok(x(0) = "abc", "Split(""abc def ghi"")(0)=" & x(0))
730 Call ok(x(1) = "def", "Split(""abc def ghi"")(1)=" & x(1))
731 Call ok(x(2) = "ghi", "Split(""abc def ghi"")(2)=" & x(2))
732 x
= Split("abc def","")
733 Call ok(x(0) = "abc def", "Split(""abc def"","""")(0)=" & x(0))
734 x
= Split("abc-def","-")
735 Call ok(x(0) = "abc", "Split(""abc-def"",""-"")(0)=" & x(0))
736 Call ok(x(1) = "def", "Split(""abc-def"",""-"")(1)=" & x(1))
737 x
= Split("abc--def","-")
738 Call ok(x(0) = "abc", "Split(""abc--def"",""-"")(0)=" & x(0))
739 Call ok(x(1) = "", "Split(""abc--def"",""-"")(1)=" & x(1))
740 Call ok(x(2) = "def", "Split(""abc--def"",""-"")(2)=" & x(2))
741 x
= Split("abcdefghi","def")
742 Call ok(x(0) = "abc", "Split(""abcdefghi"",""def"")(0)=" & x(0))
743 Call ok(x(1) = "ghi", "Split(""abcdefghi"",""def"")(1)=" & x(1))
745 Call ok(x(0) = "12", "Split(""12345"",3)(0)=" & x(0))
746 Call ok(x(1) = "45", "Split(""12345"",3)(1)=" & x(1))
748 Call ok(x(0) = "1234", "Split(""12345"",5)(0)=" & x(0))
749 Call ok(x(1) = "", "Split(""12345"",5)(1)=" & x(1))
750 x
= Split("12345",12)
751 Call ok(x(0) = "", "Split(""12345"",12)(0)=" & x(0))
752 Call ok(x(1) = "345", "Split(""12345"",12)(1)=" & x(1))
753 x
= Split("abc-def-ghi","-")
754 Call ok(UBound(x
) = 2, "UBound(Split(""abc-def-ghi"",""-""))=" & UBound(x
))
755 x
= Split("a b c d e f g h i j k l m n o p q")
756 Call ok(UBound(x
) = 16, "UBound(Split(""a b c d e f g h i j k l m n o p q""))=" & UBound(x
))
757 x
= Split("abc-def-ghi","-",2)
758 Call ok(UBound(x
) = 1, "UBound(Split(""abc-def-ghi"",""-"",2))=" & UBound(x
))
759 x
= Split("abc-def-ghi","-",4)
760 Call ok(UBound(x
) = 2, "UBound(Split(""abc-def-ghi"",""-"",4))=" & UBound(x
))
761 x
= Split("abc-def-ghi","-",-1)
762 Call ok(UBound(x
) = 2, "UBound(Split(""abc-def-ghi"",""-"",-1))=" & UBound(x
))
763 x
= Split("abc-def-ghi","-",-1)
764 Call ok(UBound(x
) = 2, "UBound(Split(""abc-def-ghi"",""-"",-42))=" & UBound(x
))
765 x
= Split("abcZdefZghi","Z",3,0)
766 Call ok(UBound(x
) = 2, "UBound(Split(""abcZdefZghi"",""Z"",3,0))=" & UBound(x
))
767 x
= Split("abcZdefZghi","z",3,0)
768 Call ok(UBound(x
) = 0, "UBound(Split(""abcZdefZghi"",""z"",3,0))=" & UBound(x
))
769 x
= Split("abcZdefZghi","z",3,1)
770 Call ok(UBound(x
) = 2, "UBound(Split(""abcZdefZghi"",""z"",3,1))=" & UBound(x
))
772 Sub testSplitError(arg1
, arg2
, arg3
, arg4
, error_num
)
777 x
= Split(arg1
, arg2
, arg3
, arg4
)
778 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
781 call testSplitError("abc-def-ghi", "-", -1, 2, 5)
782 call testSplitError("abc-def-ghi", "-", -42, 0, 5)
783 call testSplitError(null
, "-", -1, 0, 94)
784 call testSplitError("abc-def-ghi", null
, -1, 0, 94)
785 call testSplitError("abc-def-ghi", "-", null
, 0, 94)
786 call testSplitError("abc-def-ghi", "-", -1, null
, 94)
788 Sub TestStrComp(str_left
, str_right
, mode
, ex
)
789 x
= StrComp(str_left
, str_right
, mode
)
790 Call ok(x
= ex
, "StrComp(" & str_left
& ", " & str_right
& ", " & mode
& ") = " & x
& " expected " & ex
)
793 TestStrComp
"ABC", "abc", 0, -1
794 TestStrComp
"abc", "ABC", 0, 1
795 TestStrComp
"ABC", "ABC", 0, 0
796 TestStrComp
"ABC", "abc", 0, -1
797 TestStrComp
"abc", "ABC", 0, 1
798 TestStrComp
"ABC", "ABC", 0, 0
799 TestStrComp
"ABCD", "ABC", 0, 1
800 TestStrComp
"ABC", "ABCD", 0, -1
801 TestStrComp
"ABC", "abc", 1, 0
802 TestStrComp
"ABC", "ABC", 1, 0
803 TestStrComp
"ABCD", "ABC", 1, 1
804 TestStrComp
"ABC", "ABCD", 1, -1
805 TestStrComp
"ABC", "ABCD", "0", -1
806 TestStrComp
"ABC", "ABCD", "1", -1
807 TestStrComp
1, 1, 1, 0
808 TestStrComp
"1", 1, 1, 0
809 TestStrComp
"1", 1.0, 1, 0
810 TestStrComp Empty
, Empty
, 1, 0
811 TestStrComp Empty
, "", 1, 0
812 TestStrComp Empty
, "ABC", 1, -1
813 TestStrComp
"ABC", Empty
, 1, 1
814 TestStrComp vbNull
, vbNull
, 1, 0
815 TestStrComp
"", vbNull
, 1, -1
817 sub testStrCompError()
821 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
823 call StrComp("a", "a", 0, 1)
824 call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
826 call testStrCompError()
828 Call ok(Len("abc") = 3, "Len(abc) = " & Len("abc"))
829 Call ok(Len("") = 0, "Len() = " & Len(""))
830 Call ok(Len(1) = 1, "Len(1) = " & Len(1))
831 Call ok(isNull(Len(null
)), "Len(null) = " & Len(null
))
832 Call ok(Len(empty
) = 0, "Len(empty) = " & Len(empty
))
833 Call ok(getVT(Len("abc")) = "VT_I4", "getVT(Len(abc)) = " & getVT(Len("abc")))
835 Call ok(Space(1) = " ", "Space(1) = " & Space(1) & """")
836 Call ok(Space(0) = "", "Space(0) = " & Space(0) & """")
837 Call ok(Space(false) = "", "Space(false) = " & Space(false) & """")
838 Call ok(Space(5) = " ", "Space(5) = " & Space(5) & """")
839 Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """")
840 Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """")
841 Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
842 Call ok(Space(4.5) = " ", "Space(4.5) = " & Space(4.5) & """")
843 Call ok(Space(0.5) = "", "Space(0.5) = " & Space(0.5) & """")
844 Call ok(Space(1.5) = " ", "Space(1.5) = " & Space(1.5) & """")
845 Call ok(Space("1") = " ", "Space(""1"") = " & Space("1") & """")
846 Call ok(Space(Empty
) = "", "Space(Empty) = " & Space(Empty
) & """")
852 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
855 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
858 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
860 call testSpaceError()
862 function strlength(s1
, s2
, s3
, s4
, s5
)
863 strlength
= Len(s1
& s2
& s3
& s4
& s5
)
865 Call ok(strlength(String(500, "a"), String(500, "b"), String(500, "c"), String(500, "d"), String(500, "e")) = 500*5, "strlength(...) = 500*5")
867 sub test_string(cnt
, char
, exp
)
868 call ok(String(cnt
, char
) = exp
, "String(" & cnt
& ", """ & char
& """ = """ & _
869 String(cnt
, char
) & """ expected """ & exp
& """")
872 test_string
3, "x", "xxx"
873 test_string
3, "xy", "xxx"
874 test_string
1, "z", "z"
875 test_string
0, "z", ""
876 test_string
"3", "xy", "xxx"
877 test_string
3, Chr(3), Chr(3)&Chr(3)&Chr(3)
879 call ok(getVT(String(0, "z")) = "VT_BSTR", "getVT(String(0,z)) = " & getVT(String(0, "z")))
881 sub test_string_error()
885 call ok(err
.number
= 5, "err.number = " & err
.number
)
888 call ok(err
.number
= 5, "err.number = " & err
.number
)
891 call ok(err
.number
= 5, "err.number = " & err
.number
)
893 call test_string_error
895 Sub TestStrReverse(str
, ex
)
896 Call ok(StrReverse(str
) = ex
, "StrReverse(" & str
& ") = " & StrReverse(str
))
899 TestStrReverse
"test", "tset"
900 TestStrReverse
"", ""
901 TestStrReverse
123, "321"
902 if isEnglishLang
then TestStrReverse
true, "eurT"
904 Sub TestLeft(str
, len
, ex
)
905 Call ok(Left(str
, len
) = ex
, "Left(" & str
& ", " & len
& ") = " & Left(str
, len
))
908 TestLeft
"test", 2, "te"
909 TestLeft
"test", 5, "test"
910 TestLeft
"test", 0, ""
911 TestLeft
123, 2, "12"
912 TestLeft
"123456", 1.5, "12"
913 TestLeft
"123456", 2.5, "12"
914 TestLeft
"test", "2", "te"
915 if isEnglishLang
then TestLeft
true, 2, "Tr"
917 Sub TestRight(str
, len
, ex
)
918 Call ok(Right(str
, len
) = ex
, "Right(" & str
& ", " & len
& ") = " & Right(str
, len
))
921 TestRight
"test", 2, "st"
922 TestRight
"test", 5, "test"
923 TestRight
"test", 0, ""
924 TestRight
123, 2, "23"
925 TestRight
"test", "3", "est"
926 TestRight
123, "2", "23"
927 TestRight empty
, 0, ""
928 TestRight empty
, 1, ""
929 TestRight
"test", empty
, ""
930 TestRight
"test", empty
, ""
931 if isEnglishLang
then TestRight
true, 2, "ue"
933 call ok(getVT(Right(null
, 0)) = "VT_NULL", "getVT(Right(null, 0)) = " & getVT(Right(null
, 0)))
934 call ok(getVT(Right(null
, 1)) = "VT_NULL", "getVT(Right(null, 1)) = " & getVT(Right(null
, 1)))
939 call Right("test", -1)
940 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
943 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
945 call Right("test", null
)
946 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
948 call TestRightError()
950 Sub TestTrim(str
, exstr
)
951 Call ok(Trim(str
) = exstr
, "Trim(" & str
& ") = " & Trim(str
))
954 TestTrim
" test ", "test"
955 TestTrim
"test ", "test"
956 TestTrim
" test", "test"
957 TestTrim
"test", "test"
960 if isEnglishLang
then TestTrim
true, "True"
962 Sub TestLTrim(str
, exstr
)
963 Call ok(LTrim(str
) = exstr
, "LTrim(" & str
& ") = " & LTrim(str
))
966 TestLTrim
" test ", "test "
967 TestLTrim
"test ", "test "
968 TestLTrim
" test", "test"
969 TestLTrim
"test", "test"
972 if isEnglishLang
then TestLTrim
true, "True"
974 Sub TestRTrim(str
, exstr
)
975 Call ok(RTrim(str
) = exstr
, "RTrim(" & str
& ") = " & RTrim(str
))
978 TestRTrim
" test ", " test"
979 TestRTrim
"test ", "test"
980 TestRTrim
" test", " test"
981 TestRTrim
"test", "test"
984 if isEnglishLang
then TestRTrim
true, "True"
987 sub test_replace(str
, find
, rep
, exp
)
989 r
= Replace(str
, find
, rep
)
990 ok r
= exp
, "Replace(""" & str
& """, """ & find
& """, """ & rep
& """) = """ & _
991 r
& """ expected """ & exp
& """"
994 sub test_replace_from(str
, find
, rep
, from
, exp
)
996 r
= Replace(str
, find
, rep
, from
)
997 ok r
= exp
, "Replace(""" & str
& """, """ & find
& """, """ & rep
& """, " & from
& ") = """ & _
998 r
& """ expected """ & exp
& """"
1001 sub test_replace_cnt(str
, find
, rep
, from
, cnt
, exp
)
1003 r
= Replace(str
, find
, rep
, from
, cnt
)
1004 ok r
= exp
, "Replace(""" & str
& """, """ & find
& """, """ & rep
& """, " & from
& ", " & cnt
& ") = """ & _
1005 r
& """ expected """ & exp
& """"
1008 sub test_replace_mode(str
, find
, rep
, from
, cnt
, mode
, exp
)
1010 r
= Replace(str
, find
, rep
, from
, cnt
, mode
)
1011 ok r
= exp
, "Replace(""" & str
& """, """ & find
& """, """ & rep
& """, " & from
& ", " & cnt
& ", " & mode _
1012 & ") = """ & r
& """ expected """ & exp
& """"
1015 test_replace
"xx testxx(xx)", "xx", "!", "! test!(!)"
1016 test_replace
"", "x", "y", ""
1017 test_replace
"xxx", "", "y", "xxx"
1018 test_replace
"yxxy", "x", "", "yy"
1019 test_replace
"xxxxx", "xx", "y", "yyx"
1020 test_replace
123, 2, 6, "163"
1021 test_replace
"xyz" & Chr(0) & "xyz", "y", "Y", "xYz" & Chr(0) & "xYz"
1022 test_replace
"xyz" & Chr(0) & "xyz", Chr(0) & "x", "Y" & Chr(0) & Chr(0), "xyzY" & Chr(0) & Chr(0) & "yz"
1024 test_replace_from
"xx testxx(xx)", "xx", "!", 1, "! test!(!)"
1025 test_replace_from
"xx testxx(xx)", "xx", "!", 1, "! test!(!)"
1026 test_replace_from
"xx testxx(xx)", "xx", "!", 2, "x test!(!)"
1027 test_replace_from
"xx testxx(xx)", "xx", "!", 2000, ""
1028 test_replace_from
"xxx", "", "y", 2, "xx"
1030 test_replace_cnt
"xx testxx(xx)", "xx", "!", 1, 2, "! test!(xx)"
1031 test_replace_cnt
"xx testxx(xx)", "xx", "!", 1, 1, "! testxx(xx)"
1032 test_replace_cnt
"xx testxx(xx)", "xx", "!", 2, 1, "x test!(xx)"
1033 test_replace_cnt
"xx testxx(xx)", "xx", "!", 1, -1, "! test!(!)"
1034 test_replace_cnt
"xx testxx(xx)", "xx", "!", 1, 0, "xx testxx(xx)"
1036 test_replace_mode
"Aa testAAa(aa)", "aa", "!", 1, 2, 1, "! test!a(aa)"
1037 test_replace_mode
"aA testaa(aa)", "AA", "!", 1, 1, 1, "! testaa(aa)"
1038 test_replace_mode
"aa testAa(aa)", "aa", "!", 2, 2, 0, "a testAa(!)"
1039 test_replace_mode
"aa testAA(aA)", "Aa", "!", 1, -1, 1, "! test!(!)"
1040 test_replace_mode
"aa testaa(aa)", "A", "!", 1, -1, 1, "!! test!!(!!)"
1042 on error resume next
1043 Replace
"xx", "x", "y", -1
1046 ok x
= 5, "err = " & x
1048 on error resume next
1049 Replace
"xx", "x", "y", 0
1052 ok x
= 5, "err = " & x
1054 on error resume next
1055 Replace
"xx", "x", "y", 1, -2
1058 ok x
= 5, "err = " & x
1060 Sub testReplaceError(arg1
, arg2
, arg3
, arg4
, arg5
, arg6
, error_num
)
1061 on error resume next
1065 x
= Replace(arg1
, arg2
, arg3
, arg4
, arg5
, arg6
)
1066 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
1069 Call testReplaceError(Null
, "x", "y", 1, 1, 0, 94)
1070 Call testReplaceError("xx", null
, "y", 1, 1, 0, 94)
1071 Call testReplaceError("xx", "x", null
, 1, 1, 0, 94)
1072 Call testReplaceError("xx", "x", "y", null
, 1, 0, 94)
1073 Call testReplaceError("xx", "x", "y", 1, null
, 0, 94)
1074 Call testReplaceError("xx", "x", "y", 1, 1, null
, 94)
1075 Call testReplaceError("xx", "x", "y", 1, 1, 8, 5)
1078 Sub TestRound(val
, exval
, vt
)
1079 Call ok(Round(val
) = exval
, "Round(" & val
& ") = " & Round(val
))
1080 Call ok(getVT(Round(val
)) = vt
, "getVT(Round(" & val
& ")) = " & getVT(Round(val
)))
1083 TestRound
3, 3, "VT_I2"
1084 TestRound
3.3, 3, "VT_R8"
1085 TestRound
3.8, 4, "VT_R8"
1086 TestRound
3.5, 4, "VT_R8"
1087 TestRound
-3.3, -3, "VT_R8"
1088 TestRound
-3.5, -4, "VT_R8"
1089 TestRound
"2", 2, "VT_R8"
1090 TestRound
true, true, "VT_BOOL"
1091 TestRound
false, false, "VT_BOOL"
1093 if isEnglishLang
then
1094 Call ok(WeekDayName(1) = "Sunday", "WeekDayName(1) = " & WeekDayName(1))
1095 Call ok(WeekDayName(3) = "Tuesday", "WeekDayName(3) = " & WeekDayName(3))
1096 Call ok(WeekDayName(7) = "Saturday", "WeekDayName(7) = " & WeekDayName(7))
1097 Call ok(WeekDayName(1.1) = "Sunday", "WeekDayName(1.1) = " & WeekDayName(1.1))
1098 Call ok(WeekDayName(1, false) = "Sunday", "WeekDayName(1, false) = " & WeekDayName(1, false))
1099 Call ok(WeekDayName(1, true) = "Sun", "WeekDayName(1, true) = " & WeekDayName(1, true))
1100 Call ok(WeekDayName(1, 10) = "Sun", "WeekDayName(1, 10) = " & WeekDayName(1, 10))
1101 Call ok(WeekDayName(1, true, 2) = "Mon", "WeekDayName(1, true, 2) = " & WeekDayName(1, true, 2))
1102 Call ok(WeekDayName(1, true, 2.5) = "Mon", "WeekDayName(1, true, 2.5) = " & WeekDayName(1, true, 2.5))
1103 Call ok(WeekDayName(1, true, 1.5) = "Mon", "WeekDayName(1, true, 1.5) = " & WeekDayName(1, true, 1.5))
1104 Call ok(WeekDayName(1, true, 7) = "Sat", "WeekDayName(1, true, 7) = " & WeekDayName(1, true, 7))
1105 Call ok(WeekDayName(1, true, 7.1) = "Sat", "WeekDayName(1, true, 7.1) = " & WeekDayName(1, true, 7.1))
1107 Call ok(MonthName(1) = "January", "MonthName(1) = " & MonthName(1))
1108 Call ok(MonthName(12) = "December", "MonthName(12) = " & MonthName(12))
1109 Call ok(MonthName(1, 0) = "January", "MonthName(1, 0) = " & MonthName(1, 0))
1110 Call ok(MonthName(12, false) = "December", "MonthName(12, false) = " & MonthName(12, false))
1111 Call ok(MonthName(1, 10) = "Jan", "MonthName(1, 10) = " & MonthName(1, 10))
1112 Call ok(MonthName(12, true) = "Dec", "MonthName(12, true) = " & MonthName(12, true))
1115 Call ok(WeekDayName(1, true, 0) = WeekDayName(1, true, firstDayOfWeek
), _
1116 "WeekDayName(1, true, 0) = " & WeekDayName(1, true, 0))
1118 Call ok(getVT(Now()) = "VT_DATE", "getVT(Now()) = " & getVT(Now()))
1120 Call ok(vbOKOnly
= 0, "vbOKOnly = " & vbOKOnly
)
1121 Call ok(getVT(vbOKOnly
) = "VT_I2", "getVT(vbOKOnly) = " & getVT(vbOKOnly
))
1122 Call ok(vbOKCancel
= 1, "vbOKCancel = " & vbOKCancel
)
1123 Call ok(getVT(vbOKCancel
) = "VT_I2", "getVT(vbOKCancel) = " & getVT(vbOKCancel
))
1124 Call ok(vbAbortRetryIgnore
= 2, "vbAbortRetryIgnore = " & vbAbortRetryIgnore
)
1125 Call ok(getVT(vbAbortRetryIgnore
) = "VT_I2", "getVT(vbAbortRetryIgnore) = " & getVT(vbAbortRetryIgnore
))
1126 Call ok(vbYesNoCancel
= 3, "vbYesNoCancel = " & vbYesNoCancel
)
1127 Call ok(getVT(vbYesNoCancel
) = "VT_I2", "getVT(vbYesNoCancel) = " & getVT(vbYesNoCancel
))
1128 Call ok(vbYesNo
= 4, "vbYesNo = " & vbYesNo
)
1129 Call ok(getVT(vbYesNo
) = "VT_I2", "getVT(vbYesNo) = " & getVT(vbYesNo
))
1130 Call ok(vbRetryCancel
= 5, "vbRetryCancel = " & vbRetryCancel
)
1131 Call ok(getVT(vbRetryCancel
) = "VT_I2", "getVT(vbRetryCancel) = " & getVT(vbRetryCancel
))
1133 Call ok(vbOK
= 1, "vbOK = " & vbOK
)
1134 Call ok(getVT(vbOK
) = "VT_I2", "getVT(vbOK) = " & getVT(vbOK
))
1135 Call ok(vbCancel
= 2, "vbCancel = " & vbCancel
)
1136 Call ok(getVT(vbCancel
) = "VT_I2", "getVT(vbCancel) = " & getVT(vbCancel
))
1137 Call ok(vbAbort
= 3, "vbAbort = " & vbAbort
)
1138 Call ok(getVT(vbAbort
) = "VT_I2", "getVT(vbAbort) = " & getVT(vbAbort
))
1139 Call ok(vbRetry
= 4, "vbRetry = " & vbRetry
)
1140 Call ok(getVT(vbRetry
) = "VT_I2", "getVT(vbRetry) = " & getVT(vbRetry
))
1141 Call ok(vbIgnore
= 5, "vbIgnore = " & vbIgnore
)
1142 Call ok(getVT(vbIgnore
) = "VT_I2", "getVT(vbIgnore) = " & getVT(vbIgnore
))
1143 Call ok(vbYes
= 6, "vbYes = " & vbYes
)
1144 Call ok(getVT(vbYes
) = "VT_I2", "getVT(vbYes) = " & getVT(vbYes
))
1145 Call ok(vbNo
= 7, "vbNo = " & vbNo
)
1146 Call ok(getVT(vbNo
) = "VT_I2", "getVT(vbNo) = " & getVT(vbNo
))
1148 Call ok(CInt(-36.75) = -37, "CInt(-36.75) = " & CInt(-36.75))
1149 Call ok(getVT(CInt(-36.75)) = "VT_I2", "getVT(CInt(-36.75)) = " & getVT(CInt(-36.75)))
1150 Call ok(CInt(-36.50) = -36, "CInt(-36.50) = " & CInt(-36.50))
1151 Call ok(getVT(CInt(-36.50)) = "VT_I2", "getVT(CInt(-36.50)) = " & getVT(CInt(-36.50)))
1152 Call ok(CInt(-36.25) = -36, "CInt(-36.25) = " & CInt(-36.25))
1153 Call ok(getVT(CInt(-36.25)) = "VT_I2", "getVT(CInt(-36.25)) = " & getVT(CInt(-36.25)))
1154 Call ok(CInt(-36) = -36, "CInt(-36) = " & CInt(-36))
1155 Call ok(getVT(CInt(-36)) = "VT_I2", "getVT(CInt(-36)) = " & getVT(CInt(-36)))
1156 Call ok(CInt(0) = 0, "CInt(0) = " & CInt(0))
1157 Call ok(getVT(CInt(0)) = "VT_I2", "getVT(CInt(0)) = " & getVT(CInt(0)))
1158 Call ok(CInt(0.0) = 0, "CInt(0.0) = " & CInt(0))
1159 Call ok(getVT(CInt(0.0)) = "VT_I2", "getVT(CInt(0.0)) = " & getVT(CInt(0.0)))
1160 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0))
1161 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
1162 Call ok(CInt(36) = 36, "CInt(36) = " & CInt(36))
1163 Call ok(getVT(CInt(36)) = "VT_I2", "getVT(CInt(36)) = " & getVT(CInt(36)))
1164 Call ok(CInt(36.25) = 36, "CInt(36.25) = " & CInt(36.25))
1165 Call ok(getVT(CInt(36.25)) = "VT_I2", "getVT(CInt(36.25)) = " & getVT(CInt(36.25)))
1166 Call ok(CInt(36.50) = 36, "CInt(36.50) = " & CInt(36.50))
1167 Call ok(getVT(CInt(36.50)) = "VT_I2", "getVT(CInt(36.50)) = " & getVT(CInt(36.50)))
1168 Call ok(CInt(36.75) = 37, "CInt(36.75) = " & CInt(36.75))
1169 Call ok(getVT(CInt(36.75)) = "VT_I2", "getVT(CInt(36.75)) = " & getVT(CInt(36.75)))
1172 Call ok(CBool(5) = true, "CBool(5) = " & CBool(5))
1173 Call ok(getVT(CBool(5)) = "VT_BOOL", "getVT(CBool(5)) = " & getVT(CBool(5)))
1174 Call ok(CBool(0) = false, "CBool(0) = " & CBool(0))
1175 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
1176 Call ok(CBool(-5) = true, "CBool(-5) = " & CBool(-5))
1177 Call ok(getVT(CBool(-5)) = "VT_BOOL", "getVT(CBool(-5)) = " & getVT(CBool(-5)))
1179 Sub testCBoolError(strings
, error_num
)
1180 on error resume next
1184 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
1190 Public default
Property Get defprop
1196 Set MyObject
= New ValClass
1198 Call ok(CBool(Empty
) = False, "CBool(Empty) = " & CBool(Empty
))
1199 Call ok(getVT(CBool(Empty
)) = "VT_BOOL", "getVT(CBool(Empty)) = " & getVT(CBool(Empty
)))
1200 Call ok(CBool(1) = True, "CBool(1) = " & CBool(1))
1201 Call ok(getVT(CBool(1)) = "VT_BOOL", "getVT(CBool(1)) = " & getVT(CBool(1)))
1202 Call ok(CBool(0) = False, "CBool(0) = " & CBool(0))
1203 Call ok(getVT(CBool(0)) = "VT_BOOL", "getVT(CBool(0)) = " & getVT(CBool(0)))
1204 Call ok(CBool(-0.56) = True, "CBool(-0.56) = " & CBool(-0.56))
1205 Call ok(getVT(CBool(-0.56)) = "VT_BOOL", "getVT(CBool(-0.56)) = " & getVT(CBool(-0.56)))
1206 Call testCBoolError("", 13)
1207 Call ok(CBool("0") = False, "CBool(""0"") = " & CBool("0"))
1208 Call ok(getVT(CBool("0")) = "VT_BOOL", "getVT(CBool(""0"")) = " & getVT(CBool("0")))
1209 If isEnglishLang
Then
1210 Call ok(CBool("0.1") = True, "CBool(""0.1"") = " & CBool("0.1"))
1211 Call ok(getVT(CBool("0.1")) = "VT_BOOL", "getVT(CBool(""0.1"")) = " & getVT(CBool("0.1")))
1213 Call ok(CBool("true") = True, "CBool(""true"") = " & CBool("true"))
1214 Call ok(getVT(CBool("true")) = "VT_BOOL", "getVT(CBool(""true"")) = " & getVT(CBool("true")))
1215 Call ok(CBool("false") = False, "CBool(""false"") = " & CBool("false"))
1216 Call ok(getVT(CBool("false")) = "VT_BOOL", "getVT(CBool(""false"")) = " & getVT(CBool("false")))
1217 Call ok(CBool("TRUE") = True, "CBool(""TRUE"") = " & CBool("TRUE"))
1218 Call ok(getVT(CBool("TRUE")) = "VT_BOOL", "getVT(CBool(""TRUE"")) = " & getVT(CBool("TRUE")))
1219 Call ok(CBool("FALSE") = False, "CBool(""FALSE"") = " & CBool("FALSE"))
1220 Call ok(getVT(CBool("FALSE")) = "VT_BOOL", "getVT(CBool(""FALSE"")) = " & getVT(CBool("FALSE")))
1221 Call ok(CBool("#TRUE#") = True, "CBool(""#TRUE#"") = " & CBool("#TRUE#"))
1222 Call ok(getVT(CBool("#TRUE#")) = "VT_BOOL", "getVT(CBool(""#TRUE#"")) = " & getVT(CBool("#TRUE#")))
1223 Call ok(CBool("#FALSE#") = False, "CBool(""#FALSE#"") = " & CBool("#FALSE#"))
1224 Call ok(getVT(CBool("#FALSE#")) = "VT_BOOL", "getVT(CBool(""#FALSE#"")) = " & getVT(CBool("#FALSE#")))
1225 Call ok(CBool(MyObject
) = False, "CBool(MyObject) = " & CBool(MyObject
))
1226 Call ok(getVT(CBool(MyObject
)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject
)))
1228 Call ok(CBool(MyObject
) = True, "CBool(MyObject) = " & CBool(MyObject
))
1229 Call ok(getVT(CBool(MyObject
)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject
)))
1231 Call ok(CBool(MyObject
) = False, "CBool(MyObject) = " & CBool(MyObject
))
1232 Call ok(getVT(CBool(MyObject
)) = "VT_BOOL", "getVT(CBool(MyObject)) = " & getVT(CBool(MyObject
)))
1234 Sub testCByteError(strings
, error_num1
,error_num2
)
1235 on error resume next
1240 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1244 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1247 Call ok(CByte(Empty
) = 0, "CByte(Empty) = " & CByte(Empty
))
1248 Call ok(getVT(CByte(Empty
)) = "VT_UI1", "getVT(CByte(Empty)) = " & getVT(CByte(Empty
)))
1249 Call ok(CByte(255) = 255, "CByte(255) = " & CByte(255))
1250 Call ok(getVT(CByte(255)) = "VT_UI1", "getVT(CByte(255)) = " & getVT(CByte(255)))
1251 Call ok(CByte(255.49) = 255, "CByte(255.49) = " & CByte(255.49))
1252 Call ok(getVT(CByte(255.49)) = "VT_UI1", "getVT(CByte(255.49)) = " & getVT(CByte(255.49)))
1253 Call testCByteError(1, 0, 458)
1254 Call testCByteError("", 13, 13)
1255 Call testCByteError("-1", 6, 6)
1256 Call testCByteError("258", 6, 6)
1257 Call testCByteError("TRUE", 13, 13)
1258 Call testCByteError("FALSE", 13, 13)
1259 Call testCByteError("#TRue#", 13, 13)
1260 Call testCByteError("#fAlSE#", 13, 13)
1261 If isEnglishLang
Then
1262 Call ok(CByte("-0.5") = 0, "CByte(""-0.5"") = " & CByte("-0.5"))
1263 Call ok(getVT(CByte("-0.5")) = "VT_UI1", "getVT(CByte(""-0.5"")) = " & getVT(CByte("-0.5")))
1265 Call ok(CByte(True) = 255, "CByte(True) = " & CByte(True))
1266 Call ok(getVT(CByte(True)) = "VT_UI1", "getVT(CByte(True)) = " & getVT(CByte(True)))
1267 Call ok(CByte(False) = 0, "CByte(False) = " & CByte(False))
1268 Call ok(getVT(CByte(False)) = "VT_UI1", "getVT(CByte(False)) = " & getVT(CByte(False)))
1269 Call ok(CByte(MyObject
) = 0, "CByte(MyObject) = " & CByte(MyObject
))
1270 Call ok(getVT(CByte(MyObject
)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject
)))
1272 Call ok(CByte(MyObject
) = 1, "CByte(MyObject) = " & CByte(MyObject
))
1273 Call ok(getVT(CByte(MyObject
)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject
)))
1275 Call ok(CByte(MyObject
) = 0, "CByte(MyObject) = " & CByte(MyObject
))
1276 Call ok(getVT(CByte(MyObject
)) = "VT_UI1", "getVT(CByte(MyObject)) = " & getVT(CByte(MyObject
)))
1278 Sub testCCurError(strings
, error_num1
, error_num2
)
1279 on error resume next
1284 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1288 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1291 Call ok(CCur(Empty
) = 0, "CCur(Empty) = " & CCur(Empty
))
1292 Call ok(getVT(CCur(Empty
)) = "VT_CY", "getVT(CCur(Empty)) = " & getVT(CCur(Empty
)))
1293 Call ok(CCur(-32768) = -32768, "CCur(-32768) = " & CCur(-32768))
1294 Call ok(getVT(CCur(-32768)) = "VT_CY", "getVT(CCur(-32768)) = " & getVT(CCur(-32768)))
1295 Call ok(CCur(32768) = 32768, "CCur(32768) = " & CCur(32768))
1296 Call ok(getVT(CCur(32768)) = "VT_CY", "getVT(CCur(32768)) = " & getVT(CCur(32768)))
1297 Call ok(CCur(0.000149) = 0.0001, "CCur(0.000149) = " & CCur(0.000149))
1298 Call ok(getVT(CCur(0.000149)) = "VT_CY", "getVT(CCur(0.000149)) = " & getVT(CCur(0.000149)))
1299 Call ok(CCur(2147483647.99) = 2147483647.99, "CCur(2147483647.99) = " & CCur(2147483647.99))
1300 Call ok(getVT(CCur(2147483647.99)) = "VT_CY", "getVT(CCur(2147483647.99)) = " & getVT(CCur(2147483647.99)))
1301 Call ok(CCur("-1") = -1, "CCur(""-1"") = " & CCur("-1"))
1302 Call ok(getVT(CCur("-1")) = "VT_CY", "getVT(CCur(""-1"")) = " & getVT(CCur("-1")))
1303 If isEnglishLang
Then
1304 Call ok(CCur("-0.5") = -0.5, "CCur(""-0.5"") = " & CCur("-0.5"))
1305 Call ok(getVT(CCur("-0.5")) = "VT_CY", "getVT(CCur(""-0.5"")) = " & getVT(CCur("-0.5")))
1307 Call testCCurError("", 13, 13)
1308 Call testCCurError("-1", 0, 458)
1309 Call testCCurError("TRUE", 13, 13)
1310 Call testCCurError("FALSE", 13, 13)
1311 Call testCCurError("#TRue#", 13, 13)
1312 Call testCCurError("#fAlSE#", 13, 13)
1313 Call testCCurError(1, 0, 458)
1314 Call ok(CCur(True) = -1, "CCur(True) = " & CCur(True))
1315 Call ok(getVT(CCur(True)) = "VT_CY", "getVT(CCur(True)) = " & getVT(CCur(True)))
1316 Call ok(CCur(False) = 0, "CCur(False) = " & CCur(False))
1317 Call ok(getVT(CCur(False)) = "VT_CY", "getVT(CCur(False)) = " & getVT(CCur(False)))
1318 MyObject
.myval
= 0.1
1319 Call ok(CCur(MyObject
) = 0.1, "CCur(MyObject) = " & CCur(MyObject
))
1320 Call ok(getVT(CCur(MyObject
)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject
)))
1322 Call ok(CCur(MyObject
) = 0, "CCur(MyObject) = " & CCur(MyObject
))
1323 Call ok(getVT(CCur(MyObject
)) = "VT_CY", "getVT(CCur(MyObject)) = " & getVT(CCur(MyObject
)))
1325 Sub testCDateError(strings
, error_num1
, error_num2
)
1326 on error resume next
1331 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1335 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1338 Call ok(CDate(Empty
) = 0, "CDate(Empty) = " & CDate(Empty
))
1339 Call ok(getVT(CDate(Empty
)) = "VT_DATE", "getVT(CDate(Empty)) = " & getVT(CDate(Empty
)))
1340 Call ok(CDate(0) = 0, "CDate(0) = " & CDate(0))
1341 Call ok(getVT(CDate(0)) = "VT_DATE", "getVT(CDate(0)) = " & getVT(CDate(0)))
1342 Call ok(CDate(1) = #
1899-12-31#
, "CDate(1) = " & CDate(1))
1343 Call ok(getVT(CDate(1)) = "VT_DATE", "getVT(CDate(1)) = " & getVT(CDate(1)))
1344 Call ok(CDate("1") = #
1899-12-31#
, "CDate(""1"") = " & CDate("1"))
1345 Call ok(getVT(CDate("1")) = "VT_DATE", "getVT(CDate(""1"")) = " & getVT(CDate("1")))
1346 If isEnglishLang
Then
1347 Call ok(CDate("1/1/2000") = #
2000-1-1#
, "CDate(""1/1/2000"") = " & CDate("1/1/2000"))
1348 Call ok(getVT(CDate("1/1/2000")) = "VT_DATE", "getVT(CDate(""1/1/2000"")) = " & getVT(CDate("1/1/2000")))
1350 Call ok(CDate(-1) = #
1899-12-29#
, "CDate(-1) = " & CDate(-1))
1351 Call ok(getVT(CDate(-1)) = "VT_DATE", "getVT(CDate(-1)) = " & getVT(CDate(-1)))
1352 Call ok(CDate(100000) = #
2173-10-14#
, "CDate(100000) = " & CDate(100000))
1353 Call ok(getVT(CDate(100000)) = "VT_DATE", "getVT(CDate(100000)) = " & getVT(CDate(100000)))
1354 Call testCDateError("", 13, 13)
1355 Call testCDateError(null
, 94, 94)
1356 Call testCDateError(1, 0, 458)
1358 Sub testCDblError(strings
, error_num1
, error_num2
)
1359 on error resume next
1364 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1368 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1371 Call ok(CDbl(Empty
) = 0, "CDbl(Empty) = " & CDbl(Empty
))
1372 Call ok(getVT(CDbl(Empty
)) = "VT_R8", "getVT(CDbl(Empty)) = " & getVT(CDbl(Empty
)))
1373 Call ok(CDbl(CByte(0)) = 0, "CDbl(CByte(0)) = " & CDbl(CByte(0)))
1374 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
1375 Call ok(CDbl(CCur(0)) = 0, "CDbl(CCur(0)) = " & CDbl(CCur(0)))
1376 Call ok(getVT(CDbl(CCur(0))) = "VT_R8", "getVT(CDbl(CCur(0))) = " & getVT(CDbl(CCur(0))))
1377 Call ok(CDbl(0) = 0, "CDbl(0) = " & CDbl(0))
1378 Call ok(getVT(CDbl(0)) = "VT_R8", "getVT(CDbl(0)) = " & getVT(CDbl(0)))
1379 Call ok(CDbl(32768) = 32768, "CDbl(32768) = " & CDbl(32768))
1380 Call ok(getVT(CDbl(32768)) = "VT_R8", "getVT(CDbl(32768)) = " & getVT(CDbl(32768)))
1381 Call ok(CDbl(0.001 * 0.001) = 0.000001, "CDbl(0.001 * 0.001) = " & CDbl(0.001 * 0.001))
1382 Call ok(getVT(CDbl(0.001 * 0.001)) = "VT_R8", "getVT(CDbl(0.001 * 0.001)) = " & getVT(CDbl(0.001 * 0.001)))
1383 Call ok(CDbl("-1") = -1, "CDbl(""-1"") = " & CDbl("-1"))
1384 Call ok(getVT(CDbl("-1")) = "VT_R8", "getVT(CDbl(""-1"")) = " & getVT(CDbl("-1")))
1385 If isEnglishLang
Then
1386 Call ok(CDbl("-0.5") = -0.5, "CDbl(""-0.5"") = " & CDbl("-0.5"))
1387 Call ok(getVT(CDbl("-0.5")) = "VT_R8", "getVT(CDbl(""-0.5"")) = " & getVT(CDbl("-0.5")))
1389 Call testCDblError("", 13, 13)
1390 Call testCDblError("TRUE", 13, 13)
1391 Call testCDblError("FALSE", 13, 13)
1392 Call testCDblError("#TRue#", 13, 13)
1393 Call testCDblError("#fAlSE#", 13, 13)
1394 Call testCDblError(1, 0, 458)
1395 Call ok(CDbl(True) = -1, "CDbl(True) = " & CDbl(True))
1396 Call ok(getVT(CDbl(True)) = "VT_R8", "getVT(CDbl(True)) = " & getVT(CDbl(True)))
1397 Call ok(CDbl(False) = 0, "CDbl(False) = " & CDbl(False))
1398 Call ok(getVT(CDbl(False)) = "VT_R8", "getVT(CDbl(False)) = " & getVT(CDbl(False)))
1399 MyObject
.myval
= 0.1
1400 Call ok(CDbl(MyObject
) = 0.1, "CDbl(MyObject) = " & CDbl(MyObject
))
1401 Call ok(getVT(CDbl(MyObject
)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject
)))
1403 Call ok(CDbl(MyObject
) = 0, "CDbl(MyObject) = " & CDbl(MyObject
))
1404 Call ok(getVT(CDbl(MyObject
)) = "VT_R8", "getVT(CDbl(MyObject)) = " & getVT(CDbl(MyObject
)))
1406 Sub testCLngError(strings
, error_num1
, error_num2
)
1407 on error resume next
1412 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1416 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1419 Call ok(CLng(Empty
) = 0, "CLng(Empty) = " & CLng(Empty
))
1420 Call ok(getVT(CLng(Empty
)) = "VT_I4", "getVT(CLng(Empty)) = " & getVT(CLng(Empty
)))
1421 Call ok(CLng(CByte(0)) = 0, "CLng(CByte(0)) = " & CLng(CByte(0)))
1422 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
1423 Call ok(CLng(CCur(0)) = 0, "CLng(CCur(0)) = " & CLng(CCur(0)))
1424 Call ok(getVT(CLng(CCur(0))) = "VT_I4", "getVT(CLng(CCur(0))) = " & getVT(CLng(CCur(0))))
1425 Call ok(CLng(0) = 0, "CLng(0) = " & CLng(0))
1426 Call ok(getVT(CLng(0)) = "VT_I4", "getVT(CLng(0)) = " & getVT(CLng(0)))
1427 Call ok(CLng(0.49) = 0, "CLng(0.49) = " & CLng(0.49))
1428 Call ok(getVT(CLng(0.49)) = "VT_I4", "getVT(CLng(0.49)) = " & getVT(CLng(0.49)))
1429 Call ok(CLng(0.5) = 0, "CLng(0.5) = " & CLng(0.5))
1430 Call ok(getVT(CLng(0.5)) = "VT_I4", "getVT(CLng(0.5)) = " & getVT(CLng(0.5)))
1431 Call ok(CLng(0.51) = 1, "CLng(0.51) = " & CLng(0.51))
1432 Call ok(getVT(CLng(0.51)) = "VT_I4", "getVT(CLng(0.51)) = " & getVT(CLng(0.51)))
1433 Call ok(CLng(1.49) = 1, "CLng(1.49) = " & CLng(1.49))
1434 Call ok(getVT(CLng(1.49)) = "VT_I4", "getVT(CLng(1.49)) = " & getVT(CLng(1.49)))
1435 Call ok(CLng(1.5) = 2, "CLng(1.5) = " & CLng(1.5))
1436 Call ok(getVT(CLng(1.5)) = "VT_I4", "getVT(CLng(1.5)) = " & getVT(CLng(1.5)))
1437 Call ok(CLng(1.51) = 2, "CLng(1.51) = " & CLng(1.51))
1438 Call ok(getVT(CLng(1.51)) = "VT_I4", "getVT(CLng(1.51)) = " & getVT(CLng(1.51)))
1439 Call ok(CLng("-1") = -1, "CLng(""-1"") = " & CLng("-1"))
1440 Call ok(getVT(CLng("-1")) = "VT_I4", "getVT(CLng(""-1"")) = " & getVT(CLng("-1")))
1441 If isEnglishLang
Then
1442 Call ok(CLng("-0.5") = 0, "CLng(""-0.5"") = " & CLng("-0.5"))
1443 Call ok(getVT(CLng("-0.5")) = "VT_I4", "getVT(CLng(""-0.5"")) = " & getVT(CLng("-0.5")))
1445 Call testCLngError("", 13, 13)
1446 Call testCLngError("TRUE", 13, 13)
1447 Call testCLngError("FALSE", 13, 13)
1448 Call testCLngError("#TRue#", 13, 13)
1449 Call testCLngError("#fAlSE#", 13, 13)
1450 Call testCLngError(1, 0, 458)
1451 Call ok(CLng(True) = -1, "CLng(True) = " & CLng(True))
1452 Call ok(getVT(CLng(True)) = "VT_I4", "getVT(CLng(True)) = " & getVT(CLng(True)))
1453 Call ok(CLng(False) = 0, "CLng(False) = " & CLng(False))
1454 Call ok(getVT(CLng(False)) = "VT_I4", "getVT(CLng(False)) = " & getVT(CLng(False)))
1456 Call ok(CLng(MyObject
) = 1, "CLng(MyObject) = " & CLng(MyObject
))
1457 Call ok(getVT(CLng(MyObject
)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject
)))
1459 Call ok(CLng(MyObject
) = 0, "CLng(MyObject) = " & CLng(MyObject
))
1460 Call ok(getVT(CLng(MyObject
)) = "VT_I4", "getVT(CLng(MyObject)) = " & getVT(CLng(MyObject
)))
1462 Sub testCIntError(strings
, error_num1
, error_num2
)
1463 on error resume next
1468 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1472 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1475 Call ok(CInt(Empty
) = 0, "CInt(Empty) = " & CInt(Empty
))
1476 Call ok(getVT(CInt(Empty
)) = "VT_I2", "getVT(CInt(Empty)) = " & getVT(CInt(Empty
)))
1477 Call ok(CInt(CByte(0)) = 0, "CInt(CByte(0)) = " & CInt(CByte(0)))
1478 Call ok(getVT(CInt(CByte(0))) = "VT_I2", "getVT(CInt(CByte(0))) = " & getVT(CInt(CByte(0))))
1479 Call ok(CInt(CCur(0)) = 0, "CInt(CCur(0)) = " & CInt(CCur(0)))
1480 Call ok(getVT(CInt(CCur(0))) = "VT_I2", "getVT(CInt(CCur(0))) = " & getVT(CInt(CCur(0))))
1481 Call ok(CInt(0.49) = 0, "CInt(0.49) = " & CInt(0.49))
1482 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
1483 Call ok(CInt(0.5) = 0, "CInt(0.5) = " & CInt(0.5))
1484 Call ok(getVT(CInt(0.5)) = "VT_I2", "getVT(CInt(0.5)) = " & getVT(CInt(0.5)))
1485 Call ok(CInt(0.51) = 1, "CInt(0.51) = " & CInt(0.51))
1486 Call ok(getVT(CInt(0.51)) = "VT_I2", "getVT(CInt(0.51)) = " & getVT(CInt(0.51)))
1487 Call ok(CInt(1.49) = 1, "CInt(0.49) = " & CInt(0.49))
1488 Call ok(getVT(CInt(0.49)) = "VT_I2", "getVT(CInt(0.49)) = " & getVT(CInt(0.49)))
1489 Call ok(CInt(1.5) = 2, "CInt(1.5) = " & CInt(1.5))
1490 Call ok(getVT(CInt(1.5)) = "VT_I2", "getVT(CInt(1.5)) = " & getVT(CInt(1.5)))
1491 Call ok(CInt(1.51) = 2, "CInt(1.51) = " & CInt(1.51))
1492 Call ok(getVT(CInt(1.51)) = "VT_I2", "getVT(CInt(1.51)) = " & getVT(CInt(1.51)))
1493 Call ok(CInt("-1") = -1, "CInt(""-1"") = " & CInt("-1"))
1494 Call ok(getVT(CInt("-1")) = "VT_I2", "getVT(CInt(""-1"")) = " & getVT(CInt("-1")))
1495 If isEnglishLang
Then
1496 Call ok(CInt("-0.5") = 0, "CInt(""-0.5"") = " & CInt("-0.5"))
1497 Call ok(getVT(CInt("-0.5")) = "VT_I2", "getVT(CInt(""-0.5"")) = " & getVT(CInt("-0.5")))
1499 Call testCIntError("", 13, 13)
1500 Call testCIntError("-1", 0, 458)
1501 Call testCIntError("TRUE", 13, 13)
1502 Call testCIntError("FALSE", 13, 13)
1503 Call testCIntError("#TRue#", 13, 13)
1504 Call testCIntError("#fAlSE#", 13, 13)
1505 Call testCIntError(1, 0, 458)
1506 Call testCIntError(32767.49, 0, 458)
1507 Call testCIntError(32767.5, 6, 6)
1508 Call testCIntError(-32768.5, 0, 458)
1509 Call testCIntError(-32768.51, 6, 6)
1510 Call ok(CInt(True) = -1, "CInt(True) = " & CInt(True))
1511 Call ok(getVT(CInt(True)) = "VT_I2", "getVT(CInt(True)) = " & getVT(CInt(True)))
1512 Call ok(CInt(False) = 0, "CInt(False) = " & CInt(False))
1513 Call ok(getVT(CInt(False)) = "VT_I2", "getVT(CInt(False)) = " & getVT(CInt(False)))
1514 MyObject
.myval
= 2.5
1515 Call ok(CInt(MyObject
) = 2, "CInt(MyObject) = " & CInt(MyObject
))
1516 Call ok(getVT(CInt(MyObject
)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject
)))
1517 MyObject
.myval
= 1.5
1518 Call ok(CInt(MyObject
) = 2, "CInt(MyObject) = " & CInt(MyObject
))
1519 Call ok(getVT(CInt(MyObject
)) = "VT_I2", "getVT(CInt(MyObject)) = " & getVT(CInt(MyObject
)))
1521 Sub testCSngError(strings
, error_num1
, error_num2
)
1522 on error resume next
1527 Call ok(Err
.number
= error_num1
, "Err.number = " & Err
.number
)
1531 Call ok(Err
.number
= error_num2
, "Err.number = " & Err
.number
)
1534 Call ok(CSng(Empty
) = 0, "CSng(Empty) = " & CSng(Empty
))
1535 Call ok(getVT(CSng(Empty
)) = "VT_R4", "getVT(CSng(Empty)) = " & getVT(CSng(Empty
)))
1536 Call ok(CSng(CByte(0)) = 0, "CSng(CByte(0)) = " & CSng(CByte(0)))
1537 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
1538 Call ok(CSng(CCur(0)) = 0, "CSng(CCur(0)) = " & CSng(CCur(0)))
1539 Call ok(getVT(CSng(CCur(0))) = "VT_R4", "getVT(CSng(CCur(0))) = " & getVT(CSng(CCur(0))))
1540 Call ok(CSng(0) = 0, "CSng(0) = " & CSng(0))
1541 Call ok(getVT(CSng(0)) = "VT_R4", "getVT(CSng(0)) = " & getVT(CSng(0)))
1542 Call ok(CSng(32768) = 32768, "CSng(32768) = " & CSng(32768))
1543 Call ok(getVT(CSng(32768)) = "VT_R4", "getVT(CSng(32768)) = " & getVT(CSng(32768)))
1544 Call ok(CSng(0.001 * 0.001) = 0.000001, "CSng(0.001 * 0.001) = " & CSng(0.001 * 0.001))
1545 Call ok(getVT(CSng(0.001 * 0.001)) = "VT_R4", "getVT(CSng(0.001 * 0.001)) = " & getVT(CSng(0.001 * 0.001)))
1546 Call ok(CSng("-1") = -1, "CSng(""-1"") = " & CSng("-1"))
1547 Call ok(getVT(CSng("-1")) = "VT_R4", "getVT(CSng(""-1"")) = " & getVT(CSng("-1")))
1548 If isEnglishLang
Then
1549 Call ok(CSng("-0.5") = -0.5, "CSng(""-0.5"") = " & CSng("-0.5"))
1550 Call ok(getVT(CSng("-0.5")) = "VT_R4", "getVT(CSng(""-0.5"")) = " & getVT(CSng("-0.5")))
1552 Call testCSngError("", 13, 13)
1553 Call testCSngError("TRUE", 13, 13)
1554 Call testCSngError("FALSE", 13, 13)
1555 Call testCSngError("#TRue#", 13, 13)
1556 Call testCSngError("#fAlSE#", 13, 13)
1557 Call testCSngError(1, 0, 458)
1558 Call ok(CSng(True) = -1, "CSng(True) = " & CSng(True))
1559 Call ok(getVT(CSng(True)) = "VT_R4", "getVT(CSng(True)) = " & getVT(CSng(True)))
1560 Call ok(CSng(False) = 0, "CSng(False) = " & CSng(False))
1561 Call ok(getVT(CSng(False)) = "VT_R4", "getVT(CSng(False)) = " & getVT(CSng(False)))
1562 MyObject
.myval
= 0.1
1563 Call ok(CSng(MyObject
) = 0.1, "CSng(MyObject) = " & CSng(MyObject
))
1564 Call ok(getVT(CSng(MyObject
)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject
)))
1566 Call ok(CSng(MyObject
) = 0, "CSng(MyObject) = " & CSng(MyObject
))
1567 Call ok(getVT(CSng(MyObject
)) = "VT_R4", "getVT(CSng(MyObject)) = " & getVT(CSng(MyObject
)))
1569 Call ok(TypeName(Empty
) = "Empty", "TypeName(MyEmpty) = " & TypeName(Empty
))
1570 Call ok(getVT(TypeName(Empty
)) = "VT_BSTR", "getVT(TypeName(Empty)) = " & getVT(TypeName(Empty
)))
1571 Call ok(TypeName(Null
) = "Null", "TypeName(Null) = " & TypeName(Null
))
1572 Call ok(getVT(TypeName(Null
)) = "VT_BSTR", "getVT(TypeName(Null)) = " & getVT(TypeName(Null
)))
1573 Call ok(TypeName(CByte(255)) = "Byte", "TypeName(CByte(255)) = " & TypeName(CByte(255)))
1574 Call ok(getVT(TypeName(CByte(255))) = "VT_BSTR", "getVT(TypeName(CByte(255))) = " & getVT(TypeName(CByte(255))))
1575 Call ok(TypeName(255) = "Integer", "TypeName(255) = " & TypeName(255))
1576 Call ok(getVT(TypeName(255)) = "VT_BSTR", "getVT(TypeName(255)) = " & getVT(TypeName(255)))
1577 Call ok(TypeName(32768) = "Long", "TypeName(32768) = " & TypeName(32768))
1578 Call ok(getVT(TypeName(32768)) = "VT_BSTR", "getVT(TypeName(32768)) = " & getVT(TypeName(32768)))
1579 Call ok(TypeName(CSng(0.5)) = "Single", "TypeName(CSng(0.5)) = " & TypeName(CSng(0.5)))
1580 Call ok(getVT(TypeName(CSng(0.5))) = "VT_BSTR", "getVT(TypeName(CSng(0.5))) = " & getVT(TypeName(CSng(0.5))))
1581 Call ok(TypeName(-0.5) = "Double", "TypeName(-0.5) = " & TypeName(-0.5))
1582 Call ok(getVT(TypeName(-0.5)) = "VT_BSTR", "getVT(TypeName(-0.5)) = " & getVT(TypeName(-0.5)))
1583 Call ok(TypeName(CCur(0.5)) = "Currency", "TypeName(CCur(0.5)) = " & TypeName(CCur(0.5)))
1584 Call ok(getVT(TypeName(CCur(0.5))) = "VT_BSTR", "getVT(TypeName(CCur(0.5))) = " & getVT(TypeName(CCur(0.5))))
1585 Call ok(TypeName(CStr(0.5)) = "String", "TypeName(CStr(0.5)) = " & TypeName(CStr(0.5)))
1586 Call ok(getVT(TypeName(CStr(0.5))) = "VT_BSTR", "getVT(TypeName(CStr(0.5))) = " & getVT(TypeName(CStr(0.5))))
1587 Call ok(TypeName(True) = "Boolean", "TypeName(True) = " & TypeName(True))
1588 Call ok(getVT(TypeName(True)) = "VT_BSTR", "getVT(TypeName(True)) = " & getVT(TypeName(True)))
1589 Call ok(TypeName(arr
) = "Variant()", "TypeName(arr) = " & TypeName(arr
))
1590 Call ok(getVT(TypeName(arr
)) = "VT_BSTR", "getVT(TypeName(arr)) = " & getVT(TypeName(arr
)))
1591 Call ok(TypeName(collectionObj
) = "Object", "TypeName(collectionObj) = " & TypeName(collectionObj
))
1593 set regex
= new RegExp
1594 Call ok(TypeName(regex
) = "IRegExp2", "TypeName(regex) = " & TypeName(regex
))
1596 Call ok(VarType(Empty
) = vbEmpty
, "VarType(Empty) = " & VarType(Empty
))
1597 Call ok(getVT(VarType(Empty
)) = "VT_I2", "getVT(VarType(Empty)) = " & getVT(VarType(Empty
)))
1598 Call ok(VarType(Null
) = vbNull
, "VarType(Null) = " & VarType(Null
))
1599 Call ok(getVT(VarType(Null
)) = "VT_I2", "getVT(VarType(Null)) = " & getVT(VarType(Null
)))
1600 Call ok(VarType(255) = vbInteger
, "VarType(255) = " & VarType(255))
1601 Call ok(getVT(VarType(255)) = "VT_I2", "getVT(VarType(255)) = " & getVT(VarType(255)))
1602 set x
= new EmptyClass
1603 Call ok(VarType(x
) = vbObject
, "VarType(x) = " & VarType(x
))
1604 Call ok(getVT(VarType(x
)) = "VT_I2", "getVT(VarType(x)) = " & getVT(VarType(x
)))
1605 Call ok(VarType(32768) = vbLong
, "VarType(32768) = " & VarType(32768))
1606 Call ok(getVT(VarType(32768)) = "VT_I2", "getVT(VarType(32768)) = " & getVT(VarType(32768)))
1607 Call ok(VarType(CSng(0.5)) = vbSingle
, "VarType(CSng(0.5)) = " & VarType(CSng(0.5)))
1608 Call ok(getVT(VarType(CSng(0.5))) = "VT_I2", "getVT(VarType(CSng(0.5))) = " & getVT(VarType(CSng(0.5))))
1609 Call ok(VarType(-0.5) = vbDouble
, "VarType(-0.5) = " & VarType(-0.5))
1610 Call ok(getVT(VarType(-0.5)) = "VT_I2", "getVT(VarType(-0.5)) = " & getVT(VarType(-0.5)))
1611 Call ok(VarType(CCur(0.5)) = vbCurrency
, "VarType(CCur(0.5)) = " & VarType(CCur(0.5)))
1612 Call ok(getVT(VarType(CCur(0.5))) = "VT_I2", "getVT(VarType(CCur(0.5))) = " & getVT(VarType(CCur(0.5))))
1613 Call ok(VarType(CStr(0.5)) = vbString
, "VarType(CStr(0.5)) = " & VarType(CStr(0.5)))
1614 Call ok(getVT(VarType(CStr(0.5))) = "VT_I2", "getVT(VarType(CStr(0.5))) = " & getVT(VarType(CStr(0.5))))
1615 Call ok(VarType(CBool(0.5)) = vbBoolean
, "VarType(CBool(0.5)) = " & VarType(CBool(0.5)))
1616 Call ok(getVT(VarType(CBool(0.5))) = "VT_I2", "getVT(VarType(CBool(0.5))) = " & getVT(VarType(CBool(0.5))))
1617 Call ok(VarType(CByte(255)) = vbByte
, "VarType(CByte(255)) = " & VarType(CByte(255)))
1618 Call ok(getVT(VarType(CByte(255))) = "VT_I2", "getVT(VarType(CByte(255))) = " & getVT(VarType(CByte(255))))
1619 Call ok(VarType(arr
) = (vbArray
or vbVariant
), "VarType(arr) = " & VarType(arr
))
1620 Call ok(getVT(VarType(arr
)) = "VT_I2", "getVT(VarType(arr)) = " & getVT(VarType(arr
)))
1622 Call ok(Sgn(Empty
) = 0, "Sgn(MyEmpty) = " & Sgn(Empty
))
1623 Call ok(getVT(Sgn(Empty
)) = "VT_I2", "getVT(Sgn(MyEmpty)) = " & getVT(Sgn(Empty
)))
1624 Call ok(Sgn(0) = 0, "Sgn(0) = " & Sgn(0))
1625 Call ok(getVT(Sgn(0)) = "VT_I2", "getVT(Sgn(0)) = " & getVT(Sgn(0)))
1626 Call ok(Sgn(-32769) = -1, "Sgn(-32769) = " & Sgn(-32769))
1627 Call ok(getVT(Sgn(-32769)) = "VT_I2", "getVT(Sgn(-32769)) = " & getVT(Sgn(-32769)))
1628 Call ok(Sgn(CSng(-0.5)) = -1, "Sgn(CSng(-0.5)) = " & Sgn(CSng(-0.5)))
1629 Call ok(getVT(Sgn(CSng(-0.5))) = "VT_I2", "getVT(Sgn(CSng(-0.5))) = " & getVT(Sgn(CSng(-0.5))))
1630 Call ok(Sgn(0.5) = 1, "Sgn(0.5) = " & Sgn(0.5))
1631 Call ok(getVT(Sgn(0.5)) = "VT_I2", "getVT(Sgn(0.5)) = " & getVT(Sgn(0.5)))
1632 Call ok(Sgn(CCur(-1)) = -1, "Sgn(CCur(-1)) = " & Sgn(CCur(-1)))
1633 Call ok(getVT(Sgn(CCur(-1))) = "VT_I2", "getVT(Sgn(CCur(-1))) = " & getVT(Sgn(CCur(-1))))
1634 Call ok(Sgn(CStr(-1)) = -1, "Sgn(CStr(-1)) = " & Sgn(CStr(-1)))
1635 Call ok(getVT(Sgn(CStr(-1))) = "VT_I2", "getVT(Sgn(CStr(-1))) = " & getVT(Sgn(CStr(-1))))
1636 Call ok(Sgn(False) = 0, "Sgn(False) = " & Sgn(False))
1637 Call ok(getVT(Sgn(False)) = "VT_I2", "getVT(Sgn(False)) = " & getVT(Sgn(False)))
1638 Call ok(Sgn(True) = -1, "Sgn(True) = " & Sgn(True))
1639 Call ok(getVT(Sgn(True)) = "VT_I2", "getVT(Sgn(True)) = " & getVT(Sgn(True)))
1640 Call ok(Sgn(CByte(1)) = 1, "Sgn(CByte(1)) = " & Sgn(CByte(1)))
1641 Call ok(getVT(Sgn(CByte(1))) ="VT_I2", "getVT(Sgn(CByte(1))) = " & getVT(Sgn(CByte(1))))
1643 Sub testSgnError(strings
, error_num
)
1644 on error resume next
1648 Call ok(Err
.number
= error_num
, "Err.number = " & Err
.number
)
1651 Call testSgnError(Null
, 94)
1653 Call ok(Abs(Empty
) = 0, "Abs(Empty) = " & Abs(Empty
))
1654 Call ok(getVT(Abs(Empty
)) = "VT_I2", "getVT(Abs(Empty)) = " & getVT(Abs(Empty
)))
1655 Call ok(IsNull(Abs(Null
)), "Is Abs(Null) not Null?")
1656 Call ok(getVT(Abs(Null
)) = "VT_NULL", "getVT(Abs(Null)) = " & getVT(Abs(Null
)))
1657 Call ok(Abs(0) = 0, "Abs(0) = " & Abs(0))
1658 Call ok(getVT(Abs(0)) = "VT_I2", "getVT(Abs(0)) = " & getVT(Abs(0)))
1659 Call ok(Abs(-32769) = 32769, "Abs(-32769) = " & Abs(-32769))
1660 Call ok(getVT(Abs(-32769)) = "VT_I4", "getVT(Abs(-32769)) = " & getVT(Abs(-32769)))
1661 Call ok(Abs(CSng(-0.5)) = 0.5, "Abs(CSng(-0.5)) = " & Abs(CSng(-0.5)))
1662 Call ok(getVT(Abs(CSng(-0.5))) = "VT_R4", "getVT(Abs(CSng(-0.5))) = " & getVT(Abs(CSng(-0.5))))
1663 Call ok(Abs(0.5) = 0.5, "Abs(0.5) = " & Abs(0.5))
1664 Call ok(getVT(Abs(0.5)) = "VT_R8", "getVT(Abs(0.5)) = " & getVT(Abs(0.5)))
1665 Call ok(Abs(CCur(-1)) = 1, "Abs(CCur(-1)) = " & Abs(CCur(-1)))
1666 Call ok(getVT(Abs(CCur(-1))) = "VT_CY", "getVT(Abs(CCur(-1))) = " & getVT(Abs(CCur(-1))))
1667 Call ok(Abs("-1") = 1, "Abs(""-1"") = " & Abs("-1"))
1668 Call ok(getVT(Abs("-1")) = "VT_R8", "getVT(Abs(""-1"")) = " & getVT(Abs("-1")))
1669 Call ok(Abs(False) = 0, "Abs(False) = " & Abs(False))
1670 Call ok(getVT(Abs(False)) = "VT_I2", "getVT(Abs(False)) = " & getVT(Abs(False)))
1671 Call ok(Abs(True) = 1, "Abs(True) = " & Abs(True))
1672 Call ok(getVT(Abs(True)) = "VT_I2", "getVT(Abs(True)) = " & getVT(Abs(True)))
1673 Call ok(Abs(CByte(1)) = 1, "Abs(CByte(1)) = " & Abs(CByte(1)))
1674 Call ok(getVT(Abs(CByte(1))) = "VT_UI1", "getVT(Abs(CByte(1))) = " & getVT(Abs(CByte(1))))
1675 Call ok(Abs("30000") = 30000, "Abs(""30000"") = " & Abs("30000"))
1677 Sub testAbsError(strings
, error_num1
, error_num2
)
1678 on error resume next
1683 Call ok(Err
.number
= error_num1
, "Err.number1 = " & Err
.number
)
1687 Call ok(Err
.number
= error_num2
, "Err.number2 = " & Err
.number
)
1690 Call testAbsError("strings", 13, 13)
1691 Call testAbsError(-4, 0, 0)
1693 Call ok(ScriptEngine
= "VBScript", "Is scriptengine not VBScript?")
1694 Call ok(getVT(ScriptEngine
) = "VT_BSTR", "getVT(ScriptEngine) = " & getVT(ScriptEngine
))
1696 Call ok(getVT(ScriptEngineBuildVersion
) = "VT_I4", "getVT(ScriptEngineBuildVersion) = " & getVT(ScriptEngineBuildVersion
))
1698 Call ok(getVT(ScriptEngineMajorVersion
) = "VT_I4", "getVT(ScriptEngineMajorVersion) = " & getVT(ScriptEngineMajorVersion
))
1700 Call ok(getVT(ScriptEngineMinorVersion
) = "VT_I4", "getVT(ScriptEngineMinorVersion) = " & getVT(ScriptEngineMinorVersion
))
1702 Call ok(Fix(Empty
) = 0, "Fix(Empty) = " & Fix(Empty
))
1703 Call ok(getVT(Fix(Empty
)) = "VT_I2", "getVT(Fix(Empty)) = " & getVT(Fix(Empty
)))
1704 Call ok(Fix(CCur(-0.99)) = 0, "Fix(CCur(-0.99)) = " & Fix(CCur(-0.99)))
1705 Call ok(getVT(Fix(CCur(-0.99))) = "VT_CY", "getVT(Fix(CCur(-0.99))) = " & getVT(Fix(CCur(-0.99))))
1706 Call ok(Fix(1.99) = 1, "Fix(1.99) = " & Fix(1.99))
1707 Call ok(getVT(Fix(1.99)) = "VT_R8", "getVT(Fix(1.99)) = " & getVT(Fix(1.99)))
1708 Call ok(Fix(-1.99) = -1, "Fix(-1.99) = " & Fix(-1.99))
1709 Call ok(getVT(Fix(-1.99)) = "VT_R8", "getVT(Fix(-1.99)) = " & getVT(Fix(-1.99)))
1710 If isEnglishLang
Then
1711 Call ok(Fix("1.99") = 1, "Fix(""1.99"") = " & Fix("1.99"))
1712 Call ok(getVT(Fix("1.99")) = "VT_R8", "getVT(Fix(""1.99"")) = " & getVT(Fix("1.99")))
1713 Call ok(Fix("-1.99") = -1, "Fix(""-1.99"") = " & Fix("-1.99"))
1714 Call ok(getVT(Fix("-1.99")) = "VT_R8", "getVT(Fix(""-1.99"")) = " & getVT(Fix("-1.99")))
1716 Call ok(Fix(True) = -1, "Fix(True) = " & Fix(True))
1717 Call ok(getVT(Fix(True)) = "VT_I2", "getVT(Fix(True)) = " & getVT(Fix(True)))
1718 Call ok(Fix(False) = 0, "Fix(False) = " & Fix(False))
1719 Call ok(getVT(Fix(False)) = "VT_I2", "getVT(Fix(False)) = " & getVT(Fix(False)))
1720 MyObject
.myval
= 2.5
1721 Call ok(Fix(MyObject
) = 2, "Fix(MyObject) = " & Fix(MyObject
))
1722 Call ok(getVT(Fix(MyObject
)) = "VT_R8", "getVT(Fix(MyObject)) = " & getVT(Fix(MyObject
)))
1723 MyObject
.myval
= -2.5
1724 Call ok(Fix(MyObject
) = -2, "Fix(MyObject) = " & Fix(MyObject
))
1725 Call ok(getVT(Fix(MyObject
)) = "VT_R8", "getVT(Fix(MyObject)) = " & getVT(Fix(MyObject
)))
1727 Call ok(Int(Empty
) = 0, "Int(Empty) = " & Int(Empty
))
1728 Call ok(getVT(Int(Empty
)) = "VT_I2", "getVT(Int(Empty)) = " & getVT(Int(Empty
)))
1729 Call ok(Int(CCur(-0.99)) = -1, "Int(CCur(-0.99)) = " & Int(CCur(-0.99)))
1730 Call ok(getVT(Int(CCur(-0.99))) = "VT_CY", "getVT(Int(CCur(-0.99))) = " & getVT(Int(CCur(-0.99))))
1731 Call ok(Int(1.99) = 1, "Int(1.99) = " & Int(1.99))
1732 Call ok(getVT(Int(1.99)) = "VT_R8", "getVT(Int(1.99)) = " & getVT(Int(1.99)))
1733 Call ok(Int(-1.99) = -2, "Int(-1.99) = " & Int(-1.99))
1734 Call ok(getVT(Int(-1.99)) = "VT_R8", "getVT(Int(-1.99)) = " & getVT(Int(-1.99)))
1735 If isEnglishLang
Then
1736 Call ok(Int("1.99") = 1, "Int(""1.99"") = " & Int("1.99"))
1737 Call ok(getVT(Int("1.99")) = "VT_R8", "getVT(Int(""1.99"")) = " & getVT(Int("1.99")))
1738 Call ok(Int("-1.99") = -2, "Int(""-1.99"") = " & Int("-1.99"))
1739 Call ok(getVT(Int("-1.99")) = "VT_R8", "getVT(Int(""-1.99"")) = " & getVT(Int("-1.99")))
1741 Call ok(Int(True) = -1, "Int(True) = " & Int(True))
1742 Call ok(getVT(Int(True)) = "VT_I2", "getVT(Int(True)) = " & getVT(Int(True)))
1743 Call ok(Int(False) = 0, "Int(False) = " & Int(False))
1744 Call ok(getVT(Int(False)) = "VT_I2", "getVT(Int(False)) = " & getVT(Int(False)))
1745 MyObject
.myval
= 2.5
1746 Call ok(Int(MyObject
) = 2, "Int(MyObject) = " & Int(MyObject
))
1747 Call ok(getVT(Int(MyObject
)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject
)))
1748 MyObject
.myval
= -2.5
1749 Call ok(Int(MyObject
) = -3, "Int(MyObject) = " & Int(MyObject
))
1750 Call ok(getVT(Int(MyObject
)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject
)))
1752 Sub testSqrError(strings
, error_num1
, error_num2
)
1753 on error resume next
1758 Call ok(Err
.number
= error_num1
, "Err.number1 = " & Err
.number
)
1762 Call ok(Err
.number
= error_num2
, "Err.number2 = " & Err
.number
)
1765 Call testSqrError(-2, 5, 5)
1766 Call testSqrError(True, 5, 5)
1768 Call ok(Sqr(Empty
) = 0, "Sqr(Empty) = " & Sqr(Empty
))
1769 Call ok(getVT(Sqr(Empty
)) = "VT_R8", "getVT(Sqr(Empty)) = " & getVT(Sqr(Empty
)))
1770 Call ok(Sqr(0) = 0, "Sqr(0) = " & Sqr(0))
1771 Call ok(getVT(Sqr(0)) = "VT_R8", "getVT(Sqr(0)) = " & getVT(Sqr(0)))
1772 Call ok(Sqr(1) = 1, "Sqr(1) = " & Sqr(1))
1773 Call ok(getVT(Sqr(1)) = "VT_R8", "getVT(Sqr(1)) = " & getVT(Sqr(1)))
1774 Call ok(Sqr(CSng(121)) = 11, "Sqr(CSng(121)) = " & Sqr(CSng(121)))
1775 Call ok(getVT(Sqr(CSng(121))) = "VT_R8", "getVT(Sqr(CSng(121))) = " & getVT(Sqr(CSng(121))))
1776 Call ok(Sqr(36100) = 190, "Sqr(36100) = " & Sqr(36100))
1777 Call ok(getVT(Sqr(36100)) = "VT_R8", "getVT(Sqr(36100)) = " & getVT(Sqr(36100)))
1778 Call ok(Sqr(CCur(0.0625)) = 0.25, "Sqr(CCur(0.0625)) = " & Sqr(CCur(0.0625)))
1779 Call ok(getVT(Sqr(CCur(0.0625))) = "VT_R8", "getVT(Sqr(CCur(0.0625))) = " & getVT(Sqr(CCur(0.0625))))
1780 Call ok(Sqr("100000000") = 10000, "Sqr(""100000000"") = " & Sqr("100000000"))
1781 Call ok(getVT(Sqr("100000000")) = "VT_R8", "getVT(Sqr(""100000000"")) = " & getVT(Sqr("100000000")))
1782 Call ok(Sqr(False) = 0, "Sqr(False) = " & Sqr(False))
1783 Call ok(getVT(Sqr(False)) = "VT_R8", "getVT(Sqr(False)) = " & getVT(Sqr(False)))
1784 Call ok(Sqr(CByte(225)) = 15, "Sqr(CByte(225)) = " & Sqr(CByte(225)))
1785 Call ok(getVT(Sqr(CByte(225))) = "VT_R8", "getVT(Sqr(CByte(225))) = " & getVT(Sqr(CByte(225))))
1787 Function Approch(func
, res
)
1788 If Abs(func
- res
) < 0.001 Then
1795 Const PI
= 3.1415926
1797 Call ok(Approch(Cos(Empty
), 1), "Cos(Empty) = " & Cos(Empty
))
1798 Call ok(getVT(Cos(Empty
)) = "VT_R8", "getVT(Cos(Empty)) = " & getVT(Cos(Empty
)))
1799 Call ok(Approch(Cos(PI
/ 6), Sqr(3) / 2), "Cos(PI / 6) = " & Cos(PI
/ 6))
1800 Call ok(getVT(Cos(PI
/ 6)) = "VT_R8", "getVT(Cos(PI / 6)) = " & getVT(Cos(PI
/ 6)))
1801 Call ok(Approch(Cos(CCur(PI
/ 4)), Sqr(2) / 2), "Cos(CCur(PI / 4)) = " & Cos(CCur(PI
/ 4)))
1802 Call ok(getVT(Cos(CCur(PI
/ 4))) = "VT_R8", "getVT(Cos(CCur(PI / 4))) = " & getVT(Cos(CCur(PI
/ 4))))
1803 Call ok(Approch(Cos(CSng(PI
/ 3)), 1 / 2), "Cos(CSng(PI / 3)) = " & Cos(CSng(PI
/ 3)))
1804 Call ok(getVT(Cos(CSng(PI
/ 3))) = "VT_R8", "getVT(Cos(CSng(PI))) = " & getVT(Cos(CSng(PI
))))
1805 Call ok(Approch(Cos(PI
/ 2), 0), "Cos(0) = " & Cos(PI
/ 2))
1806 Call ok(getVT(Cos(PI
/ 2)) = "VT_R8", "getVT(Cos(PI / 2)) = " & getVT(Cos(PI
/ 2)))
1807 Call ok(Approch(Cos(PI
), -1), "Cos(PI) = " & Cos(PI
))
1808 Call ok(getVT(Cos(PI
)) = "VT_R8", "getVT(Cos(PI)) = " & getVT(Cos(PI
)))
1809 Call ok(Approch(Cos(5 * PI
/ 4), -Sqr(2) / 2), "Cos(5 * PI / 4) = " & Cos(5 * PI
/ 4))
1810 Call ok(getVT(Cos(5 * PI
/ 4)) = "VT_R8", "getVT(Cos(5 * PI / 4)) = " & getVT(Cos(5 * PI
/ 4)))
1811 Call ok(Approch(Cos(3 * PI
/ 2), 0), "Cos(3 * PI / 2) = " & Cos(3 * PI
/ 2))
1812 Call ok(getVT(Cos(3 * PI
/ 2)) = "VT_R8", "getVT(Cos(3 * PI / 2)) = " & getVT(Cos(3 * PI
/ 2)))
1813 Call ok(Approch(Cos(2 * PI
), 1), "Cos(2 * PI) = " & Cos(2 * PI
))
1814 Call ok(getVT(Cos(2 * PI
)) = "VT_R8", "getVT(Cos(2 * PI)) = " & getVT(Cos(2 * PI
)))
1815 Call ok(Approch(Cos("-32768"), 0.3729), "Cos(""-32768"") = " & Cos("-32768"))
1816 Call ok(getVT(Cos("-32768")) = "VT_R8", "getVT(Cos(""-32768"")) = " & getVT(Cos("-32768")))
1817 Call ok(Approch(Cos(False), 1), "Cos(False) = " & Cos(False))
1818 Call ok(getVT(Cos(False)) = "VT_R8", "getVT(Cos(False)) = " & getVT(Cos(False)))
1819 Call ok(Approch(Cos(True), 0.5403), "Cos(True) = " & Cos(True))
1820 Call ok(getVT(Cos(True)) = "VT_R8", "getVT(Cos(True)) = " & getVT(Cos(True)))
1821 Call ok(Approch(Cos(CByte(255)), -0.8623), "Cos(CByte(255)) = " & Cos(CByte(255)))
1822 Call ok(getVT(Cos(CByte(255))) = "VT_R8", "getVT(Cos(CByte(255))) = " & getVT(Cos(CByte(255))))
1824 Call ok(Approch(Sin(Empty
), 0), "Sin(Empty) = " & Sin(Empty
))
1825 Call ok(getVT(Sin(Empty
)) = "VT_R8", "getVT(Sin(Empty)) = " & getVT(Sin(Empty
)))
1826 Call ok(Approch(Sin(PI
/ 6), 1 / 2), "Sin(PI / 6) = " & Sin(PI
/ 6))
1827 Call ok(getVT(Sin(PI
/ 6)) = "VT_R8", "getVT(Sin(PI / 6)) = " & getVT(Sin(PI
/ 6)))
1828 Call ok(Approch(Sin(CCur(PI
/ 4)), Sqr(2) / 2), "Sin(CCur(PI / 4)) = " & Sin(CCur(PI
/ 4)))
1829 Call ok(getVT(Sin(CCur(PI
/ 4))) = "VT_R8", "getVT(Sin(CCur(PI / 4))) = " & getVT(Sin(CCur(PI
/ 4))))
1830 Call ok(Approch(Sin(CSng(PI
/ 3)), Sqr(3) / 2), "Sin(CSng(PI / 3)) = " & Sin(CSng(PI
/ 3)))
1831 Call ok(getVT(Sin(CSng(PI
/ 3))) = "VT_R8", "getVT(Sin(CSng(PI))) = " & getVT(Sin(CSng(PI
))))
1832 Call ok(Approch(Sin(PI
/ 2), 1), "Sin(0) = " & Sin(PI
/ 2))
1833 Call ok(getVT(Sin(PI
/ 2)) = "VT_R8", "getVT(Sin(PI / 2)) = " & getVT(Sin(PI
/ 2)))
1834 Call ok(Approch(Sin(PI
), 0), "Sin(PI) = " & Sin(PI
))
1835 Call ok(getVT(Sin(PI
)) = "VT_R8", "getVT(Sin(PI)) = " & getVT(Sin(PI
)))
1836 Call ok(Approch(Sin(5 * PI
/ 4), -Sqr(2) / 2), "Sin(5 * PI / 4) = " & Sin(5 * PI
/ 4))
1837 Call ok(getVT(Sin(5 * PI
/ 4)) = "VT_R8", "getVT(Sin(5 * PI / 4)) = " & getVT(Sin(5 * PI
/ 4)))
1838 Call ok(Approch(Sin(3 * PI
/ 2), -1), "Sin(3 * PI / 2) = " & Sin(3 * PI
/ 2))
1839 Call ok(getVT(Sin(3 * PI
/ 2)) = "VT_R8", "getVT(Sin(3 * PI / 2)) = " & getVT(Sin(3 * PI
/ 2)))
1840 Call ok(Approch(Sin(2 * PI
), 0), "Sin(2 * PI) = " & Sin(2 * PI
))
1841 Call ok(getVT(Sin(2 * PI
)) = "VT_R8", "getVT(Sin(2 * PI)) = " & getVT(Sin(2 * PI
)))
1842 Call ok(Approch(Sin("-32768"), -0.9278), "Sin(""-32768"") = " & Sin("-32768"))
1843 Call ok(getVT(Sin("-32768")) = "VT_R8", "getVT(Sin(""-32768"")) = " & getVT(Sin("-32768")))
1844 Call ok(Approch(Sin(False), 0), "Sin(False) = " & Sin(False))
1845 Call ok(getVT(Sin(False)) = "VT_R8", "getVT(Sin(False)) = " & getVT(Sin(False)))
1846 Call ok(Approch(Sin(True), -0.84147), "Sin(True) = " & Sin(True))
1847 Call ok(getVT(Sin(True)) = "VT_R8", "getVT(Sin(True)) = " & getVT(Sin(True)))
1848 Call ok(Approch(Sin(CByte(255)), -0.5063), "Sin(CByte(255)) = " & Sin(CByte(255)))
1849 Call ok(getVT(Sin(CByte(255))) = "VT_R8", "getVT(Sin(CByte(255))) = " & getVT(Sin(CByte(255))))
1851 Call ok(Approch(Tan(Empty
), 0), "Tan(Empty) = " & Tan(Empty
))
1852 Call ok(getVT(Tan(Empty
)) = "VT_R8", "getVT(Tan(Empty)) = " & getVT(Tan(Empty
)))
1853 Call ok(Approch(Tan(PI
/ 6), Sqr(3) / 3), "Tan(PI / 6) = " & Tan(PI
/ 6))
1854 Call ok(getVT(Tan(PI
/ 6)) = "VT_R8", "getVT(Tan(PI / 6)) = " & getVT(Tan(PI
/ 6)))
1855 Call ok(Approch(Tan(CCur(PI
/ 4)), 1), "Tan(CCur(PI / 4)) = " & Tan(CCur(PI
/ 4)))
1856 Call ok(getVT(Tan(CCur(PI
/ 4))) = "VT_R8", "getVT(Tan(CCur(PI / 4))) = " & getVT(Tan(CCur(PI
/ 4))))
1857 Call ok(Approch(Tan(CSng(PI
/ 3)), Sqr(3)), "Tan(CSng(PI / 3)) = " & Tan(CSng(PI
/ 3)))
1858 Call ok(getVT(Tan(CSng(PI
/ 3))) = "VT_R8", "getVT(Tan(CSng(PI))) = " & getVT(Tan(CSng(PI
))))
1859 Call ok(Approch(Tan(PI
), 0), "Tan(PI) = " & Tan(PI
))
1860 Call ok(getVT(Tan(PI
)) = "VT_R8", "getVT(Tan(PI)) = " & getVT(Tan(PI
)))
1861 Call ok(Approch(Tan(3 * PI
/ 4), -1), "Tan(3 * PI / 4) = " & Tan(3 * PI
/ 4))
1862 Call ok(getVT(Tan(3 * PI
/ 4)) = "VT_R8", "getVT(Tan(3 * PI / 4)) = " & getVT(Tan(3 * PI
/ 4)))
1863 Call ok(Approch(Tan(5 * PI
/ 4), 1), "Tan(5 * PI / 4) = " & Tan(5 * PI
/ 4))
1864 Call ok(getVT(Tan(5 * PI
/ 4)) = "VT_R8", "getVT(Tan(5 * PI / 4)) = " & getVT(Tan(5 * PI
/ 4)))
1865 Call ok(Approch(Tan(2 * PI
), 0), "Tan(2 * PI) = " & Tan(2 * PI
))
1866 Call ok(getVT(Tan(2 * PI
)) = "VT_R8", "getVT(Tan(2 * PI)) = " & getVT(Tan(2 * PI
)))
1867 Call ok(Approch(Tan("-32768"), -2.4879), "Tan(""-32768"") = " & Tan("-32768"))
1868 Call ok(getVT(Tan("-32768")) = "VT_R8", "getVT(Tan(""-32768"")) = " & getVT(Tan("-32768")))
1869 Call ok(Approch(Tan(False), 0), "Tan(False) = " & Tan(False))
1870 Call ok(getVT(Tan(False)) = "VT_R8", "getVT(Tan(False)) = " & getVT(Tan(False)))
1871 Call ok(Approch(Tan(True), -1.5574), "Tan(True) = " & Tan(True))
1872 Call ok(getVT(Tan(True)) = "VT_R8", "getVT(Tan(True)) = " & getVT(Tan(True)))
1873 Call ok(Approch(Tan(CByte(255)), 0.5872), "Tan(CByte(255)) = " & Tan(CByte(255)))
1874 Call ok(getVT(Tan(CByte(255))) = "VT_R8", "getVT(Tan(CByte(255))) = " & getVT(Tan(CByte(255))))
1876 Call ok(Approch(Atn(Empty
), 0), "Atn(Empty) = " & Atn(Empty
))
1877 Call ok(getVT(Atn(Empty
)) = "VT_R8", "getVT(Atn(Empty)) = " & getVT(Atn(Empty
)))
1878 Call ok(Approch(Atn(Sqr(3) / 3), PI
/ 6), "Atn(Sqr(3) / 3) = " & Atn(Sqr(3) / 3))
1879 Call ok(getVT(Atn(Sqr(3) / 3)) = "VT_R8", "getVT(Atn(Sqr(3) / 3)) = " & getVT(Atn(Sqr(3) / 3)))
1880 Call ok(Approch(Atn(CCur(1)), PI
/ 4), "Atn(CCur(1)) = " & Atn(CCur(1)))
1881 Call ok(getVT(Atn(CCur(1))) = "VT_R8", "getVT(Atn(CCur(1))) = " & getVT(Atn(CCur(1))))
1882 Call ok(Approch(Atn(CSng(Sqr(3))), PI
/ 3), "Atn(CSng(Sqr(3))) = " & Atn(CSng(Sqr(3))))
1883 Call ok(getVT(Atn(CSng(Sqr(3)))) = "VT_R8", "getVT(Atn(CSng(PI))) = " & getVT(Atn(CSng(PI
))))
1884 Call ok(Approch(Atn(0), 0), "Atn(0) = " & Atn(0))
1885 Call ok(getVT(Atn(0)) = "VT_R8", "getVT(Atn(0)) = " & getVT(Atn(0)))
1886 Call ok(Approch(Atn(-1), -PI
/ 4), "Atn(-1) = " & Atn(-1))
1887 Call ok(getVT(Atn(-1)) = "VT_R8", "getVT(Atn(-1)) = " & getVT(Atn(-1)))
1888 Call ok(Approch(Atn("-32768"), -1.5707), "Atn(""-32768"") = " & Atn("-32768"))
1889 Call ok(getVT(Atn("-32768")) = "VT_R8", "getVT(Atn(""-32768"")) = " & getVT(Atn("-32768")))
1890 Call ok(Approch(Atn(False), 0), "Atn(False) = " & Atn(False))
1891 Call ok(getVT(Atn(False)) = "VT_R8", "getVT(Atn(False)) = " & getVT(Atn(False)))
1892 Call ok(Approch(Atn(True), -0.7853), "Atn(True) = " & Atn(True))
1893 Call ok(getVT(Atn(True)) = "VT_R8", "getVT(Atn(True)) = " & getVT(Atn(True)))
1894 Call ok(Approch(Atn(CByte(255)), 1.5668), "Atn(CByte(255)) = " & Atn(CByte(255)))
1895 Call ok(getVT(Atn(CByte(255))) = "VT_R8", "getVT(Atn(CByte(255))) = " & getVT(Atn(CByte(255))))
1897 Call ok(Approch(Exp(Empty
), 1), "Exp(Empty) = " & Exp(Empty
))
1898 Call ok(getVT(Exp(Empty
)) = "VT_R8", "getVT(Exp(Empty)) = " & getVT(Exp(Empty
)))
1899 Call ok(Approch(Exp(1), 2.7182), "Exp(1) = " & Exp(1))
1900 Call ok(getVT(Exp(1)) = "VT_R8", "getVT(Exp(1)) = " & getVT(Exp(1)))
1901 Call ok(Approch(Exp(CCur(-1)), 0.3678), "Exp(CCur(-1)) = " & Exp(CCur(-1)))
1902 Call ok(getVT(Exp(CCur(-1))) = "VT_R8", "getVT(Exp(CCur(-1))) = " & getVT(Exp(CCur(-1))))
1903 Call ok(Approch(Exp(CSng(0.5)), 1.6487), "Exp(CSng(0.5)) = " & Exp(CSng(0.5)))
1904 Call ok(getVT(Exp(CSng(0.5))) = "VT_R8", "getVT(Exp(CSng(PI))) = " & getVT(Exp(CSng(PI
))))
1905 Call ok(Approch(Exp(-0.5), 0.6065), "Exp(-0.5) = " & Exp(-0.5))
1906 Call ok(getVT(Exp(-0.5)) = "VT_R8", "getVT(Exp(-0.5)) = " & getVT(Exp(-0.5)))
1907 Call ok(Approch(Exp("-2"), 0.1353), "Exp(""-2"") = " & Exp("-2"))
1908 Call ok(getVT(Exp("-2")) = "VT_R8", "getVT(Exp(""-2"")) = " & getVT(Exp("-2")))
1909 Call ok(Approch(Exp(False), 1), "Exp(False) = " & Exp(False))
1910 Call ok(getVT(Exp(False)) = "VT_R8", "getVT(Exp(False)) = " & getVT(Exp(False)))
1911 Call ok(Approch(Exp(True), 0.3678), "Exp(True) = " & Exp(True))
1912 Call ok(getVT(Exp(True)) = "VT_R8", "getVT(Exp(True)) = " & getVT(Exp(True)))
1913 Call ok(Approch(Exp(CByte(2)), 7.389), "Exp(CByte(2)) = " & Exp(CByte(2)))
1914 Call ok(getVT(Exp(CByte(2))) = "VT_R8", "getVT(Exp(CByte(2))) = " & getVT(Exp(CByte(2))))
1916 Sub testLogError(strings
, error_num1
, error_num2
)
1917 on error resume next
1922 Call ok(Err
.number
= error_num1
, "Err.number1 = " & Err
.number
)
1926 Call ok(Err
.number
= error_num2
, "Err.number2 = " & Err
.number
)
1929 Call testLogError(0, 5, 5)
1930 Call testLogError(-2, 5, 5)
1931 Call testLogError(False, 5, 5)
1932 Call testLogError(True, 5, 5)
1933 Call ok(Approch(Log(1), 0), "Log(1) = " & Log(1))
1934 Call ok(getVT(Log(1)) = "VT_R8", "getVT(Log(1)) = " & getVT(Log(1)))
1935 Call ok(Approch(Log(CCur(0.5)), -0.6931), "Log(CCur(0.5)) = " & Log(CCur(0.5)))
1936 Call ok(getVT(Log(CCur(0.5))) = "VT_R8", "getVT(Log(CCur(0.5))) = " & getVT(Log(CCur(0.5))))
1937 Call ok(Approch(Log(CSng(2.7182)), 1), "Log(CSng(2.7182)) = " & Log(CSng(2.7182)))
1938 Call ok(getVT(Log(CSng(2.7182))) = "VT_R8", "getVT(Log(CSng(PI))) = " & getVT(Log(CSng(PI
))))
1939 Call ok(Approch(Log(32768), 10.3972), "Log(32768) = " & Log(32768))
1940 Call ok(getVT(Log(32768)) = "VT_R8", "getVT(Log(32768)) = " & getVT(Log(32768)))
1941 Call ok(Approch(Log("10"), 2.3025), "Log(""10"") = " & Log("10"))
1942 Call ok(getVT(Log("10")) = "VT_R8", "getVT(Log(""10"")) = " & getVT(Log("10")))
1943 Call ok(Approch(Log(CByte(2)), 0.6931), "Log(CByte(2)) = " & Log(CByte(2)))
1944 Call ok(getVT(Log(CByte(2))) = "VT_R8", "getVT(Log(CByte(2))) = " & getVT(Log(CByte(2))))
1946 Call ok(getVT(Date) = "VT_DATE", "getVT(Date) = " & getVT(Date))
1947 Call ok(getVT(Time
) = "VT_DATE", "getVT(Time) = " & getVT(Time
))
1949 Call ok(getVT(Day(now
)) = "VT_I2", "getVT(Day(now)) = " & getVT(Day(now
)))
1950 Call ok(Day(2) = 1, "Day(2) = " & Day(2))
1951 Call ok(getVT(Month(now
)) = "VT_I2", "getVT(Month(now)) = " & getVT(Month(now
)))
1952 Call ok(Month(2) = 1, "Month(2) = " & Month(2))
1953 Call ok(getVT(Year(now
)) = "VT_I2", "getVT(Year(now)) = " & getVT(Year(now
)))
1954 Call ok(Year(2) = 1900, "Year(2) = " & Year(2))
1955 Call ok(getVT(Hour(now
)) = "VT_I2", "getVT(Hour(now)) = " & getVT(Hour(now
)))
1956 Call ok(Hour(2) = 0, "Hour(2) = " & Hour(2))
1957 Call ok(Hour(2.75) = 18, "Hour(2) = " & Hour(2.75))
1958 Call ok(getVT(Minute(now
)) = "VT_I2", "getVT(Minute(now)) = " & getVT(Minute(now
)))
1959 Call ok(Minute(2) = 0, "Minute(2) = " & Minute(2))
1960 Call ok(Minute(2.02083) = 30, "Minute(2.02083) = " & Minute(2.02083))
1961 Call ok(getVT(Second(now
)) = "VT_I2", "getVT(Second(now)) = " & getVT(Second(now
)))
1962 Call ok(Second(2) = 0, "Second(2) = " & Second(2))
1964 Sub testRGBError(arg1
, arg2
, arg3
, error_num
)
1965 on error resume next
1969 x
= RGB(arg1
, arg2
, arg3
)
1970 Call ok(Err
.number
= error_num
, "Err.number1 = " & Err
.number
)
1973 Call RGB(arg1
, arg2
, arg3
)
1974 Call ok(Err
.number
= error_num
, "Err.number2 = " & Err
.number
)
1977 Call ok(RGB(0, &h1f
&, &hf1
&) = &hf11f00
&, "RGB(0, &h1f&, &hf1&) = " & RGB(0, &h1f
&, &hf1
&))
1978 Call ok(getVT(RGB(0, &h1f
&, &hf1
&)) = "VT_I4", "getVT(RGB(&hf1&, &h1f&, &hf1&)) = " & getVT(RGB(&hf1
&, &h1f
&, &hf1
&)))
1979 Call ok(RGB(&hef
&, &hab
&, &hcd
&) = &hcdabef
&, "RGB(&hef&, &hab&, &hcd&) = " & RGB(&hef
&, &hab
&, &hcd
&))
1980 Call ok(getVT(RGB(&hef
&, &hab
&, &hcd
&)) = "VT_I4", "getVT(RGB(&hef&, &hab&, &hcd&)) = " & getVT(RGB(&hef
&, &hab
&, &hcd
&)))
1981 Call ok(RGB(&h1
&, &h100
&, &h111
&) = &hffff01
&, "RGB(&h1&, &h100&, &h111&) = " & RGB(&h1
&, &h100
&, &h111
&))
1982 Call ok(getVT(RGB(&h1
&, &h100
&, &h111
&)) = "VT_I4", "getVT(RGB(&h1&, &h100&, &h111&)) = " & getVT(RGB(&h1
&, &h100
&, &h111
&)))
1983 Call testRGBError(-1, &h1e
&, &h3b
&, 5)
1984 Call testRGBError(&h4d
&, -2, &h2f
&, 5)
1986 Call ok(getVT(Timer
) = "VT_R4", "getVT(Timer) = " & getVT(Timer
))
1988 sub testAsc(arg
, expected
)
1991 call ok(x
= expected
, "x = " & x
& " expected " & expected
)
1992 call ok(getVT(x
) = "VT_I2*", "getVT = " & getVT(x
))
1996 on error resume next
1999 Call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2002 Call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2005 Call ok(Err
.number
= 450, "Err.number = " & Err
.number
)
2007 call Asc(Chr(260)) ' some versions of vista allow it
2008 Call ok(Err
.number
= 5 or Err
.number
= 0, "asc4 Err.number = " & Err
.number
)
2011 Call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2014 call testAsc("T", 84)
2015 call testAsc("test", 116)
2016 call testAsc("3", 51)
2018 call testAsc(" ", 32)
2019 call testAsc(Chr(255), 255)
2020 call testAsc(Chr(0), 0)
2021 if isEnglishLang
then testAsc
true, 84
2022 if Asc(Chr(&h81
)) = &h8145
then
2024 call testAsc(Chr(&h8e8e
), -29042)
2025 call testAsc(Chr(220), 220)
2029 sub testErrNumber(n
)
2030 call ok(err
.number
= n
, "err.number = " & err
.number
& " expected " & n
)
2034 on error resume next
2035 call ok(err
.number
= 0, "err.number = " & err
.number
)
2037 call ok(err
.number
= 5, "err.number = " & err
.number
)
2039 call ok(err
.number
= 1, "err.number = " & err
.number
)
2041 call ok(err
.number
= 450, "err.number = " & err
.number
)
2042 call testErrNumber(450)
2044 call ok(err
.number
= -32768, "err.number = " & err
.number
)
2046 call ok(err
.number
= -1, "err.number = " & err
.number
)
2048 call ok(err
.number
= 5, "err.number = " & err
.number
)
2049 err
.raise
-3000000000
2050 call ok(err
.number
= 6, "err.number = " & err
.number
)
2052 call ok(err
.number
= -1, "err.number = " & err
.number
)
2054 call ok(err
.number
= -20, "err.number = " & err
.number
)
2056 call ok(err
.number
= 16, "err.number = " & err
.number
)
2058 call ok(err
.number
= 32768, "err.number = " & err
.number
)
2061 call ok(getVT(err
.source
) = "VT_BSTR", "err.source = " & err
.source
)
2062 call ok(getVT(err
.description
) = "VT_BSTR", "err.description = " & err
.description
)
2063 call ok(getVT(err
.helpfile
) = "VT_BSTR", "err.helpfile = " & err
.helpfile
)
2064 call ok(getVT(err
.helpcontext
) = "VT_I4", "err.helpcontext = " & err
.helpcontext
)
2065 call ok(err
.source
= "", "err.source = " & err
.source
)
2066 call ok(err
.description
= "", "err.description = " & err
.description
)
2067 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2068 call ok(err
.helpcontext
= 0, "err.helpcontext = " & err
.helpcontext
)
2071 call ok(err
.number
= 1, "err.number = " & err
.number
)
2072 call ok(err
.source
= "abc", "err.source = " & err
.source
)
2073 if isEnglishLang
then call ok(err
.description
= "Unknown runtime error", "err.description = " & err
.description
)
2074 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2076 err
.raise
1, 2, "desc", "hf", 1
2077 call ok(err
.number
= 1, "err.number = " & err
.number
)
2078 call ok(getVT(err
.source
) = "VT_BSTR", "err.source = " & err
.source
)
2079 call ok(err
.source
= "2", "err.source = " & err
.source
)
2080 call ok(err
.description
= "desc", "err.description = " & err
.description
)
2081 call ok(err
.helpfile
= "hf", "err.helpfile = " & err
.helpfile
)
2082 call ok(getVT(err
.helpcontext
) = "VT_I4", "err.helpcontext = " & err
.helpcontext
)
2083 call ok(err
.helpcontext
= 1, "err.helpcontext = " & err
.helpcontext
)
2086 call ok(err
.number
= 5, "err.number = " & err
.number
)
2087 call ok(err
.source
= "2", "err.source = " & err
.source
)
2088 call ok(err
.description
= "desc", "err.description = " & err
.description
)
2089 call ok(err
.helpfile
= "hf", "err.helpfile = " & err
.helpfile
)
2090 call ok(getVT(err
.helpcontext
) = "VT_I4", "err.helpcontext = " & err
.helpcontext
)
2091 call ok(err
.helpcontext
= 1, "err.helpcontext = " & err
.helpcontext
)
2094 err
.raise
&h8007000E
&
2095 call ok(err
.number
= 7, "err.number = " & err
.number
)
2096 if isEnglishLang
then call ok(err
.source
= "Microsoft VBScript runtime error", "err.source = " & err
.source
)
2097 if isEnglishLang
then call ok(err
.description
= "Out of memory", "err.description = " & err
.description
)
2098 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2099 call ok(err
.helpcontext
= 0, "err.helpcontext = " & err
.helpcontext
)
2103 err
.raise
&h8007000E
&
2104 call ok(err
.number
= 7, "err.number = " & err
.number
)
2105 call ok(err
.source
= "test", "err.source = " & err
.source
)
2106 if isEnglishLang
then call ok(err
.description
= "Unknown runtime error", "err.description = " & err
.description
)
2107 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2108 call ok(err
.helpcontext
= 0, "err.helpcontext = " & err
.helpcontext
)
2110 err
.raise
1, 2, "desc", "hf", 1
2112 call ok(err
.number
= 438, "err.number = " & err
.number
)
2113 if isEnglishLang
then call ok(err
.source
= "Microsoft VBScript runtime error", "err.source = " & err
.source
)
2114 if isEnglishLang
then call ok(err
.description
= "Object doesn't support this property or method", _
2115 "err.description = " & err
.description
)
2116 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2117 call ok(err
.helpcontext
= 0, "err.helpcontext = " & err
.helpcontext
)
2120 call ok(getVT(e
) = "VT_I4*", "getVT(e) = " & getVT(e
))
2121 call ok(e
= 438, "e = " & e
)
2123 err
.raise
1, 2, "desc", "hf", 1
2125 call ok(err
.number
= 0, "err.number = " & err
.number
)
2126 call ok(err
.source
= "", "err.source = " & err
.source
)
2127 call ok(err
.description
= "", "err.description = " & err
.description
)
2128 call ok(err
.helpfile
= "", "err.helpfile = " & err
.helpfile
)
2129 call ok(err
.helpcontext
= 0, "err.helpcontext = " & err
.helpcontext
)
2133 call ok(getVT(e
) = "VT_I4*", "getVT(e) = " & getVT(e
))
2134 call ok(e
= 0, "e = " & e
)
2138 sub testDateSerial(yy
, mm
, dd
, yyexp
, mmexp
, ddexp
)
2140 x
= DateSerial(yy
, mm
, dd
)
2141 call ok(Year(x
) = yyexp
, "year = " & Year(x
) & " expected " & yyexp
)
2142 call ok(Month(x
) = mmexp
, "month = " & Month(x
) & " expected " & mmexp
)
2143 call ok(Day(x
) = ddexp
, "day = " & Day(x
) & " expected " & ddexp
)
2144 call ok(Hour(x
) = 0, "hour = " & Hour(x
))
2145 call ok(Minute(x
) = 0, "minute = " & Minute(x
))
2146 call ok(Second(x
) = 0, "second = " & Second(x
))
2147 call ok(getVT(x
) = "VT_DATE*", "getVT = " & getVT(x
))
2150 sub testDateSerialError()
2151 on error resume next
2154 call DateSerial(10000, 1, 1)
2155 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2157 call DateSerial(-10000, 1, 1)
2158 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2160 x
= DateSerial(null
, 1, 1)
2161 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2162 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2164 call DateSerial(2000, null
, 1)
2165 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2167 call DateSerial(2000, 1, null
)
2168 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2171 call testDateSerial(100, 2, 1, 100, 2, 1)
2172 call testDateSerial(0, 2, 1, 2000, 2, 1)
2173 call testDateSerial(50, 2, 1, 1950, 2, 1)
2174 call testDateSerial(99, 2, 1, 1999, 2, 1)
2175 call testDateSerial(2000, 14, 2, 2001, 2, 2)
2176 call testDateSerial(9999, 12, 1, 9999, 12, 1)
2177 call testDateSerialError()
2179 sub testDateAdd(d
, interval
, number
, expected_date
)
2181 x
= DateAdd(interval
, number
, d
)
2182 call ok(Year(x
) = Year(expected_date
), "year = " & Year(x
) & " expected " & Year(expected_date
))
2183 call ok(Month(x
) = Month(expected_date
), "month = " & Month(x
) & " expected " & Month(expected_date
))
2184 call ok(Day(x
) = Day(expected_date
), "day = " & Day(x
) & " expected " & Day(expected_date
))
2185 call ok(getVT(x
) = "VT_DATE*", "getVT = " & getVT(x
))
2188 sub testDateAddError()
2189 on error resume next
2192 x
= DateAdd("k", 1, DateSerial(2000, 2, 1))
2193 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2194 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2196 call DateAdd(null
, 1, DateSerial(2000, 2, 1))
2197 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2199 call DateAdd("q", null
, DateSerial(2000, 2, 1))
2200 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2202 x
= DateAdd("q", 1, null
)
2203 call ok(getVT(x
) = "VT_NULL*", "getVT = " & getVT(x
))
2204 call ok(Err
.number
= 0, "Err.number = " & Err
.number
)
2207 call testDateAdd(DateSerial(2000, 1, 1), "yyyy", 1, DateSerial(2001, 1, 1))
2208 call testDateAdd(DateSerial(2000, 1, 1), "yYyy", 1, DateSerial(2001, 1, 1))
2209 call testDateAdd(DateSerial(2000, 1, 1), "q", 1, DateSerial(2000, 4, 1))
2210 call testDateAdd(DateSerial(2000, 1, 1), "Q", 1, DateSerial(2000, 4, 1))
2211 call testDateAdd(DateSerial(2000, 1, 1), "m", -1, DateSerial(1999, 12, 1))
2212 call testDateAdd(DateSerial(2000, 1, 1), "M", -1, DateSerial(1999, 12, 1))
2213 call testDateAdd(DateSerial(2000, 12, 31), "y", 1, DateSerial(2001, 1, 1))
2214 call testDateAdd(DateSerial(2000, 12, 31), "Y", 1, DateSerial(2001, 1, 1))
2215 call testDateAdd(DateSerial(2000, 12, 31), "d", 1, DateSerial(2001, 1, 1))
2216 call testDateAdd(DateSerial(2000, 12, 31), "D", 1, DateSerial(2001, 1, 1))
2217 call testDateAdd(DateSerial(2000, 12, 31), "w", 1, DateSerial(2001, 1, 1))
2218 call testDateAdd(DateSerial(2000, 12, 31), "W", 1, DateSerial(2001, 1, 1))
2219 call testDateAdd(DateSerial(2000, 1, 1), "y", -1, DateSerial(1999, 12, 31))
2220 call testDateAdd(DateSerial(2000, 1, 1), "d", -1, DateSerial(1999, 12, 31))
2221 call testDateAdd(DateSerial(2000, 1, 1), "w", -1, DateSerial(1999, 12, 31))
2222 call testDateAdd(DateSerial(2000, 1, 1), "ww", 1, DateSerial(2000, 1, 8))
2223 call testDateAdd(DateSerial(2000, 1, 1), "ww", -1, DateSerial(1999, 12, 25))
2224 call testDateAdd(DateSerial(2000, 1, 1), "Ww", -1, DateSerial(1999, 12, 25))
2225 call testDateAddError()
2227 sub testWeekday(d
, firstday
, wd
)
2229 x
= Weekday(d
, firstday
)
2230 call ok(x
= wd
, "weekday = " & x
& " expected " & wd
)
2231 call ok(getVT(x
) = "VT_I2*", "getVT = " & getVT(x
))
2232 if firstday
= vbSunday
then
2234 call ok(x
= wd
, "weekday = " & x
& " expected " & wd
)
2236 x
= Weekday(d
, vbUseSystemDayOfWeek
)
2237 x2
= Weekday(d
, firstDayOfWeek
)
2238 call ok(x
= x2
, "weekday = " & x
& " expected " & x2
)
2241 sub testWeekdayError()
2242 on error resume next
2245 call Weekday(DateSerial(1000, 1, 1), 10)
2246 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2248 call Weekday(DateSerial(1000, 1, 1), -1)
2249 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2251 call Weekday(null
, -1)
2252 call ok(Err
.number
= 5, "Err.number = " & Err
.number
)
2254 call Weekday(DateSerial(1000, 1, 1), null
)
2255 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2257 x
= Weekday(null
, vbSunday
)
2258 call ok(Err
.number
= 0, "Err.number = " & Err
.number
)
2259 call ok(getVT(x
) = "VT_NULL*", "getVT = " & getVT(x
))
2261 call Weekday(null
, null
)
2262 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2264 call Weekday(null
, "a")
2265 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2267 call Weekday(DateSerial(1000, 1, 1), "a")
2268 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2271 call testWeekday(DateSerial(2000, 1, 1), vbSunday
, 7)
2272 call testWeekday(DateSerial(2000, 1, 1), vbMonday
, 6)
2273 call testWeekday(DateSerial(2000, 1, 1), vbTuesday
, 5)
2274 call testWeekday(DateSerial(2000, 1, 1), vbWednesday
, 4)
2275 call testWeekday(DateSerial(2000, 1, 1), vbThursday
, 3)
2276 call testWeekday(DateSerial(2000, 1, 1), vbFriday
, 2)
2277 call testWeekday(DateSerial(2000, 1, 1), vbSaturday
, 1)
2278 call testWeekdayError()
2280 sub testMonthNameError()
2281 on error resume next
2283 call MonthName(null
)
2284 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2286 call MonthName(1, null
)
2287 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2289 call MonthName(null
, null
)
2290 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2292 call MonthName("a", null
)
2293 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2295 call testMonthNameError()
2297 sub testTimeSerial(hh
, mm
, ss
, hhexp
, mmexp
, ssexp
, dateexp
)
2299 x
= TimeSerial(hh
, mm
, ss
)
2300 call ok(Hour(x
) = hhexp
, "hour = " & Hour(x
) & " expected " & hhexp
)
2301 call ok(Minute(x
) = mmexp
, "minute = " & Minute(x
) & " expected " & mmexp
)
2302 call ok(Second(x
) = ssexp
, "second = " & Second(x
) & " expected " & ssexp
)
2303 call ok(Year(x
) = Year(dateexp
), "year = " & Year(x
))
2304 call ok(Month(x
) = Month(dateexp
), "month = " & Month(x
))
2305 call ok(Day(x
) = Day(dateexp
), "day = " & Day(x
))
2306 call ok(getVT(x
) = "VT_DATE*", "getVT = " & getVT(x
))
2309 sub testTimeSerialError()
2310 on error resume next
2313 x
= TimeSerial(null
, 1, 1)
2314 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2315 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2317 call TimeSerial(10, null
, 1)
2318 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2320 call TimeSerial(10, 1, null
)
2321 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2324 call testTimeSerial(0, 0, 0, 0, 0, 0, DateSerial(1899, 12, 30))
2325 call testTimeSerial(10, 2, 1, 10, 2, 1, DateSerial(1899, 12, 30))
2326 call testTimeSerial(0, 2, 1, 0, 2, 1, DateSerial(1899, 12, 30))
2327 call testTimeSerial(24, 2, 1, 0, 2, 1, DateSerial(1899, 12, 31))
2328 call testTimeSerial(25, 2, 1, 1, 2, 1, DateSerial(1899, 12, 31))
2329 call testTimeSerial(50, 2, 1, 2, 2, 1, DateSerial(1900, 1, 1))
2330 call testTimeSerial(10, 60, 2, 11, 0, 2, DateSerial(1899, 12, 30))
2331 call testTimeSerial(10, 0, 60, 10, 1, 0, DateSerial(1899, 12, 30))
2332 call testTimeSerialError()
2334 sub testRnd(arg
, expresult
)
2337 call ok(x
= expresult
, "result = " & x
& " expected " & expresult
)
2338 call ok(getVT(x
) = "VT_R4*", "getVT = " & getVT(x
))
2341 ' Initial seed value
2342 call testRnd(0, 327680 / 16777216)
2343 call testRnd(0, 327680 / 16777216)
2344 ' Negative argument is a seed, does not use current RNG state
2345 call ok(Rnd(-2) = Rnd(-2), "Expected same result")
2346 call ok(Rnd(-1) <> Rnd(-2), "Expected differing result")
2348 sub testRandomizeError()
2349 on error resume next
2353 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2354 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2357 ' Randomize uses current RNG value, so it's reset using Rnd(-1)
2366 call ok(x
<> y
, "Expected differing result")
2370 call ok(x
= y
, "Expected same result")
2373 call testRandomize()
2374 call testRandomizeError()
2376 sub testFormatCurrencyError()
2377 on error resume next
2380 x
= FormatCurrency(null
)
2381 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2382 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2384 x
= FormatCurrency(1000,null
)
2385 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2386 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2388 x
= FormatCurrency(1000,0,null
)
2389 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2390 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2392 x
= FormatCurrency(1000,0,0,null
)
2393 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2394 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2396 x
= FormatCurrency(1000,0,0,0,null
)
2397 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2398 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2401 sub testFormatCurrency()
2404 x
= FormatCurrency(0)
2405 x
= FormatCurrency(-1000,,,-1)
2406 call ok(getVT(x
) = "VT_BSTR*", "getVT = " & getVT(x
))
2409 call testFormatCurrency()
2410 call testFormatCurrencyError()
2412 sub testFormatPercentError()
2413 on error resume next
2416 x
= FormatPercent(null
)
2417 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2418 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2420 x
= FormatPercent(.10,null
)
2421 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2422 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2424 x
= FormatPercent(.10,0,null
)
2425 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2426 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2428 x
= FormatPercent(.10,0,0,null
)
2429 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2430 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2432 x
= FormatPercent(.10,0,0,0,null
)
2433 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2434 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2437 sub testFormatPercent()
2440 x
= FormatPercent(0)
2441 x
= FormatPercent(.12,,,-1)
2442 call ok(getVT(x
) = "VT_BSTR*", "getVT = " & getVT(x
))
2445 call testFormatPercent()
2446 call testFormatPercentError()
2448 sub testFormatDateTimeError()
2449 on error resume next
2452 x
= FormatDateTime(null
)
2453 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2454 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2456 x
= FormatDateTime(.10,null
)
2457 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2458 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2461 sub testFormatDateTime()
2464 x
= FormatDateTime(0)
2465 call ok(getVT(x
) = "VT_BSTR*", "getVT = " & getVT(x
))
2466 x
= FormatDateTime(0.1,1)
2467 call ok(getVT(x
) = "VT_BSTR*", "getVT = " & getVT(x
))
2470 call testFormatDateTime()
2471 call testFormatDateTimeError()
2473 sub testFormatNumberError()
2474 on error resume next
2477 x
= FormatNumber(null
)
2478 call ok(Err
.number
= 13, "Err.number = " & Err
.number
)
2479 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2481 x
= FormatNumber(.10,null
)
2482 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2483 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2485 x
= FormatNumber(.10,0,null
)
2486 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2487 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2489 x
= FormatNumber(.10,0,0,null
)
2490 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2491 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2493 x
= FormatNumber(.10,0,0,0,null
)
2494 call ok(Err
.number
= 94, "Err.number = " & Err
.number
)
2495 call ok(getVT(x
) = "VT_EMPTY*", "getVT = " & getVT(x
))
2498 sub testFormatNumber()
2502 x
= FormatNumber(.12,,,-1)
2503 call ok(getVT(x
) = "VT_BSTR*", "getVT = " & getVT(x
))
2506 call testFormatNumber()
2507 call testFormatNumberError()
2509 Call reportSuccess()