summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-01-12 12:17:30 +0100
committerAndreas Kling <kling@serenityos.org>2021-01-12 12:17:46 +0100
commit13d7c09125f8eec703d0a43a9a87fc8aa08f7319 (patch)
tree70fd643c429cea5c1f9362c2674511d17a53f3b5 /Userland/Libraries/LibJS/Tests/operators/binary-bitwise-unsigned-right-shift.js
parentdc28c07fa526841e05e16161c74a6c23984f1dd5 (diff)
downloadserenity-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.js62
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);
+});