ladybird/Libraries/LibJS/Tests/operators/logical-or.js

50 lines
1.5 KiB
JavaScript

test("booleans", () => {
expect(true || true).toBeTrue();
expect(false || false).toBeFalse();
expect(true || false).toBeTrue();
expect(false || true).toBeTrue();
});
test("strings", () => {
expect("" || "").toBe("");
expect("" || false).toBeFalse();
expect("" || true).toBeTrue();
expect(false || "").toBe("");
expect(true || "").toBeTrue();
expect("foo" || "bar").toBe("foo");
expect("foo" || false).toBe("foo");
expect("foo" || true).toBe("foo");
expect(false || "bar").toBe("bar");
expect(true || "bar").toBeTrue();
});
test("numbers", () => {
expect(false || 1 === 2).toBeFalse();
expect(true || 1 === 2).toBeTrue();
expect(0 || false).toBeFalse();
expect(0 || true).toBeTrue();
expect(42 || false).toBe(42);
expect(42 || true).toBe(42);
expect(false || 0).toBe(0);
expect(true || 0).toBeTrue();
expect(false || 42).toBe(42);
expect(true || 42).toBeTrue();
});
test("objects", () => {
expect([] || false).toHaveLength(0);
expect([] || true).toHaveLength(0);
expect(false || []).toHaveLength(0);
expect(true || []).toBeTrue();
});
test("null & undefined", () => {
expect(null || false).toBeFalse();
expect(null || true).toBeTrue();
expect(false || null).toBeNull();
expect(true || null).toBeTrue();
expect(undefined || false).toBeFalse();
expect(undefined || true).toBeTrue();
expect(false || undefined).toBeUndefined();
expect(true || undefined).toBeTrue();
});