diff options
author | Andreas Kling <kling@serenityos.org> | 2021-01-12 12:17:30 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-12 12:17:46 +0100 |
commit | 13d7c09125f8eec703d0a43a9a87fc8aa08f7319 (patch) | |
tree | 70fd643c429cea5c1f9362c2674511d17a53f3b5 /Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js | |
parent | dc28c07fa526841e05e16161c74a6c23984f1dd5 (diff) | |
download | serenity-13d7c09125f8eec703d0a43a9a87fc8aa08f7319.zip |
Libraries: Move to Userland/Libraries/
Diffstat (limited to 'Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js')
-rw-r--r-- | Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js b/Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js new file mode 100644 index 0000000000..4a950e18ef --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js @@ -0,0 +1,62 @@ +test("basic numeric shifting", () => { + expect(0 >>> 0).toBe(0); + expect(0 >>> 1).toBe(0); + expect(0 >>> 2).toBe(0); + expect(0 >>> 3).toBe(0); + expect(0 >>> 4).toBe(0); + expect(0 >>> 5).toBe(0); + + expect(1 >>> 0).toBe(1); + expect(1 >>> 1).toBe(0); + expect(1 >>> 2).toBe(0); + expect(1 >>> 3).toBe(0); + expect(1 >>> 4).toBe(0); + expect(1 >>> 5).toBe(0); + + expect(5 >>> 0).toBe(5); + expect(5 >>> 1).toBe(2); + expect(5 >>> 2).toBe(1); + expect(5 >>> 3).toBe(0); + expect(5 >>> 4).toBe(0); + expect(5 >>> 5).toBe(0); + + expect(42 >>> 0).toBe(42); + expect(42 >>> 1).toBe(21); + expect(42 >>> 2).toBe(10); + expect(42 >>> 3).toBe(5); + expect(42 >>> 4).toBe(2); + expect(42 >>> 5).toBe(1); +}); + +test("numeric shifting with negative lhs values", () => { + expect(-1 >>> 0).toBe(4294967295); + expect(-1 >>> 1).toBe(2147483647); + expect(-1 >>> 2).toBe(1073741823); + expect(-1 >>> 3).toBe(536870911); + expect(-1 >>> 4).toBe(268435455); + expect(-1 >>> 5).toBe(134217727); + + expect(-5 >>> 0).toBe(4294967291); + expect(-5 >>> 1).toBe(2147483645); + expect(-5 >>> 2).toBe(1073741822); + expect(-5 >>> 3).toBe(536870911); + expect(-5 >>> 4).toBe(268435455); + expect(-5 >>> 5).toBe(134217727); +}); + +test("shifting with non-numeric values", () => { + let x = -67; + let y = 4; + + expect("-42" >>> 3).toBe(536870906); + expect(x >>> y).toBe(268435451); + expect(x >>> [[[[5]]]]).toBe(134217725); + expect(undefined >>> y).toBe(0); + expect("a" >>> "b").toBe(0); + expect(null >>> null).toBe(0); + expect(undefined >>> undefined).toBe(0); + expect(NaN >>> NaN).toBe(0); + expect(6 >>> NaN).toBe(6); + expect(Infinity >>> Infinity).toBe(0); + expect(-Infinity >>> Infinity).toBe(0); +}); |