| <!DOCTYPE html> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <title>Native Base64 Tests</title> |
| <script src="include/util.js"></script> |
| <script src="include/webutil.js"></script> |
| <script src="include/base64.js"></script> |
| </head> |
| <body> |
| <h1>Native Base64 Tests</h1> |
| |
| <br> |
| Messages:<br> |
| <textarea id="debug" style="font-size: 9px;" cols=80 rows=25></textarea> |
| |
| <br> |
| </body> |
| |
| <script> |
| function debug(str) { |
| console.log(str); |
| cell = $D('debug'); |
| cell.innerHTML += str + "\n"; |
| cell.scrollTop = cell.scrollHeight; |
| } |
| |
| function assertRun(code, result) { |
| try { |
| var actual = eval(code); |
| } catch (exc) { |
| debug("FAIL: '" + code + "' threw an exception"); |
| fail += 1; |
| return false; |
| } |
| if (actual !== result) { |
| debug("FAIL: '" + code + "' returned '" + actual + "', expected '" + result + "'"); |
| fail += 1; |
| return false; |
| } |
| debug("PASS: '" + code + "' returned expected '" + result +"'"); |
| pass += 1; |
| return true; |
| } |
| |
| function Base64_decode(data) { |
| var arr = Base64.decode (data); |
| return arr.map(function (num) { |
| return String.fromCharCode(num); } ).join(''); |
| |
| } |
| |
| window.onload = function() { |
| var str; |
| debug('onload'); |
| fail = 0; |
| pass = 0; |
| assertRun('window.btoa("hello world")', 'aGVsbG8gd29ybGQ='); |
| assertRun('window.btoa("a")', 'YQ=='); |
| assertRun('window.btoa("ab")', 'YWI='); |
| assertRun('window.btoa("abc")', 'YWJj'); |
| assertRun('window.btoa("abcd")', 'YWJjZA=='); |
| assertRun('window.btoa("abcde")', 'YWJjZGU='); |
| assertRun('window.btoa("abcdef")', 'YWJjZGVm'); |
| assertRun('window.btoa("abcdefg")', 'YWJjZGVmZw=='); |
| assertRun('window.btoa("abcdefgh")', 'YWJjZGVmZ2g='); |
| |
| assertRun('window.atob("aGVsbG8gd29ybGQ=")', 'hello world'); |
| assertRun('Base64_decode("aGVsbG8gd29ybGQ=")', 'hello world'); |
| assertRun('window.atob("YQ==")', 'a'); |
| assertRun('Base64_decode("YQ==")', 'a'); |
| assertRun('window.atob("YWI=")', 'ab'); |
| assertRun('Base64_decode("YWI=")', 'ab'); |
| assertRun('window.atob("YWJj")', 'abc'); |
| assertRun('Base64_decode("YWJj")', 'abc'); |
| assertRun('window.atob("YWJjZA==")', 'abcd'); |
| assertRun('Base64_decode("YWJjZA==")', 'abcd'); |
| assertRun('window.atob("YWJjZGU=")', 'abcde'); |
| assertRun('Base64_decode("YWJjZGU=")', 'abcde'); |
| assertRun('window.atob("YWJjZGVm")', 'abcdef'); |
| assertRun('Base64_decode("YWJjZGVm")', 'abcdef'); |
| |
| assertRun('typeof window.btoa', 'function'); |
| assertRun('window.btoa("")', ''); |
| assertRun('window.btoa(null)', ''); |
| assertRun('window.atob(window.btoa(window))', window.toString()); // "[object DOMWindow]" |
| assertRun('window.btoa("\\u0080\\u0081")', 'gIE='); |
| |
| debug("Tests failed: " + fail); |
| debug("Tests passed: " + pass); |
| } |
| </script> |