mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 01:07:36 +00:00
LibJS: Add more test matchers
This commit is contained in:
parent
5e971c91e3
commit
fc08222f46
8 changed files with 200 additions and 46 deletions
|
@ -14,9 +14,9 @@ describe("[[DefineProperty]] trap normal behavior", () => {
|
|||
defineProperty(target, name, descriptor) {
|
||||
expect(target).toBe(o);
|
||||
expect(name).toBe("foo");
|
||||
expect(descriptor.configurable).toBe(true);
|
||||
expect(descriptor.configurable).toBeTrue();
|
||||
expect(descriptor.enumerable).toBeUndefined();
|
||||
expect(descriptor.writable).toBe(true);
|
||||
expect(descriptor.writable).toBeTrue();
|
||||
expect(descriptor.value).toBe(10);
|
||||
expect(descriptor.get).toBeUndefined();
|
||||
expect(descriptor.set).toBeUndefined();
|
||||
|
@ -38,22 +38,20 @@ describe("[[DefineProperty]] trap normal behavior", () => {
|
|||
});
|
||||
|
||||
Object.defineProperty(p, "foo", { value: 10, enumerable: true, configurable: false, writable: true });
|
||||
let d = Object.getOwnPropertyDescriptor(p, "foo");
|
||||
expect(d.enumerable).toBe(true);
|
||||
expect(d.configurable).toBe(false);
|
||||
expect(d.writable).toBe(true);
|
||||
expect(d.value).toBe(10);
|
||||
expect(d.get).toBeUndefined();
|
||||
expect(d.set).toBeUndefined();
|
||||
expect(p).toHaveEnumerableProperty("foo");
|
||||
expect(p).not.toHaveConfigurableProperty("foo");
|
||||
expect(p).toHaveWritableProperty("foo");
|
||||
expect(p).toHaveValueProperty("foo", 10);
|
||||
expect(p).not.toHaveGetterProperty("foo");
|
||||
expect(p).not.toHaveSetterProperty("foo");
|
||||
|
||||
Object.defineProperty(p, "foo", { value: 20, enumerable: true, configurable: false, writable: true });
|
||||
d = Object.getOwnPropertyDescriptor(p, "foo");
|
||||
expect(d.enumerable).toBe(true);
|
||||
expect(d.configurable).toBe(false);
|
||||
expect(d.writable).toBe(true);
|
||||
expect(d.value).toBe(10);
|
||||
expect(d.get).toBeUndefined();
|
||||
expect(d.set).toBeUndefined();
|
||||
expect(p).toHaveEnumerableProperty("foo");
|
||||
expect(p).not.toHaveConfigurableProperty("foo");
|
||||
expect(p).toHaveWritableProperty("foo");
|
||||
expect(p).toHaveValueProperty("foo", 10);
|
||||
expect(p).not.toHaveGetterProperty("foo");
|
||||
expect(p).not.toHaveSetterProperty("foo");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
describe("[[Delete]] trap normal behavior", () => {
|
||||
test("forwarding when not defined in handler", () => {
|
||||
expect(delete (new Proxy({}, { deleteProperty: undefined })).foo).toBe(true);
|
||||
expect(delete (new Proxy({}, { deleteProperty: null })).foo).toBe(true);
|
||||
expect(delete (new Proxy({}, {})).foo).toBe(true);
|
||||
expect(delete (new Proxy({}, { deleteProperty: undefined })).foo).toBeTrue();
|
||||
expect(delete (new Proxy({}, { deleteProperty: null })).foo).toBeTrue();
|
||||
expect(delete (new Proxy({}, {})).foo).toBeTrue();
|
||||
});
|
||||
|
||||
test("correct arguments supplied to trap", () => {
|
||||
|
@ -30,8 +30,8 @@ describe("[[Delete]] trap normal behavior", () => {
|
|||
}
|
||||
});
|
||||
|
||||
expect(delete p.foo).toBe(true);
|
||||
expect(delete p.bar).toBe(false);
|
||||
expect(delete p.foo).toBeTrue();
|
||||
expect(delete p.bar).toBeFalse();
|
||||
|
||||
expect(o.foo).toBe(undefined);
|
||||
expect(o.bar).toBe(2);
|
||||
|
|
|
@ -29,21 +29,21 @@ describe("[Call][GetOwnProperty]] trap normal behavior", () => {
|
|||
}
|
||||
});
|
||||
|
||||
let d = Object.getOwnPropertyDescriptor(p, "baz");
|
||||
expect(d.configurable).toBe(true);
|
||||
expect(d.enumerable).toBe(false);
|
||||
expect(d.writable).toBe(false);
|
||||
expect(d.value).toBe("qux");
|
||||
expect(d.get).toBeUndefined();
|
||||
expect(d.set).toBeUndefined();
|
||||
expect(p).toHaveConfigurableProperty("baz");
|
||||
expect(p).not.toHaveEnumerableProperty("baz");
|
||||
expect(p).not.toHaveWritableProperty("baz");
|
||||
expect(p).toHaveValueProperty("baz", "qux");
|
||||
expect(p).not.toHaveGetterProperty("baz");
|
||||
expect(p).not.toHaveSetterProperty("baz");
|
||||
|
||||
d = Object.getOwnPropertyDescriptor(p, "foo");
|
||||
expect(d.configurable).toBe(true);
|
||||
expect(d.enumerable).toBe(false);
|
||||
expect(d.writable).toBe(true);
|
||||
expect(d.value).toBe("bar");
|
||||
expect(d.get).toBeUndefined();
|
||||
expect(d.set).toBeUndefined();
|
||||
|
||||
expect(p).toHaveConfigurableProperty("foo");
|
||||
expect(p).not.toHaveEnumerableProperty("foo");
|
||||
expect(p).toHaveWritableProperty("foo");
|
||||
expect(p).toHaveValueProperty("foo", "bar");
|
||||
expect(p).not.toHaveGetterProperty("foo");
|
||||
expect(p).not.toHaveSetterProperty("foo");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
describe("[[Has]] trap normal behavior", () => {
|
||||
test("forwarding when not defined in handler", () => {
|
||||
expect("foo" in new Proxy({}, { has: null })).toBe(false);
|
||||
expect("foo" in new Proxy({}, { has: undefined})).toBe(false);
|
||||
expect("foo" in new Proxy({}, {})).toBe(false);
|
||||
expect("foo" in new Proxy({}, { has: null })).toBeFalse();
|
||||
expect("foo" in new Proxy({}, { has: undefined})).toBeFalse();
|
||||
expect("foo" in new Proxy({}, {})).toBeFalse();
|
||||
});
|
||||
|
||||
test("correct arguments supplied to trap", () => {
|
||||
|
@ -30,8 +30,8 @@ describe("[[Has]] trap normal behavior", () => {
|
|||
}
|
||||
});
|
||||
|
||||
expect("foo" in p).toBe(false);
|
||||
expect("foo" in p).toBe(true);
|
||||
expect("foo" in p).toBeFalse();
|
||||
expect("foo" in p).toBeTrue();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
describe("[[IsExtensible]] trap normal behavior", () => {
|
||||
test("forwarding when not defined in handler", () => {
|
||||
expect(Object.isExtensible(new Proxy({}, { isExtensible: null }))).toBe(true);
|
||||
expect(Object.isExtensible(new Proxy({}, { isExtensible: undefined }))).toBe(true);
|
||||
expect(Object.isExtensible(new Proxy({}, {}))).toBe(true);
|
||||
expect(Object.isExtensible(new Proxy({}, { isExtensible: null }))).toBeTrue();
|
||||
expect(Object.isExtensible(new Proxy({}, { isExtensible: undefined }))).toBeTrue();
|
||||
expect(Object.isExtensible(new Proxy({}, {}))).toBeTrue();
|
||||
});
|
||||
|
||||
test("correct arguments supplied to trap", () => {
|
||||
|
@ -14,7 +14,7 @@ describe("[[IsExtensible]] trap normal behavior", () => {
|
|||
}
|
||||
});
|
||||
|
||||
expect(Object.isExtensible(p)).toBe(true);
|
||||
expect(Object.isExtensible(p)).toBeTrue();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ describe("[[SetPrototypeOf]] trap normal behavior", () => {
|
|||
Object.setPrototypeOf(p, { foo: 1 });
|
||||
expect(Object.getPrototypeOf(p).foo).toBeUndefined();
|
||||
p.shouldSet = true;
|
||||
expect(o.shouldSet).toBe(true);
|
||||
expect(o.shouldSet).toBeTrue();
|
||||
Object.setPrototypeOf(p, { foo: 1 });
|
||||
expect(Object.getPrototypeOf(p).foo).toBe(1);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue