| // Any copyright is dedicated to the Public Domain. |
| // http://creativecommons.org/licenses/publicdomain/ |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = 894026; |
| var summary = "Implement ES6 binary literals"; |
| |
| print(BUGNUMBER + ": " + summary); |
| |
| /************** |
| * BEGIN TEST * |
| **************/ |
| |
| var chars = ['b', 'B']; |
| |
| for (var i = 0; i < 2; i++) |
| { |
| if (i === 2) |
| { |
| 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 < 2; j++) |
| { |
| if (j === 2) |
| { |
| 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 < 2; k++) |
| { |
| if (k === 2) |
| { |
| 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 * 4 + j * 2 + k); |
| }); |
| } |
| } |
| } |
| |
| chars.forEach(function(v) |
| { |
| try |
| { |
| } |
| catch (e) |
| { |
| assertEq(e instanceof SyntaxError, true, |
| "no syntax error evaluating 0" + v + ", got " + e); |
| } |
| }); |
| |
| // Off-by-one check: '/' immediately precedes '0'. |
| assertEq(0b110/1, 6); |
| assertEq(0B10110/1, 22); |
| |
| function strict() |
| { |
| "use strict"; |
| return 0b11010101; |
| } |
| assertEq(strict(), 128 + 64 + 16 + 4 + 1); |
| |
| /******************************************************************************/ |
| |
| if (typeof reportCompare === "function") |
| reportCompare(true, true); |
| |
| print("Tests complete"); |