• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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