@plugjs/expect5 0.5.34 → 0.5.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -8,7 +8,7 @@ var { $blu, $und, $gry, $wht } = logging;
8
8
  var $gnd = (s) => $gry($und(s));
9
9
  var $bnd = (s) => $blu($und(s));
10
10
  var $wnd = (s) => $wht($und(s));
11
- var version = true ? "0.5.34" : "0.0.0-dev";
11
+ var version = true ? "0.5.36" : "0.0.0-dev";
12
12
  function help() {
13
13
  console.log(`${$blu($und("Usage:"))}
14
14
 
@@ -24,6 +24,15 @@ __export(diff_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(diff_exports);
26
26
  var import_types = require("./types.cjs");
27
+ function findEnumerableKeys(...objects) {
28
+ const keys = /* @__PURE__ */ new Set();
29
+ for (const object of objects) {
30
+ for (const key in object) {
31
+ keys.add(key);
32
+ }
33
+ }
34
+ return keys;
35
+ }
27
36
  function isSameNumberOrBothNaN(a, b) {
28
37
  return a === b ? true : isNaN(a) ? isNaN(b) : false;
29
38
  }
@@ -33,7 +42,7 @@ function errorDiff(value, message) {
33
42
  }
34
43
  function objectDiff(actual, expected, remarks, keys) {
35
44
  if (!keys)
36
- keys = /* @__PURE__ */ new Set([...Object.keys(actual), ...Object.keys(expected)]);
45
+ keys = findEnumerableKeys(actual, expected);
37
46
  if (!keys.size)
38
47
  return { diff: false, value: actual };
39
48
  let diff2 = false;
@@ -42,7 +51,9 @@ function objectDiff(actual, expected, remarks, keys) {
42
51
  const act = actual[key];
43
52
  const exp = expected[key];
44
53
  let result;
45
- if (key in expected && !(key in actual)) {
54
+ if (act === void 0 && exp === void 0 && !(key in expected) && !remarks.strict) {
55
+ result = { diff: false, value: void 0 };
56
+ } else if (key in expected && !(key in actual)) {
46
57
  result = { diff: true, missing: exp };
47
58
  } else if (key in actual && !(key in expected)) {
48
59
  result = { diff: true, extra: act };
@@ -58,7 +69,7 @@ function arrayDiff(actual, expected, remarks) {
58
69
  if (actual.length !== expected.length) {
59
70
  return errorDiff(actual, `to have length ${expected.length} (length=${actual.length})`);
60
71
  }
61
- const keys = /* @__PURE__ */ new Set([...Object.keys(expected), ...Object.keys(actual)]);
72
+ const keys = findEnumerableKeys(actual, expected);
62
73
  let valuesDiff = false;
63
74
  const values = new Array(expected.length);
64
75
  for (let i = 0; i < expected.length; i++) {
@@ -117,7 +128,12 @@ function binaryDiff(actual, expected, actualData, expectedData, remarks) {
117
128
  if (actualData.length !== expectedData.length) {
118
129
  return errorDiff(actual, `to have length ${expectedData.length} (length=${actualData.length})`);
119
130
  }
120
- const keys = /* @__PURE__ */ new Set([...Object.keys(expected), ...Object.keys(actual)]);
131
+ const keys = findEnumerableKeys(actual, expected);
132
+ if (actual instanceof Buffer) {
133
+ for (const key in Buffer.prototype) {
134
+ keys.delete(key);
135
+ }
136
+ }
121
137
  const length = expectedData.length;
122
138
  for (let i = 0; i < length; i++) {
123
139
  keys.delete(String(i));
@@ -145,7 +161,7 @@ function primitiveDiff(actual, expected, remarks) {
145
161
  expected
146
162
  };
147
163
  }
148
- const keys = /* @__PURE__ */ new Set([...Object.keys(actual), ...Object.keys(expected)]);
164
+ const keys = findEnumerableKeys(actual, expected);
149
165
  if (actual instanceof String) {
150
166
  const length = actual.valueOf().length;
151
167
  for (let i = 0; i < length; i++) {
@@ -247,8 +263,8 @@ function diffValues(actual, expected, remarks) {
247
263
  objectDiff(actual, expected, remarks)
248
264
  );
249
265
  }
250
- function diff(actual, expected) {
251
- return diffValues(actual, expected, { actualMemos: [], expectedMemos: [] });
266
+ function diff(actual, expected, strict = false) {
267
+ return diffValues(actual, expected, { actualMemos: [], expectedMemos: [], strict });
252
268
  }
253
269
  // Annotate the CommonJS export names for ESM import in node:
254
270
  0 && (module.exports = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/expectation/diff.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["diff", "result"]
6
6
  }
@@ -24,4 +24,4 @@ export interface ObjectDiff extends ValueDiff {
24
24
  mappings?: [any, Diff][];
25
25
  }
26
26
  export type Diff = ValueDiff | ExpectedDiff | ObjectDiff | ExtraValueDiff | MissingValueDiff;
27
- export declare function diff(actual: any, expected: any): Diff;
27
+ export declare function diff(actual: any, expected: any, strict?: boolean): Diff;
@@ -5,6 +5,15 @@ import {
5
5
  stringifyConstructor,
6
6
  stringifyValue
7
7
  } from "./types.mjs";
8
+ function findEnumerableKeys(...objects) {
9
+ const keys = /* @__PURE__ */ new Set();
10
+ for (const object of objects) {
11
+ for (const key in object) {
12
+ keys.add(key);
13
+ }
14
+ }
15
+ return keys;
16
+ }
8
17
  function isSameNumberOrBothNaN(a, b) {
9
18
  return a === b ? true : isNaN(a) ? isNaN(b) : false;
10
19
  }
@@ -14,7 +23,7 @@ function errorDiff(value, message) {
14
23
  }
15
24
  function objectDiff(actual, expected, remarks, keys) {
16
25
  if (!keys)
17
- keys = /* @__PURE__ */ new Set([...Object.keys(actual), ...Object.keys(expected)]);
26
+ keys = findEnumerableKeys(actual, expected);
18
27
  if (!keys.size)
19
28
  return { diff: false, value: actual };
20
29
  let diff2 = false;
@@ -23,7 +32,9 @@ function objectDiff(actual, expected, remarks, keys) {
23
32
  const act = actual[key];
24
33
  const exp = expected[key];
25
34
  let result;
26
- if (key in expected && !(key in actual)) {
35
+ if (act === void 0 && exp === void 0 && !(key in expected) && !remarks.strict) {
36
+ result = { diff: false, value: void 0 };
37
+ } else if (key in expected && !(key in actual)) {
27
38
  result = { diff: true, missing: exp };
28
39
  } else if (key in actual && !(key in expected)) {
29
40
  result = { diff: true, extra: act };
@@ -39,7 +50,7 @@ function arrayDiff(actual, expected, remarks) {
39
50
  if (actual.length !== expected.length) {
40
51
  return errorDiff(actual, `to have length ${expected.length} (length=${actual.length})`);
41
52
  }
42
- const keys = /* @__PURE__ */ new Set([...Object.keys(expected), ...Object.keys(actual)]);
53
+ const keys = findEnumerableKeys(actual, expected);
43
54
  let valuesDiff = false;
44
55
  const values = new Array(expected.length);
45
56
  for (let i = 0; i < expected.length; i++) {
@@ -98,7 +109,12 @@ function binaryDiff(actual, expected, actualData, expectedData, remarks) {
98
109
  if (actualData.length !== expectedData.length) {
99
110
  return errorDiff(actual, `to have length ${expectedData.length} (length=${actualData.length})`);
100
111
  }
101
- const keys = /* @__PURE__ */ new Set([...Object.keys(expected), ...Object.keys(actual)]);
112
+ const keys = findEnumerableKeys(actual, expected);
113
+ if (actual instanceof Buffer) {
114
+ for (const key in Buffer.prototype) {
115
+ keys.delete(key);
116
+ }
117
+ }
102
118
  const length = expectedData.length;
103
119
  for (let i = 0; i < length; i++) {
104
120
  keys.delete(String(i));
@@ -126,7 +142,7 @@ function primitiveDiff(actual, expected, remarks) {
126
142
  expected
127
143
  };
128
144
  }
129
- const keys = /* @__PURE__ */ new Set([...Object.keys(actual), ...Object.keys(expected)]);
145
+ const keys = findEnumerableKeys(actual, expected);
130
146
  if (actual instanceof String) {
131
147
  const length = actual.valueOf().length;
132
148
  for (let i = 0; i < length; i++) {
@@ -228,8 +244,8 @@ function diffValues(actual, expected, remarks) {
228
244
  objectDiff(actual, expected, remarks)
229
245
  );
230
246
  }
231
- function diff(actual, expected) {
232
- return diffValues(actual, expected, { actualMemos: [], expectedMemos: [] });
247
+ function diff(actual, expected, strict = false) {
248
+ return diffValues(actual, expected, { actualMemos: [], expectedMemos: [], strict });
233
249
  }
234
250
  export {
235
251
  diff
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/expectation/diff.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["diff", "result"]
6
6
  }
@@ -266,12 +266,25 @@ var Expectations = class _Expectations {
266
266
  /**
267
267
  * Expects the value to be _deep equal to_ the specified expected one.
268
268
  *
269
+ * When `strict` is `true` (defaults to `false`) enumerable keys associated
270
+ * with an `undefined` value found in the _actual_ object will have to be
271
+ * also defined in the _expected_ object.
272
+ *
273
+ * For example:
274
+ *
275
+ * ```ts
276
+ * expect({ foo: undefined }).toEqual({}) // will pass
277
+ * expect({ foo: undefined }).toEqual({}, true) // will fail ("foo" is extra)
278
+ * expect({ foo: undefined }).toEqual({ foo: undefined }, true) // will pass
279
+ * expect({}).toEqual({ foo: undefined }) // will fail ("foo" is missing, whether "strict" is true or false)
280
+ * ```
281
+ *
269
282
  * Negation: {@link NegativeExpectations.toEqual `not.toEqual(...)`}
270
283
  */
271
- toEqual(expected) {
284
+ toEqual(expected, strict = false) {
272
285
  if (this.value === expected)
273
286
  return this;
274
- const result = (0, import_diff.diff)(this.value, expected);
287
+ const result = (0, import_diff.diff)(this.value, expected, strict);
275
288
  if (result.diff) {
276
289
  if ((0, import_types.isMatcher)(expected)) {
277
290
  this._fail("to satisfy expectation matcher", result);
@@ -302,7 +315,13 @@ var Expectations = class _Expectations {
302
315
  toHaveProperty(property, assertionOrMatcher) {
303
316
  this.toBeDefined();
304
317
  const propertyValue = this.value[property];
305
- if (propertyValue === void 0) {
318
+ let hasProperty;
319
+ try {
320
+ hasProperty = property in this.value;
321
+ } catch (error) {
322
+ hasProperty = propertyValue !== void 0;
323
+ }
324
+ if (!hasProperty) {
306
325
  this._fail(`to have property "${String(property)}"`);
307
326
  }
308
327
  if (assertionOrMatcher) {
@@ -324,6 +343,8 @@ var Expectations = class _Expectations {
324
343
  }
325
344
  throw error;
326
345
  }
346
+ } else if (propertyValue === void 0) {
347
+ this._fail(`has property "${String(property)}" with value ${(0, import_types.stringifyValue)(void 0)}`);
327
348
  }
328
349
  return this;
329
350
  }
@@ -493,10 +514,10 @@ var NegativeExpectations = class {
493
514
  *
494
515
  * Negates: {@link Expectations.toEqual `toEqual(...)`}
495
516
  */
496
- toEqual(expected) {
517
+ toEqual(expected, strict = false) {
497
518
  let result = { diff: false, value: this._value };
498
519
  if (this._value !== expected) {
499
- result = (0, import_diff.diff)(this._value, expected);
520
+ result = (0, import_diff.diff)(this._value, expected, strict);
500
521
  if (result.diff)
501
522
  return this._expectations;
502
523
  }
@@ -531,10 +552,15 @@ var NegativeExpectations = class {
531
552
  */
532
553
  toHaveProperty(property) {
533
554
  this._expectations.toBeDefined();
534
- const propertyValue = this._value[property];
535
- if (propertyValue === void 0)
536
- return this._expectations;
537
- this._fail(`not to have property "${String(property)}"`);
555
+ let hasProperty;
556
+ try {
557
+ hasProperty = property in this._value;
558
+ } catch (error) {
559
+ hasProperty = this._value[property] !== void 0;
560
+ }
561
+ if (hasProperty)
562
+ this._fail(`not to have property "${String(property)}"`);
563
+ return this._expectations;
538
564
  }
539
565
  /* ------------------------------------------------------------------------ */
540
566
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/expectation/expectations.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["diff"]
6
6
  }
@@ -253,9 +253,22 @@ export declare class Expectations<T = unknown> {
253
253
  /**
254
254
  * Expects the value to be _deep equal to_ the specified expected one.
255
255
  *
256
+ * When `strict` is `true` (defaults to `false`) enumerable keys associated
257
+ * with an `undefined` value found in the _actual_ object will have to be
258
+ * also defined in the _expected_ object.
259
+ *
260
+ * For example:
261
+ *
262
+ * ```ts
263
+ * expect({ foo: undefined }).toEqual({}) // will pass
264
+ * expect({ foo: undefined }).toEqual({}, true) // will fail ("foo" is extra)
265
+ * expect({ foo: undefined }).toEqual({ foo: undefined }, true) // will pass
266
+ * expect({}).toEqual({ foo: undefined }) // will fail ("foo" is missing, whether "strict" is true or false)
267
+ * ```
268
+ *
256
269
  * Negation: {@link NegativeExpectations.toEqual `not.toEqual(...)`}
257
270
  */
258
- toEqual<Type>(expected: Type): Expectations<InferToEqual<Type>>;
271
+ toEqual<Type>(expected: Type, strict?: boolean): Expectations<InferToEqual<Type>>;
259
272
  /**
260
273
  * Expects the value to have a `number` _property_ `length` with the specified
261
274
  * expected value.
@@ -268,15 +281,30 @@ export declare class Expectations<T = unknown> {
268
281
  /**
269
282
  * Expects the value to have the specified _property_.
270
283
  *
284
+ * The value associated with the property should not be `undefined`.
285
+ *
286
+ * For example:
287
+ *
288
+ * ```ts
289
+ * expect({}).toHaveProperty('foo') // fails
290
+ * expect({ foo: undefined }).toHaveProperty('foo') // fails
291
+ * ```
292
+ *
271
293
  * Negation: {@link NegativeExpectations.toHaveProperty `not.toHaveProperty(...)`}
272
294
  */
273
295
  toHaveProperty<Prop extends string | number | symbol>(property: Prop): Expectations<T & {
274
296
  [keyt in Prop]: unknown;
275
297
  }>;
276
298
  /**
277
- * Expects the value to have the specified _property_ and (if specified)
299
+ * Expects the value to have the specified _property_ and (if found)
278
300
  * further validates its value with a {@link Matcher}.
279
301
  *
302
+ * This also works with `undefined` values, for example:
303
+ * ```ts
304
+ * expect({ foo: undefined }).toHaveProperty('foo') // no matcher, fails
305
+ * expect({ foo: undefined }).toHaveProperty('foo', expect.toBeUndefined()) // works!
306
+ * ```
307
+ *
280
308
  * Negation: {@link NegativeExpectations.toHaveProperty `not.toHaveProperty(...)`}
281
309
  */
282
310
  toHaveProperty<Prop extends string | number | symbol, Match extends Matcher>(property: Prop, matcher: Match): Expectations<T & {
@@ -465,7 +493,7 @@ export declare class NegativeExpectations<T = unknown> {
465
493
  *
466
494
  * Negates: {@link Expectations.toEqual `toEqual(...)`}
467
495
  */
468
- toEqual(expected: any): Expectations<T>;
496
+ toEqual(expected: any, strict?: boolean): Expectations<T>;
469
497
  /**
470
498
  * Expects the value to have a `number` _property_ `length` _different_ from
471
499
  * the specified expected value.
@@ -248,12 +248,25 @@ var Expectations = class _Expectations {
248
248
  /**
249
249
  * Expects the value to be _deep equal to_ the specified expected one.
250
250
  *
251
+ * When `strict` is `true` (defaults to `false`) enumerable keys associated
252
+ * with an `undefined` value found in the _actual_ object will have to be
253
+ * also defined in the _expected_ object.
254
+ *
255
+ * For example:
256
+ *
257
+ * ```ts
258
+ * expect({ foo: undefined }).toEqual({}) // will pass
259
+ * expect({ foo: undefined }).toEqual({}, true) // will fail ("foo" is extra)
260
+ * expect({ foo: undefined }).toEqual({ foo: undefined }, true) // will pass
261
+ * expect({}).toEqual({ foo: undefined }) // will fail ("foo" is missing, whether "strict" is true or false)
262
+ * ```
263
+ *
251
264
  * Negation: {@link NegativeExpectations.toEqual `not.toEqual(...)`}
252
265
  */
253
- toEqual(expected) {
266
+ toEqual(expected, strict = false) {
254
267
  if (this.value === expected)
255
268
  return this;
256
- const result = diff(this.value, expected);
269
+ const result = diff(this.value, expected, strict);
257
270
  if (result.diff) {
258
271
  if (isMatcher(expected)) {
259
272
  this._fail("to satisfy expectation matcher", result);
@@ -284,7 +297,13 @@ var Expectations = class _Expectations {
284
297
  toHaveProperty(property, assertionOrMatcher) {
285
298
  this.toBeDefined();
286
299
  const propertyValue = this.value[property];
287
- if (propertyValue === void 0) {
300
+ let hasProperty;
301
+ try {
302
+ hasProperty = property in this.value;
303
+ } catch (error) {
304
+ hasProperty = propertyValue !== void 0;
305
+ }
306
+ if (!hasProperty) {
288
307
  this._fail(`to have property "${String(property)}"`);
289
308
  }
290
309
  if (assertionOrMatcher) {
@@ -306,6 +325,8 @@ var Expectations = class _Expectations {
306
325
  }
307
326
  throw error;
308
327
  }
328
+ } else if (propertyValue === void 0) {
329
+ this._fail(`has property "${String(property)}" with value ${stringifyValue(void 0)}`);
309
330
  }
310
331
  return this;
311
332
  }
@@ -475,10 +496,10 @@ var NegativeExpectations = class {
475
496
  *
476
497
  * Negates: {@link Expectations.toEqual `toEqual(...)`}
477
498
  */
478
- toEqual(expected) {
499
+ toEqual(expected, strict = false) {
479
500
  let result = { diff: false, value: this._value };
480
501
  if (this._value !== expected) {
481
- result = diff(this._value, expected);
502
+ result = diff(this._value, expected, strict);
482
503
  if (result.diff)
483
504
  return this._expectations;
484
505
  }
@@ -513,10 +534,15 @@ var NegativeExpectations = class {
513
534
  */
514
535
  toHaveProperty(property) {
515
536
  this._expectations.toBeDefined();
516
- const propertyValue = this._value[property];
517
- if (propertyValue === void 0)
518
- return this._expectations;
519
- this._fail(`not to have property "${String(property)}"`);
537
+ let hasProperty;
538
+ try {
539
+ hasProperty = property in this._value;
540
+ } catch (error) {
541
+ hasProperty = this._value[property] !== void 0;
542
+ }
543
+ if (hasProperty)
544
+ this._fail(`not to have property "${String(property)}"`);
545
+ return this._expectations;
520
546
  }
521
547
  /* ------------------------------------------------------------------------ */
522
548
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/expectation/expectations.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["diff"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plugjs/expect5",
3
- "version": "0.5.34",
3
+ "version": "0.5.36",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -43,11 +43,11 @@
43
43
  "author": "Juit Developers <developers@juit.com>",
44
44
  "license": "Apache-2.0",
45
45
  "devDependencies": {
46
- "@types/chai": "^4.3.14",
46
+ "@types/chai": "^4.3.15",
47
47
  "chai": "<5"
48
48
  },
49
49
  "peerDependencies": {
50
- "@plugjs/plug": "0.5.34"
50
+ "@plugjs/plug": "0.5.36"
51
51
  },
52
52
  "files": [
53
53
  "*.md",
@@ -52,7 +52,21 @@ export type Diff =
52
52
 
53
53
  type Binary = Buffer | Uint8Array | ArrayBuffer | SharedArrayBuffer
54
54
  type BoxedPrimitive = Boolean | String | Number
55
- type Remarks = { actualMemos: any[], expectedMemos: any[] }
55
+ type Remarks = { actualMemos: any[], expectedMemos: any[], strict: boolean }
56
+
57
+ /* ========================================================================== */
58
+
59
+ /** Find all enumerable keys of a number of objects */
60
+ function findEnumerableKeys(...objects: object[]): Set<string> {
61
+ const keys = new Set<string>()
62
+ for (const object of objects) {
63
+ for (const key in object) {
64
+ keys.add(key)
65
+ }
66
+ }
67
+
68
+ return keys
69
+ }
56
70
 
57
71
  /* ========================================================================== */
58
72
 
@@ -77,7 +91,7 @@ function objectDiff<T extends Record<string, any>>(
77
91
  keys?: Set<string>,
78
92
  ): ObjectDiff | ValueDiff {
79
93
  // default keys: all keys from both actual and expected objects
80
- if (! keys) keys = new Set([ ...Object.keys(actual), ...Object.keys(expected) ])
94
+ if (! keys) keys = findEnumerableKeys(actual, expected)
81
95
 
82
96
  // no keys? no diff!
83
97
  if (! keys.size) return { diff: false, value: actual }
@@ -91,7 +105,9 @@ function objectDiff<T extends Record<string, any>>(
91
105
 
92
106
  // check for missing/extra property or differences
93
107
  let result: Diff
94
- if ((key in expected) && (!(key in actual))) {
108
+ if ((act === undefined) && (exp === undefined) && (!(key in expected)) && (! remarks.strict)) {
109
+ result = { diff: false, value: undefined }
110
+ } else if ((key in expected) && (!(key in actual))) {
95
111
  result = { diff: true, missing: exp }
96
112
  } else if ((key in actual) && (!(key in expected))) {
97
113
  result = { diff: true, extra: act }
@@ -120,7 +136,7 @@ function arrayDiff<T extends Record<number, any> & { length: number }>(
120
136
  }
121
137
 
122
138
  // prepare a set with _all_ keys from both expected and actual object
123
- const keys = new Set([ ...Object.keys(expected), ...Object.keys(actual) ])
139
+ const keys = findEnumerableKeys(actual, expected)
124
140
 
125
141
  // iterate through the array, checking equality for each item ad the given
126
142
  // index, and _removing_ the index from the set of keys to further analyse
@@ -230,7 +246,13 @@ function binaryDiff<T extends Binary>(
230
246
  }
231
247
 
232
248
  // remember keys
233
- const keys = new Set([ ...Object.keys(expected), ...Object.keys(actual) ])
249
+ const keys = findEnumerableKeys(actual, expected)
250
+ // buffers have a ton of *enumerable* props we don't want to consider...
251
+ if (actual instanceof Buffer) {
252
+ for (const key in Buffer.prototype) {
253
+ keys.delete(key)
254
+ }
255
+ }
234
256
 
235
257
  // check for equality
236
258
  const length = expectedData.length
@@ -272,7 +294,7 @@ function primitiveDiff<T extends BoxedPrimitive>(
272
294
  }
273
295
 
274
296
  // remove string indexes from properties
275
- const keys = new Set([ ...Object.keys(actual), ...Object.keys(expected) ])
297
+ const keys = findEnumerableKeys(actual, expected)
276
298
  if (actual instanceof String) {
277
299
  const length = actual.valueOf().length
278
300
  for (let i = 0; i < length; i ++) {
@@ -452,6 +474,6 @@ function diffValues(actual: any, expected: any, remarks: Remarks): Diff {
452
474
  * EXPORTS *
453
475
  * ========================================================================== */
454
476
 
455
- export function diff(actual: any, expected: any): Diff {
456
- return diffValues(actual, expected, { actualMemos: [], expectedMemos: [] })
477
+ export function diff(actual: any, expected: any, strict: boolean = false): Diff {
478
+ return diffValues(actual, expected, { actualMemos: [], expectedMemos: [], strict })
457
479
  }
@@ -580,12 +580,25 @@ export class Expectations<T = unknown> {
580
580
  /**
581
581
  * Expects the value to be _deep equal to_ the specified expected one.
582
582
  *
583
+ * When `strict` is `true` (defaults to `false`) enumerable keys associated
584
+ * with an `undefined` value found in the _actual_ object will have to be
585
+ * also defined in the _expected_ object.
586
+ *
587
+ * For example:
588
+ *
589
+ * ```ts
590
+ * expect({ foo: undefined }).toEqual({}) // will pass
591
+ * expect({ foo: undefined }).toEqual({}, true) // will fail ("foo" is extra)
592
+ * expect({ foo: undefined }).toEqual({ foo: undefined }, true) // will pass
593
+ * expect({}).toEqual({ foo: undefined }) // will fail ("foo" is missing, whether "strict" is true or false)
594
+ * ```
595
+ *
583
596
  * Negation: {@link NegativeExpectations.toEqual `not.toEqual(...)`}
584
597
  */
585
- toEqual<Type>(expected: Type): Expectations<InferToEqual<Type>> {
598
+ toEqual<Type>(expected: Type, strict: boolean = false): Expectations<InferToEqual<Type>> {
586
599
  if ((this.value as any) === expected) return this as Expectations<any>
587
600
 
588
- const result = diff(this.value, expected)
601
+ const result = diff(this.value, expected, strict)
589
602
 
590
603
  if (result.diff) {
591
604
  if (isMatcher(expected)) {
@@ -624,6 +637,15 @@ export class Expectations<T = unknown> {
624
637
  /**
625
638
  * Expects the value to have the specified _property_.
626
639
  *
640
+ * The value associated with the property should not be `undefined`.
641
+ *
642
+ * For example:
643
+ *
644
+ * ```ts
645
+ * expect({}).toHaveProperty('foo') // fails
646
+ * expect({ foo: undefined }).toHaveProperty('foo') // fails
647
+ * ```
648
+ *
627
649
  * Negation: {@link NegativeExpectations.toHaveProperty `not.toHaveProperty(...)`}
628
650
  */
629
651
  toHaveProperty<Prop extends string | number | symbol>(
@@ -631,9 +653,15 @@ export class Expectations<T = unknown> {
631
653
  ): Expectations<T & { [keyt in Prop] : unknown }>
632
654
 
633
655
  /**
634
- * Expects the value to have the specified _property_ and (if specified)
656
+ * Expects the value to have the specified _property_ and (if found)
635
657
  * further validates its value with a {@link Matcher}.
636
658
  *
659
+ * This also works with `undefined` values, for example:
660
+ * ```ts
661
+ * expect({ foo: undefined }).toHaveProperty('foo') // no matcher, fails
662
+ * expect({ foo: undefined }).toHaveProperty('foo', expect.toBeUndefined()) // works!
663
+ * ```
664
+ *
637
665
  * Negation: {@link NegativeExpectations.toHaveProperty `not.toHaveProperty(...)`}
638
666
  */
639
667
  toHaveProperty<
@@ -665,8 +693,16 @@ export class Expectations<T = unknown> {
665
693
  this.toBeDefined()
666
694
 
667
695
  const propertyValue = (this.value as any)[property]
696
+ let hasProperty: boolean
697
+ try {
698
+ // this is for "normal" objects
699
+ hasProperty = property in (this.value as any)
700
+ } catch (error) {
701
+ // when "in" doesn't apply (primitives) use the value
702
+ hasProperty = propertyValue !== undefined
703
+ }
668
704
 
669
- if (propertyValue === undefined) {
705
+ if (! hasProperty) {
670
706
  this._fail(`to have property "${String(property)}"`)
671
707
  }
672
708
 
@@ -692,7 +728,10 @@ export class Expectations<T = unknown> {
692
728
  // re-throw
693
729
  throw error
694
730
  }
731
+ } else if (propertyValue === undefined) {
732
+ this._fail(`has property "${String(property)}" with value ${stringifyValue(undefined)}`)
695
733
  }
734
+
696
735
  return this as Expectations<any>
697
736
  }
698
737
 
@@ -1040,10 +1079,10 @@ export class NegativeExpectations<T = unknown> {
1040
1079
  *
1041
1080
  * Negates: {@link Expectations.toEqual `toEqual(...)`}
1042
1081
  */
1043
- toEqual(expected: any): Expectations<T> {
1082
+ toEqual(expected: any, strict: boolean = false): Expectations<T> {
1044
1083
  let result: Diff = { diff: false, value: this._value }
1045
1084
  if (this._value !== expected) {
1046
- result = diff(this._value, expected)
1085
+ result = diff(this._value, expected, strict)
1047
1086
  if (result.diff) return this._expectations
1048
1087
  }
1049
1088
 
@@ -1085,9 +1124,15 @@ export class NegativeExpectations<T = unknown> {
1085
1124
  toHaveProperty(property: string | number | symbol): Expectations<T> {
1086
1125
  this._expectations.toBeDefined()
1087
1126
 
1088
- const propertyValue = (this._value as any)[property]
1089
- if (propertyValue === undefined) return this._expectations
1090
- this._fail(`not to have property "${String(property)}"`)
1127
+ let hasProperty: boolean
1128
+ try {
1129
+ hasProperty = property in (this._value as any)
1130
+ } catch (error) {
1131
+ hasProperty = (this._value as any)[property] !== undefined
1132
+ }
1133
+
1134
+ if (hasProperty) this._fail(`not to have property "${String(property)}"`)
1135
+ return this._expectations
1091
1136
  }
1092
1137
 
1093
1138
  /* ------------------------------------------------------------------------ */