summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/Expressions/octal-literals.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/ecma_6/Expressions/octal-literals.js')
-rw-r--r--js/src/tests/ecma_6/Expressions/octal-literals.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/Expressions/octal-literals.js b/js/src/tests/ecma_6/Expressions/octal-literals.js
new file mode 100644
index 000000000..abeef8736
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/octal-literals.js
@@ -0,0 +1,103 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 894026;
+var summary = "Implement ES6 octal literals";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var chars = ['o', 'O'];
+
+for (var i = 0; i < 8; i++)
+{
+ if (i === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var j = 0; j < 8; j++)
+ {
+ if (j === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var k = 0; k < 8; k++)
+ {
+ if (k === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j + k);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + k + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ chars.forEach(function(v)
+ {
+ assertEq(eval('0' + v + i + j + k), i * 64 + j * 8 + k);
+ });
+ }
+ }
+}
+
+// Off-by-one check: '/' immediately precedes '0'.
+assertEq(0o110/2, 36);
+assertEq(0O644/2, 210);
+
+function strict()
+{
+ "use strict";
+ return 0o755;
+}
+assertEq(strict(), 7 * 64 + 5 * 8 + 5);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");