mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 11:54:44 -06:00
Merge pull request #26794 from samlanning/fix-equalownproperties
Housekeeping: Fix equalOwnProperties
This commit is contained in:
commit
cbdfc01e25
@ -1272,7 +1272,7 @@ namespace ts {
|
||||
if (!left || !right) return false;
|
||||
for (const key in left) {
|
||||
if (hasOwnProperty.call(left, key)) {
|
||||
if (!hasOwnProperty.call(right, key) === undefined) return false;
|
||||
if (!hasOwnProperty.call(right, key)) return false;
|
||||
if (!equalityComparer(left[key], right[key])) return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,6 +46,7 @@
|
||||
"unittests/cancellableLanguageServiceOperations.ts",
|
||||
"unittests/commandLineParsing.ts",
|
||||
"unittests/compileOnSave.ts",
|
||||
"unittests/compilerCore.ts",
|
||||
"unittests/configurationExtension.ts",
|
||||
"unittests/convertCompilerOptionsFromJson.ts",
|
||||
"unittests/convertToAsyncFunction.ts",
|
||||
|
||||
33
src/testRunner/unittests/compilerCore.ts
Normal file
33
src/testRunner/unittests/compilerCore.ts
Normal file
@ -0,0 +1,33 @@
|
||||
namespace ts {
|
||||
describe("compilerCore", () => {
|
||||
describe("equalOwnProperties", () => {
|
||||
it("correctly equates objects", () => {
|
||||
assert.isTrue(equalOwnProperties({}, {}));
|
||||
assert.isTrue(equalOwnProperties({ a: 1 }, { a: 1 }));
|
||||
assert.isTrue(equalOwnProperties({ a: 1, b: 2 }, { b: 2, a: 1 }));
|
||||
});
|
||||
it("correctly identifies unmatched objects", () => {
|
||||
assert.isFalse(equalOwnProperties({}, { a: 1 }), "missing left property");
|
||||
assert.isFalse(equalOwnProperties({ a: 1 }, {}), "missing right property");
|
||||
assert.isFalse(equalOwnProperties({ a: 1 }, { a: 2 }), "differing property");
|
||||
});
|
||||
it("correctly identifies undefined vs hasOwnProperty", () => {
|
||||
assert.isFalse(equalOwnProperties({}, { a: undefined }), "missing left property");
|
||||
assert.isFalse(equalOwnProperties({ a: undefined }, {}), "missing right property");
|
||||
});
|
||||
it("truthiness", () => {
|
||||
const trythyTest = (l: any, r: any) => !!l === !!r;
|
||||
assert.isFalse(equalOwnProperties({}, { a: 1 }, trythyTest), "missing left truthy property");
|
||||
assert.isFalse(equalOwnProperties({}, { a: 0 }, trythyTest), "missing left falsey property");
|
||||
assert.isFalse(equalOwnProperties({ a: 1 }, {}, trythyTest), "missing right truthy property");
|
||||
assert.isFalse(equalOwnProperties({ a: 0 }, {}, trythyTest), "missing right falsey property");
|
||||
assert.isTrue(equalOwnProperties({ a: 1 }, { a: "foo" }, trythyTest), "valid equality");
|
||||
});
|
||||
it("all equal", () => {
|
||||
assert.isFalse(equalOwnProperties({}, { a: 1 }, () => true), "missing left property");
|
||||
assert.isFalse(equalOwnProperties({ a: 1 }, {}, () => true), "missing right property");
|
||||
assert.isTrue(equalOwnProperties({ a: 1 }, { a: 2 }, () => true), "valid equality");
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user