<% @language = "vbscript" %> <% option explicit %> <% ' This program tests the validation functions in validationfunctions.js ' and validationfunctions.asp dim total_failures total_failures = 0 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Test data dim isNonblank_data isNonblank_data = array ( _ array ( 1, "", false ), _ array ( 2, " ", false ), _ array ( 3, " ", false ), _ array ( 4, "a", true ), _ array ( 5, " a", true ), _ array ( 6, "a a", true ), _ array ( 7, "a ", true ), _ array ( 8, " a", true ), _ array ( 9, "a ", true ), _ array ( 10, "<>&""abcde", true ), _ array ( 11, "~!@#$", true ), _ array ( 12, vblf, false ), _ array ( 13, vbcr, false ), _ array ( 14, vbcrlf, false ) _ ) dim isEmail_data isEmail_data = array ( _ array ( 1, "", false ), _ array ( 2, " ", false ), _ array ( 3, "a", false ), _ array ( 4, "a.", false ), _ array ( 5, "a.b", false ), _ array ( 6, "a.b.", false ), _ array ( 7, "a.b.c", false ), _ array ( 8, "@", false ), _ array ( 9, "@a", false ), _ array ( 10, "@a.b", false ), _ array ( 11, "a@", false ), _ array ( 12, "a@b", false ), _ array ( 13, "a@b.", false ), _ array ( 14, "a@b.c", true ), _ array ( 15, "a.b.c@d.e.f", true ), _ array ( 16, "a.@b.c", false ), _ array ( 17, "a.b@b.c", true ), _ array ( 18, "a @b.c", false ), _ array ( 19, "a@ b.c", false ), _ array ( 20, "a@b .c", false ), _ array ( 21, "a@b. c", false ), _ array ( 22, "someone@somewhere.com", true ), _ array ( 23, " someone@somewhere.com", true ), _ array ( 24, "someone@somewhere.com ", true ), _ array ( 25, "a@abcxyzABCXYZ123890+-_.c", true ), _ array ( 26, "a@b.abcxyzABCXYZ123890+-_", true ), _ array ( 27, "abcxyzABCXYZ123890+-_@b.c", true ), _ array ( 99, "a_@b.c", true ), _ array ( 28, "!@b.c", false ), _ array ( 29, ",@b.c", false ), _ array ( 30, "?@b.c", false ), _ array ( 31, """@b.c", false ), _ array ( 32, "'@b.c", false ), _ array ( 33, "<@b.c", false ), _ array ( 34, ">@b.c", false ), _ array ( 35, "&@b.c", false ) _ ) dim numeric_data ' isWhole isInteger isDecimal isCurrency numeric_data = array ( _ array ( 1, "", false, false, false, false ), _ array ( 2, " ", false, false, false, false ), _ array ( 3, "0", true, true, true, true ), _ array ( 4, " 0", true, true, true, true ), _ array ( 5, "0 ", true, true, true, true ), _ array ( 6, "a", false, false, false, false ), _ array ( 7, " a", false, false, false, false ), _ array ( 8, "a ", false, false, false, false ), _ array ( 9, "0a", false, false, false, false ), _ array ( 10, "a0", false, false, false, false ), _ array ( 11, "asdf", false, false, false, false ), _ array ( 12, "-", false, false, false, false ), _ array ( 13, "+", false, false, false, false ), _ array ( 14, "-0", false, true, true, true ), _ array ( 15, "+0", false, true, true, true ), _ array ( 16, "-1", false, true, true, true ), _ array ( 17, "+1", false, true, true, true ), _ array ( 18, "- 1", false, false, false, false ), _ array ( 19, "+ 1", false, false, false, false ), _ array ( 20, ".", false, false, false, false ), _ array ( 21, ".0", false, false, true, false ), _ array ( 22, ".1", false, false, true, false ), _ array ( 23, ". 1", false, false, false, false ), _ array ( 24, ".01", false, false, true, true ), _ array ( 25, ".001", false, false, true, false ), _ array ( 26, "-.", false, false, false, false ), _ array ( 27, "+.", false, false, false, false ), _ array ( 28, "- .", false, false, false, false ), _ array ( 29, "+ .", false, false, false, false ), _ array ( 30, "- .1", false, false, false, false ), _ array ( 31, "-. 1", false, false, false, false ), _ array ( 32, "0", true, true, true, true ), _ array ( 33, "1", true, true, true, true ), _ array ( 34, "12", true, true, true, true ), _ array ( 35, "1234567890", true, true, true, true ), _ array ( 36, "0.", false, false, false, false ), _ array ( 37, "1.", false, false, false, false ), _ array ( 38, "1.0", false, false, true, false ), _ array ( 39, "1.1", false, false, true, false ), _ array ( 40, "1.12", false, false, true, true ), _ array ( 41, "1.123", false, false, true, false ), _ array ( 42, "1.123456789", false, false, true, false ), _ array ( 43, "12.", false, false, false, false ), _ array ( 44, "12.3", false, false, true, false ), _ array ( 45, "12.34", false, false, true, true ), _ array ( 46, "12.345", false, false, true, false ), _ array ( 47, "123456789.0", false, false, true, false ) _ ) dim isValidCC_data isValidCC_data = array ( _ array ( 1, "junk", "0000000000000000", false), _ array ( 2, "visa", "4111-1111-1111-1111", true ), _ array ( 3, "visa", "4111 1111 1111 1111", true ), _ array ( 4, "visa", " 4111111111111111 ", true ), _ array ( 5, "visa", "abc4111111111111111abc", true ), _ array ( 6, "visa", "4111111111111110", false), _ array ( 7, "visa", "4111111111111111", true ), _ array ( 8, "visa", "4111111111111112", false), _ array ( 9, "visa", "4111111111111113", false), _ array ( 10, "visa", "4111111111111114", false), _ array ( 11, "visa", "4111111111111115", false), _ array ( 12, "visa", "4111111111111116", false), _ array ( 13, "visa", "4111111111111117", false), _ array ( 14, "visa", "4111111111111118", false), _ array ( 15, "visa", "4111111111111119", false), _ array ( 16, "visa", "411111111111111", false), _ array ( 17, "visa", "0000000000000000", false), _ array ( 18, "visa", "0000000000000042", false), _ array ( 19, "mc", "5111111111111118", true ), _ array ( 20, "mc", "5211111111111117", true ), _ array ( 21, "mc", "5311111111111116", true ), _ array ( 22, "mc", "5411111111111115", true ), _ array ( 23, "mc", "5511111111111114", true ), _ array ( 24, "amex", "341111111111111", true ), _ array ( 25, "disc", "6011601160116611", true ) _ ) 'TODO: get better test data for this. 'I'm sure as hell not going to use *my* bank account number dim isValidABA_data isValidABA_data = array ( _ array ( 1, "", false ), _ array ( 2, " ", false ), _ array ( 3, "a", false ), _ array ( 4, "1", false ), _ array ( 5, "12345678", false ), _ array ( 6, "1234567800", false ), _ array ( 7, "123456780", true ), _ array ( 8, " 123456780 ", true ), _ array ( 9, "123-456-780", true ), _ array ( 10, "1.23.45.67.80", true ), _ array ( 11, "ab123456780ab", true ), _ array ( 12, "123456781", false ), _ array ( 13, "123456782", false ), _ array ( 14, "123456783", false ), _ array ( 15, "123456784", false ), _ array ( 16, "123456785", false ), _ array ( 17, "123456786", false ), _ array ( 18, "123456787", false ), _ array ( 19, "123456788", false ), _ array ( 20, "123456789", false ) _ ) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Escape CR and LF in a string function escape_string (s) escape_string = replace (replace (s, vbcr, "\r"), vblf, "\n") end function ' Escape a string for javascript, escape quotes, CR, LF, put quotes around the result function js_str (s) js_str = """" & replace (replace (replace (s, """", "\"""), vbcr, "\r"), vblf, "\n") & """" end function ' Run a single test in vbscript function run_testfunction (func, p1, p2) dim result select case func case "isNonblank": result = isNonblank (p1) case "isAlNum": result = isAlNum (p1) case "isWhole": result = isWhole (p1) case "isInteger": result = isInteger (p1) case "isDecimal": result = isDecimal (p1) case "isCurrency": result = isCurrency (p1) case "isEmail": result = isEmail (p1) case "isValidCC": result = isValidCC (p1, p2) case "isValidABA": result = isValidABA (p1) case else err.raise vbObjectError, "run_testfunction", "invalid case" end select run_testfunction = result end function ' Run a set of tests function runtest (testdata, arg_count, result_col, func) dim h, i, j, failcount dim expected, result, failed failcount = 0 h = "" & vbcrlf h = h & "" & vbcrlf h = h & "" & vbcrlf ' Header h = h & "" for i = 1 to arg_count h = h & "" next h = h & "" & vbcrlf h = h & "" & vbcrlf for i = 0 to ubound (testdata) h = h & "" for j = 1 to arg_count h = h & "" next expected = testdata (i)(result_col) h = h & "" ' vbscript test select case arg_count case 1: result = run_testfunction (func, testdata (i)(1), null) case 2: result = run_testfunction (func, testdata (i)(1), testdata (i)(2)) end select failed = (result <> expected) if failed then h = h & "" failcount = failcount + 1 else h = h & "" end if ' javascript test select case arg_count case 1: h = h & "" case 2: h = h & "" end select h = h & "" & vbcrlf next h = h & "" ' vbscript fail count if failcount = 0 then h = h & "" else h = h & "" end if total_failures = total_failures + failcount ' javascript fail count h = h & "" & vbcrlf h = h & "" & vbcrlf h = h & "
" & func & " test
test #arg " & i & "Results:
expectedvbscriptjavascript
" & testdata (i)(0) & """" & server.htmlencode (escape_string (testdata (i)(j))) & """" & lcase (expected) & "" & lcase (result) & "" & lcase (result) & "
Failed tests:0" & failcount & "


" & vbcrlf runtest = h end function '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' %> Validation validation

Validation validation

<%= runtest (isNonblank_data, 1, 2, "isNonblank") %> <%= runtest (numeric_data, 1, 2, "isWhole") %> <%= runtest (numeric_data, 1, 3, "isInteger") %> <%= runtest (numeric_data, 1, 4, "isDecimal") %> <%= runtest (numeric_data, 1, 5, "isCurrency") %> <%= runtest (isEmail_data, 1, 2, "isEmail") %> <%= runtest (isValidCC_data, 2, 3, "isValidCC") %> <%= runtest (isValidABA_data, 1, 2, "isValidABA") %> Total failures:
vbscript: <%= total_failures %>
javascript: