1namespace ts { 2 describe("unittests:: compilerCore", () => { 3 describe("equalOwnProperties", () => { 4 it("correctly equates objects", () => { 5 assert.isTrue(equalOwnProperties({}, {})); 6 assert.isTrue(equalOwnProperties({ a: 1 }, { a: 1 })); 7 assert.isTrue(equalOwnProperties({ a: 1, b: 2 }, { b: 2, a: 1 })); 8 }); 9 it("correctly identifies unmatched objects", () => { 10 assert.isFalse(equalOwnProperties({}, { a: 1 }), "missing left property"); 11 assert.isFalse(equalOwnProperties({ a: 1 }, {}), "missing right property"); 12 assert.isFalse(equalOwnProperties({ a: 1 }, { a: 2 }), "differing property"); 13 }); 14 it("correctly identifies undefined vs hasOwnProperty", () => { 15 assert.isFalse(equalOwnProperties({}, { a: undefined }), "missing left property"); 16 assert.isFalse(equalOwnProperties({ a: undefined }, {}), "missing right property"); 17 }); 18 it("truthiness", () => { 19 const trythyTest = (l: any, r: any) => !!l === !!r; 20 assert.isFalse(equalOwnProperties({}, { a: 1 }, trythyTest), "missing left truthy property"); 21 assert.isFalse(equalOwnProperties({}, { a: 0 }, trythyTest), "missing left falsey property"); 22 assert.isFalse(equalOwnProperties({ a: 1 }, {}, trythyTest), "missing right truthy property"); 23 assert.isFalse(equalOwnProperties({ a: 0 }, {}, trythyTest), "missing right falsey property"); 24 assert.isTrue(equalOwnProperties({ a: 1 }, { a: "foo" }, trythyTest), "valid equality"); 25 }); 26 it("all equal", () => { 27 assert.isFalse(equalOwnProperties({}, { a: 1 }, () => true), "missing left property"); 28 assert.isFalse(equalOwnProperties({ a: 1 }, {}, () => true), "missing right property"); 29 assert.isTrue(equalOwnProperties({ a: 1 }, { a: 2 }, () => true), "valid equality"); 30 }); 31 }); 32 }); 33} 34