@augment-vir/assert 31.37.0 → 31.39.0

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.
@@ -1,6 +1,7 @@
1
1
  import { stringify } from '@augment-vir/core';
2
2
  import deepEqual from 'deep-eql';
3
3
  import { AssertionError } from '../../augments/assertion.error.js';
4
+ import { DiffError } from '../../augments/diff.error.js';
4
5
  import { createWaitUntil } from '../../guard-types/wait-until-function.js';
5
6
  function customComparator(a, b) {
6
7
  if (typeof a === 'function' && typeof b === 'function') {
@@ -37,7 +38,13 @@ const assertions = {
37
38
  */
38
39
  strictEquals(actual, expected, failureMessage) {
39
40
  if (actual !== expected) {
40
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not strictly equal\n\n${stringify(expected)}\n\n`, failureMessage);
41
+ if ((typeof actual === 'object' && actual) ||
42
+ (typeof expected === 'object' && expected)) {
43
+ throw new AssertionError(`Strict reference equality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
44
+ }
45
+ else {
46
+ throw new DiffError('Not strictly equal.', actual, expected, failureMessage);
47
+ }
41
48
  }
42
49
  },
43
50
  /**
@@ -68,7 +75,12 @@ const assertions = {
68
75
  */
69
76
  notStrictEquals(actual, expected, failureMessage) {
70
77
  if (actual === expected) {
71
- throw new AssertionError(`\n\n${stringify(actual)}\n\nstrictly equals\n\n${stringify(expected)}\n\n`, failureMessage);
78
+ if (typeof actual === 'object' && actual) {
79
+ throw new AssertionError(`Strict reference INequality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
80
+ }
81
+ else {
82
+ throw new AssertionError(`\n\n${stringify(actual)}\n\nstrictly equals\n\n${stringify(expected)}\n\n`, failureMessage);
83
+ }
72
84
  }
73
85
  },
74
86
  /**
@@ -99,7 +111,13 @@ const assertions = {
99
111
  */
100
112
  looseEquals(actual, expected, failureMessage) {
101
113
  if (actual != expected) {
102
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not loosely equal\n\n${stringify(expected)}\n\n`, failureMessage);
114
+ if ((typeof actual === 'object' && actual) ||
115
+ (typeof expected === 'object' && expected)) {
116
+ throw new AssertionError(`Loose reference equality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
117
+ }
118
+ else {
119
+ throw new DiffError('Not loosely equal.', actual, expected, failureMessage);
120
+ }
103
121
  }
104
122
  },
105
123
  /**
@@ -130,7 +148,12 @@ const assertions = {
130
148
  */
131
149
  notLooseEquals(actual, expected, failureMessage) {
132
150
  if (actual == expected) {
133
- throw new AssertionError(`\n\n${stringify(actual)}\n\nloosely equals\n\n${stringify(expected)}\n\n`, failureMessage);
151
+ if (typeof actual === 'object' && actual) {
152
+ throw new AssertionError(`Loose reference INequality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
153
+ }
154
+ else {
155
+ throw new AssertionError(`\n\n${stringify(actual)}\n\nloosely equals\n\n${stringify(expected)}\n\n`, failureMessage);
156
+ }
134
157
  }
135
158
  },
136
159
  /**
@@ -167,7 +190,7 @@ const assertions = {
167
190
  if (!deepEqual(actual, expected, {
168
191
  comparator: customComparator,
169
192
  })) {
170
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not deeply equal\n\n${stringify(expected)}\n\n`, failureMessage);
193
+ throw new DiffError('Not deeply equal.', actual, expected, failureMessage);
171
194
  }
172
195
  },
173
196
  /**
@@ -425,8 +448,12 @@ export const simpleEqualityGuards = {
425
448
  if (actual === expected) {
426
449
  return actual;
427
450
  }
451
+ else if ((typeof actual === 'object' && actual) ||
452
+ (typeof expected === 'object' && expected)) {
453
+ throw new AssertionError(`Strict reference equality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
454
+ }
428
455
  else {
429
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not strictly equal\n\n${stringify(expected)}\n\n`, failureMessage);
456
+ throw new DiffError('Not strictly equal.', actual, expected, failureMessage);
430
457
  }
431
458
  },
432
459
  /**
@@ -458,7 +485,12 @@ export const simpleEqualityGuards = {
458
485
  */
459
486
  notStrictEquals(actual, expected, failureMessage) {
460
487
  if (actual === expected) {
461
- throw new AssertionError(`\n\n${stringify(actual)}\n\nstrictly equals\n\n${stringify(expected)}\n\n`, failureMessage);
488
+ if (typeof actual === 'object' && actual) {
489
+ throw new AssertionError(`Strict reference INequality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
490
+ }
491
+ else {
492
+ throw new AssertionError(`\n\n${stringify(actual)}\n\nstrictly equals\n\n${stringify(expected)}\n\n`, failureMessage);
493
+ }
462
494
  }
463
495
  else {
464
496
  return actual;
@@ -495,8 +527,12 @@ export const simpleEqualityGuards = {
495
527
  if (actual == expected) {
496
528
  return actual;
497
529
  }
530
+ else if ((typeof actual === 'object' && actual) ||
531
+ (typeof expected === 'object' && expected)) {
532
+ throw new AssertionError(`Loose reference equality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
533
+ }
498
534
  else {
499
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not loosely equal\n\n${stringify(expected)}\n\n`, failureMessage);
535
+ throw new DiffError('Not loosely equal.', actual, expected, failureMessage);
500
536
  }
501
537
  },
502
538
  /**
@@ -528,7 +564,12 @@ export const simpleEqualityGuards = {
528
564
  */
529
565
  notLooseEquals(actual, expected, failureMessage) {
530
566
  if (actual == expected) {
531
- throw new AssertionError(`\n\n${stringify(actual)}\n\nloosely equals\n\n${stringify(expected)}\n\n`, failureMessage);
567
+ if (typeof actual === 'object' && actual) {
568
+ throw new AssertionError(`Loose reference INequality failed for \n\n${stringify(expected)}\n\n.`, failureMessage);
569
+ }
570
+ else {
571
+ throw new AssertionError(`\n\n${stringify(actual)}\n\nloosely equals\n\n${stringify(expected)}\n\n`, failureMessage);
572
+ }
532
573
  }
533
574
  else {
534
575
  return actual;
@@ -572,7 +613,7 @@ export const simpleEqualityGuards = {
572
613
  return actual;
573
614
  }
574
615
  else {
575
- throw new AssertionError(`\n\n${stringify(actual)}\n\ndoes not deeply equal\n\n${stringify(expected)}\n\n`, failureMessage);
616
+ throw new DiffError('Not deeply equal.', actual, expected, failureMessage);
576
617
  }
577
618
  },
578
619
  /**
@@ -0,0 +1,5 @@
1
+ import { AssertionError } from './assertion.error.js';
2
+ export declare class DiffError extends AssertionError {
3
+ name: string;
4
+ constructor(baseMessage: string, actual: unknown, expected: unknown, userCustomizedMessage: string | undefined);
5
+ }
@@ -0,0 +1,12 @@
1
+ import { indent, prettyDiff } from '@augment-vir/core';
2
+ import { AssertionError } from './assertion.error.js';
3
+ export class DiffError extends AssertionError {
4
+ name = 'DiffError';
5
+ constructor(baseMessage, actual, expected, userCustomizedMessage) {
6
+ const diffString = prettyDiff(actual, expected);
7
+ super([
8
+ baseMessage,
9
+ indent(diffString),
10
+ ].join('\n'), userCustomizedMessage);
11
+ }
12
+ }
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { type Primitive } from 'type-fest';
2
2
  export * from './augments/assertion-exports.js';
3
3
  export * from './augments/assertion.error.js';
4
4
  export * from './augments/custom-equality.js';
5
+ export * from './augments/diff.error.js';
5
6
  export * from './augments/guards/assert-wrap.js';
6
7
  export * from './augments/guards/assert.js';
7
8
  export * from './augments/guards/check-wrap.js';
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './augments/assertion-exports.js';
2
2
  export * from './augments/assertion.error.js';
3
3
  export * from './augments/custom-equality.js';
4
+ export * from './augments/diff.error.js';
4
5
  export * from './augments/guards/assert-wrap.js';
5
6
  export * from './augments/guards/assert.js';
6
7
  export * from './augments/guards/check-wrap.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@augment-vir/assert",
3
- "version": "31.37.0",
3
+ "version": "31.39.0",
4
4
  "description": "A collection of assertions for test and production code alike.",
5
5
  "keywords": [
6
6
  "augment",
@@ -42,11 +42,11 @@
42
42
  "test:update": "npm test"
43
43
  },
44
44
  "dependencies": {
45
- "@augment-vir/core": "^31.37.0",
45
+ "@augment-vir/core": "^31.39.0",
46
46
  "@date-vir/duration": "^7.4.2",
47
47
  "deep-eql": "^5.0.2",
48
48
  "expect-type": "^1.2.2",
49
- "type-fest": "^5.0.0"
49
+ "type-fest": "^5.0.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/deep-eql": "^4.0.2",
@@ -57,7 +57,7 @@
57
57
  "@web/test-runner-visual-regression": "^0.10.0",
58
58
  "c8": "^10.1.3",
59
59
  "istanbul-smart-text-reporter": "^1.1.5",
60
- "typescript": "^5.9.2"
60
+ "typescript": "^5.9.3"
61
61
  },
62
62
  "engines": {
63
63
  "node": ">=22"