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