summaryrefslogtreecommitdiffstats
path: root/website
diff options
context:
space:
mode:
authorBill Ticehurst <billti@microsoft.com>2012-08-09 15:02:49 -0700
committerBill Ticehurst <billti@microsoft.com>2012-08-09 15:02:49 -0700
commit9d19c87e3ede843a95fbe590398aebc525818294 (patch)
tree8309b22ff3e3d43ffc3f0e2580e580e7de5a7c89 /website
parent1ba4238d9a60fb9072d7e43da8a19d271580b5dc (diff)
Bug 610: Handle supplementary characters.
Diffstat (limited to 'website')
-rw-r--r--website/harness/jquery.base64.js24
-rw-r--r--website/json/ch06.json14
-rw-r--r--website/json/default.json3
-rw-r--r--website/json/suiteDescrip.json2
-rw-r--r--website/json/testcases_ch06.json6
-rw-r--r--website/testcases_ch06.html183
6 files changed, 225 insertions, 7 deletions
diff --git a/website/harness/jquery.base64.js b/website/harness/jquery.base64.js
index e9168e886..9e3ff5f2e 100644
--- a/website/harness/jquery.base64.js
+++ b/website/harness/jquery.base64.js
@@ -70,21 +70,35 @@
var uTF8Decode = function(input) {
var string = "";
var i = 0;
- var c = c1 = c2 = 0;
+ var c = c2 = c3 = c4 = 0;
while ( i < input.length ) {
c = input.charCodeAt(i);
- if (c < 128) {
+ if (c < 128) { // 1 byte encoding - ASCII only
string += String.fromCharCode(c);
i++;
- } else if ((c > 191) && (c < 224)) {
+ } else if ((c >= 192) && (c < 224)) { // 2 byte encoding - max U+07FF
c2 = input.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
- } else {
+ } else if ((c >= 224) && (c < 240)) { // 3 byte encoding - max U+FFFF
c2 = input.charCodeAt(i+1);
c3 = input.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
+ } else if ((c >= 240) && (c < 248)){ // 4 byte encoding - max U+10FFFF. Covers all Unicode CodePoints
+ c2 = input.charCodeAt(i+1);
+ c3 = input.charCodeAt(i+2);
+ c4 = input.charCodeAt(i+3);
+ var codePoint = (((c & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63));
+ if (codePoint > 0x10FFFF) {
+ throw new SyntaxError("invalid UTF-8 code unit sequence");
+ }
+ var highSurrogate = (((codePoint - 0x10000) & 0xFFC00) >>> 10) + 0xD800; // Minus 0x10000, then top 10 bits added to 0xD800
+ var lowSurrogate = ((codePoint - 0x10000) & 0x3FF) + 0xDC00; // Minus 0x10000, then low 10 bits added to 0xDC00
+ string += String.fromCharCode(highSurrogate);
+ string += String.fromCharCode(lowSurrogate);
+ i += 4;
+
}
}
return string;
@@ -139,4 +153,4 @@
return output;
}
});
- })(jQuery); \ No newline at end of file
+ })(jQuery);
diff --git a/website/json/ch06.json b/website/json/ch06.json
new file mode 100644
index 000000000..ed975ed43
--- /dev/null
+++ b/website/json/ch06.json
@@ -0,0 +1,14 @@
+{
+"testsCollection":{
+"name":"Chapter - ch06",
+"numTests":"1",
+"tests":[
+{
+"code":"Ly8gQ29weXJpZ2h0IChjKSAyMDEyIEVjbWEgSW50ZXJuYXRpb25hbC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAovKioKICogQGRlc2NyaXB0aW9uIFRlc3QgZm9yIGhhbmRsaW5nIG9mIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycwogKi8KCnZhciBjaGFycyA9ICLwkJKgIjsgIC8vIFNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhdCBjb2RlcG9pbnQgXHV7MTA0QTB9CmlmKGNoYXJzLmxlbmd0aCAhPT0gMikgewogICAgJEVSUk9SKCJBIGNoYXJhY3RlciBvdXRzaWRlIHRoZSBCTVAgKFVuaWNvZGUgQ29kZVBvaW50ID4gMHhGRkZGKSBzaG91bGQgY29uc3VtZSB0d28gY29kZSB1bml0cyIpOwp9CmlmKGNoYXJzLmNoYXJDb2RlQXQoMCkgIT09IDB4RDgwMSkgewogICAgJEVSUk9SKCJGaXJzdCBjb2RlIHVuaXQgb2Ygc3Vycm9nYXRlIHBhaXIgZm9yIDB4MTA0QTAgc2hvdWxkIGJlIDB4RDgwMSIpOwp9CgppZihjaGFycy5jaGFyQ29kZUF0KDEpICE9PSAweERDQTApIHsKICAgICRFUlJPUigiU2Vjb25kIGNvZGUgdW5pdCBvZiBzdXJyb2dhdGUgcGFpciBmb3IgMHgxMDRBMCBzaG91bGQgYmUgMHhEQ0EwIik7Cn0K",
+"commentary":"",
+"description":"Test for handling of supplementary characters",
+"path":"TestCases/ch06/6.1.js"
+}
+]
+}
+} \ No newline at end of file
diff --git a/website/json/default.json b/website/json/default.json
index 55becc96e..b4a5cf5eb 100644
--- a/website/json/default.json
+++ b/website/json/default.json
@@ -1,6 +1,7 @@
{
-"numTests":11571,
+"numTests":11572,
"testSuite":[
+"json/ch06.json",
"json/ch07.json",
"json/ch08.json",
"json/ch09.json",
diff --git a/website/json/suiteDescrip.json b/website/json/suiteDescrip.json
index 6a1a80bc7..ed86d69a0 100644
--- a/website/json/suiteDescrip.json
+++ b/website/json/suiteDescrip.json
@@ -1 +1 @@
-{"date":"2012-09-12","version":"ES5.1"} \ No newline at end of file
+{"date":"2012-10-04","version":"ES5.1"} \ No newline at end of file
diff --git a/website/json/testcases_ch06.json b/website/json/testcases_ch06.json
new file mode 100644
index 000000000..50fcca19e
--- /dev/null
+++ b/website/json/testcases_ch06.json
@@ -0,0 +1,6 @@
+{
+"numTests":1,
+"testSuite":[
+"json/ch06.json"
+]
+} \ No newline at end of file
diff --git a/website/testcases_ch06.html b/website/testcases_ch06.html
new file mode 100644
index 000000000..101a6edb5
--- /dev/null
+++ b/website/testcases_ch06.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<script type="text/javascript" src="harness/jquery-1.4.2.min.js"></script>
+<script type="text/javascript" src="harness/sections.js"></script>
+<script type="text/javascript">
+ //Globals
+ var STANDARD = "ECMA-262";
+ var TEST_LIST_PATH = "json/testcases_ch06.json";
+</script>
+<script type="text/javascript" src="harness/sth.js"></script>
+<script type="text/javascript" src="harness/sta.js"></script>
+<script type="text/javascript" src="harness/jqueryprogressbar.js"></script>
+<script type="text/javascript" src="harness/helper.js"></script>
+<script type="text/javascript" src="harness/jquery.base64.js"></script>
+<script type="text/javascript">
+ //To support all the browsers
+ $(window).resize(ResizeLoadIndicator);
+ $(window).load(ResizeLoadIndicator);
+ function ResizeLoadIndicator() {
+ $(".indicatorContainer .disabledBackground").css({ height: ($(window).height() - 20) + "px" });
+ }
+
+ $(".indicatorContainer").click(function(e) {
+ if (!e) { var e = window.event; }
+ e.cancelBubble = true;
+ if (e.stopPropagation) { e.stopPropagation(); }
+ });
+</script>
+
+<title>ECMAScript Language – test262</title>
+<link href="styles/style.css" media="screen" rel="stylesheet" title="CSS" type="text/css" />
+</head>
+<body>
+ <div class="indicatorContainer">
+ <!--Blank div to disable back portion when indicator is shown-->
+ <div class="disabledBackground"></div>
+ <div id="loadingIndicator">
+ <div>
+ <img src="./images/spinner.gif" alt="Loading..." />
+ <span>Loading...</span>
+ </div>
+ </div>
+ </div>
+
+ <div class="wrapper">
+ <!-- This Container holds the main header -->
+ <div class="mainHeader">
+ <p><span id="ECMAscript">ECMA</span><span id="ecmaSCRIPT">Script</span> <strong>Language</strong> test262
+ <a id="ecmascriptbacklink" href='javascript:void(window.open("http://www.ecmascript.org/"));'>ECMAScript.org</a></p>
+ </div>
+ <!-- This Container holds the Navigation -->
+ <div class="navBar">
+ <ul>
+ <li><a href="#" class="selected nav-link" id="home">Home</a></li>
+ <li><a href="#" class="nav-link" id="run">Run</a></li>
+ <li><a href="#" class="nav-link test-report-link" id="results">Results</a></li>
+ <li><a href="#" class="nav-link" id="development">Development</a></li>
+ </ul>
+ </div>
+ <div class="content-container" id="contentContainer">
+ <!-- This is the Main Content Container -->
+ <div class="content-home">
+ <p class="headers">What is test262?</p>
+ <p class="content">test262 is a test suite intended to check agreement between JavaScript implementations and ECMA-262, the ECMAScript Language Specification (currently 5.1 Edition).
+ The test suite contains thousands of individual tests, each of which tests some specific requirements of the ECMAScript Language Specification.</p>
+ <p class="headers">What is ECMAScript?</p>
+ <p class="content">"ECMAScript" is the name under which the language more commonly known as "JavaScript" is standardized. Development of the ECMAScript standard is the responsibility of <a href='javascript:void(window.open("http://www.ecma-international.org/memento/TC39.htm"));'>Technical Committee 39 (TC39)</a> of <a href='javascript:void(window.open("http://www.ecma-international.org/"));'>Ecma International</a>.
+ The ECMAScript Language Specification standard is officially known as ECMA-262.
+ ECMAScript 5.1 (or just ES5.1) is short hand for the "ECMA-262, 5.1 Edition ECMAScript Language Specification" the official name of the current edition of the standard.
+ ECMAScript 5.1 was approved as an official Ecma standard by the Ecma General Assembly in June 2011.
+ The ECMAScript 5.1 standard is available in <a href='javascript:void(window.open("http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf"));'>PDF</a> and <a href='javascript:void(window.open("http://ecma-international.org/ecma-262/5.1/"));'>HTML</a> versions from the Ecma International web site.</p>
+ <p class="headers">Who creates and maintains test262?</p>
+ <p class="content">Development of test262 is a project of Ecma TC39. The testing framework and individual tests are created by member organizations of TC39 and contributed to Ecma for use in test262. For more information about how test262 is developed and maintained click the “Development” tab at the top of this page.</p>
+ <p class="headers">What is the status of test262?</p>
+ <p class="content"><strong>test262 is not yet complete. It is still undergoing active development.</strong> Some portions of the ES5 specification have very complete test coverage while other portions of the specification have only partial test coverage. Some tests may be invalid or may yield false positive or false negative results. A perfect passing score on test262 does not guarantee that a JavaScript implementation perfectly supports ES5. Because tests are being actively added and modified, tests results from different days or times may not be directly comparable. Click the “Development” tab at the top of this page for instructions for reporting test262 bugs.</p>
+ <p class="headers">Where can I find out more?</p>
+ <p class="content">Please visit our <a href='javascript:void(window.open("http://wiki.ecmascript.org/doku.php?id=test262:faq"));'>Frequently Asked Questions</a> section on the <a href='javascript:void(window.open("http://wiki.ecmascript.org/doku.php?id="));'>ECMAScript Wiki</a>.</p>
+
+ <p class="headers">Running the Tests</p>
+ <p class="content">Click the “Run” tab at the top of this page for instructions and follow the instructions to run the tests.</p>
+
+ <a href='javascript:void(window.open("http://www.ecma-international.org/memento/TC39.htm"));'></a>
+
+ </div>
+
+ <div class="content-dev">
+ <p class="headers">Development</p>
+ <p class="content">Test262 is being developed by the members of Ecma TC39. Ecma's intellectual property policies permit only Ecma
+ members to directly contribute code to the project. However, a <a href='javascript:void(window.open("http://mail.mozilla.org/pipermail/test262-discuss/"));'>public mailing list</a> is used to coordinate development of test262. If you wish to participate in the discussion please <a href='javascript:void(window.open("http://mail.mozilla.org/listinfo/test262-discuss"));'>subscribe</a>. Bug reports and suggestions should be sent to the mailing list.
+ </p>
+ <p class="content">
+ Ecma members can find detailed instructions on Test262 development procedures at the <a href='javascript:void(window.open("http://wiki.ecmascript.org/doku.php?id=test262:test262"));'>Test262 Wiki</a>.
+ </p>
+ </div>
+
+ <div class="content-tests">
+ <!-- This is the Main Content Container -->
+ <p class="content">Please click on the Run All button to run all the tests. Once you start the test you may pause the test anytime by clicking on the Pause button. You can click on the Results tab once the test is completed or after pausing the test. The Reset button is for restarting the test run. You may run individual tests by clicking the Run button next to the tests listed below. If you wish to run several chapters in sequence, but not the entire test suite, click the Select button for the chapters you wish to run and then click the Run Selected button.</p>
+
+ <!-- This is the Progress Bar Holder -->
+ <div class="progressBarHolder">
+ <div id="progressbar"></div>
+ <div class="progressBarButtons">
+ <!-- Loading: Run All, Run Selected -->
+ <!-- Loaded: Run All, Run Selected -->
+ <!-- Running: Pause -->
+ <!-- Paused: Resume, Reset -->
+ <img src="images/runall.png" alt="Run All" title="Run all tests." id="btnRunAll" />
+ <img src="images/runselected.png" alt="Run Selected Tests" title="Run the tests selected below." id="btnRunSelected" />
+ <img src="images/pause.png" alt="Pause" title="Pause the running tests." id="btnPause" />
+ <img src="images/resume.png" alt="Resume" title="Resume the running tests." id="btnResume" />
+ <img src="images/reset.png" alt="Reset" title="Reset testing status." id="btnReset" />
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+ <p class="hide">
+ Timer Value(ms) : <input id="txtTimerValue" value="50" /> <input id="btnSetTimerValue" value="Set Timer Value" type="button"/>
+ </p>
+
+ <!-- This is the Results Text Holder -->
+ <div class="resultsHeader">
+ Tests To run: <strong><span class="teststorun-counter" id="testsToRun"></span></strong>&nbsp;<span class="separator">|</span>
+ Total tests ran: <strong><span class="total-counter" id="totalCounter"></span></strong> <span class="separator">|</span>
+ Pass: <span class="pass" id="Pass"></span> <span class="separator">|</span>
+ Fail: <span class="fail" id="Fail"></span> <span class="separator">|</span>
+ Failed to load: <span class="fail" id="failedToLoadCounter1"></span>
+ <p><span id="nextActivity"></span></p>
+ </div>
+
+ <!-- Test Chapter selector -->
+ <div id="chapterSelector">
+ <table width="100%" border="0" cellspacing="0" cellpadding="2"></table>
+ </div>
+
+ <!-- This is the Table -->
+ <div class="resultsTableHolder" id="tableLoggerParent">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="table-logger" id="tableLogger"></table>
+ </div>
+ <div>
+ Test suite version: <span class="targetTestSuiteVersion"></span>&nbsp;<span class="separator">|</span>&nbsp;Test suite date: <span class="targetTestSuiteDate"></span>
+ </div>
+ </div>
+
+ <div class="content-results">
+ <div class="crumbContainer">
+ <div class="crumbs"></div>
+ <div style="float:right;"><a class="setBlue hide" id="backlinkDiv" href="#">&lt;&lt; back</a></div>
+ <div style="clear : both;"></div>
+ </div>
+ <div class="resultsHeader"> <strong>Total tests: <span class="totalCases"></span></strong><br />
+ Passed: <span class="passedCases"></span> <span class="separator">|</span> Failed: <span class="failedCases"></span> <span class="separator">|</span>
+ Failed to load: <strong><span id="failedToLoadCounter"></span></strong>
+ </div>
+ <!-- This is the Table -->
+ <div class="resultsTableHolder">
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" class="results-data-table"> </table>
+ <div id="resultMessage">Test results will be displayed after the tests are executed using the Run page.</div>
+ </div>
+ <div>
+ Test suite version.: <span class="targetTestSuiteVersion"></span>&nbsp;<span class="separator">|</span>&nbsp;Test suite date: <span class="targetTestSuiteDate"></span>
+ </div>
+ <div class="downloadLinks">
+ <p><a class="anchor-download-xml" id="ancGenXMLReport"><strong>Download results as XML</strong></a></p> <!--| <strong><a href="scripts/testcases.zip">Download Source</a></strong></p>-->
+ </div>
+ <div id="legend" class="hide">
+ <label class="reportGreen">Green:</label>&nbsp;100%&nbsp;
+ <label class="reportLightGreen">Green:</label>&nbsp;75% to 99.9%&nbsp;
+ <label class="reportYellow">Yellow:</label>&nbsp;50% to 75% &nbsp;
+ <label class="reportRed">Red:</label>&nbsp;less than 50%
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- This is the Footer -->
+ <div class="footer">
+ <!--<div class="Links"> <a href="">Privacy</a> | <a href="">Terms of Use</a> </div>-->
+ <div class="copyright"> &copy; <a href='javascript:void(window.open("http://www.ecma-international.org"));'>Ecma International</a> </div>
+ </div>
+ <iframe id="scriptLoader" class="hide"></iframe>
+</body>
+</html>