48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
description("Make sure that we correctly handle binary literals");
|
|
|
|
shouldBe("0b0", "0");
|
|
shouldBe("0b1", "1");
|
|
shouldBe("0B1", "1");
|
|
shouldBe("0b00000000000000000000000000000000", "0");
|
|
shouldThrow("0B2");
|
|
shouldThrow("0ba");
|
|
shouldThrow("0b0.0");
|
|
shouldThrow("x=0b1y=42");
|
|
shouldBe("0b1010", "0xa");
|
|
shouldBe("0b00000001001000110100010101100111", "0x01234567");
|
|
shouldBe("0b10001001101010111100110111101111", "0x89abcdef");
|
|
shouldBe("0o100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.00300673152188e+256");
|
|
|
|
// Try 53 bits
|
|
shouldBe("0b11111111111111111111111111111111111111111111111111110", "9007199254740990");
|
|
shouldBe("0b11111111111111111111111111111111111111111111111111111", "9007199254740991");
|
|
|
|
// 54 bits and above should add zeroes
|
|
shouldBe("0b111111111111111111111111111111111111111111111111111110", "18014398509481982");
|
|
shouldBe("0b111111111111111111111111111111111111111111111111111111", "18014398509481984");
|
|
|
|
shouldBeTrue("!!0b1");
|
|
shouldBeFalse("!!0b0");
|
|
|
|
shouldBe("Number('0b0')", "0");
|
|
shouldBe("Number('0b1')", "1");
|
|
shouldBe("Number('0B1')", "1");
|
|
shouldBe("Number('0b00000000000000000000000000000000')", "0");
|
|
shouldBeNaN("Number('0B2')");
|
|
shouldBeNaN("Number('0ba')");
|
|
shouldBeNaN("Number('0b0.0')");
|
|
shouldBe("Number('0b1010')", "0xa");
|
|
shouldBe("Number('0b00000001001000110100010101100111')", "0x01234567");
|
|
shouldBe("Number('0b10001001101010111100110111101111')", "0x89abcdef");
|
|
|
|
// Try 53 bits
|
|
shouldBe("Number('0b11111111111111111111111111111111111111111111111111110')", "9007199254740990");
|
|
shouldBe("Number('0b11111111111111111111111111111111111111111111111111111')", "9007199254740991");
|
|
|
|
// 54 bits and above should add zeroes
|
|
shouldBe("Number('0b111111111111111111111111111111111111111111111111111110')", "18014398509481982");
|
|
shouldBe("Number('0b111111111111111111111111111111111111111111111111111111')", "18014398509481984");
|
|
|
|
shouldBeTrue("!!Number('0b1')");
|
|
shouldBeFalse("!!Number('0b0')");
|