@overkill-dev/doubles 0.0.1 → 0.0.2
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/LICENSE +21 -0
- package/assert/assertion-extension.d.ts +65 -0
- package/assert/assertion-extension.d.ts.map +1 -0
- package/assert/assertion-extension.js +250 -0
- package/assert/assertion-extension.js.map +1 -0
- package/assertion-protocol/assertion-evaluation.d.ts +13 -0
- package/assertion-protocol/assertion-evaluation.d.ts.map +1 -0
- package/assertion-protocol/assertion-node-shape.d.ts +71 -0
- package/assertion-protocol/assertion-node-shape.d.ts.map +1 -0
- package/assertion-protocol/assertion-node.d.ts +97 -0
- package/assertion-protocol/assertion-node.d.ts.map +1 -0
- package/assertion-protocol/assertion-reference.d.ts +73 -0
- package/assertion-protocol/assertion-reference.d.ts.map +1 -0
- package/assertion-protocol/assertion-reference.js +49 -0
- package/assertion-protocol/assertion-reference.js.map +1 -0
- package/assertion-protocol/assertions/boolean.d.ts +11 -0
- package/assertion-protocol/assertions/boolean.d.ts.map +1 -0
- package/assertion-protocol/assertions/collection.d.ts +22 -0
- package/assertion-protocol/assertions/collection.d.ts.map +1 -0
- package/assertion-protocol/assertions/equality.d.ts +17 -0
- package/assertion-protocol/assertions/equality.d.ts.map +1 -0
- package/assertion-protocol/assertions/fail.d.ts +13 -0
- package/assertion-protocol/assertions/fail.d.ts.map +1 -0
- package/assertion-protocol/assertions/numeric.d.ts +29 -0
- package/assertion-protocol/assertions/numeric.d.ts.map +1 -0
- package/assertion-protocol/assertions/partial.d.ts +14 -0
- package/assertion-protocol/assertions/partial.d.ts.map +1 -0
- package/assertion-protocol/assertions/presence.d.ts +17 -0
- package/assertion-protocol/assertions/presence.d.ts.map +1 -0
- package/assertion-protocol/assertions/string.d.ts +28 -0
- package/assertion-protocol/assertions/string.d.ts.map +1 -0
- package/assertion-protocol/assertions/type-shape.d.ts +42 -0
- package/assertion-protocol/assertions/type-shape.d.ts.map +1 -0
- package/assertion-protocol/thrown-error-record.d.ts +8 -0
- package/assertion-protocol/thrown-error-record.d.ts.map +1 -0
- package/assertion-protocol/thrown-error-record.js +17 -0
- package/assertion-protocol/thrown-error-record.js.map +1 -0
- package/assertion-protocol/thrown-matcher.d.ts +51 -0
- package/assertion-protocol/thrown-matcher.d.ts.map +1 -0
- package/assertion-protocol/thrown-matcher.js +186 -0
- package/assertion-protocol/thrown-matcher.js.map +1 -0
- package/compare/comparison-result.d.ts +25 -0
- package/compare/comparison-result.d.ts.map +1 -0
- package/compare/comparison-state.d.ts +7 -0
- package/compare/comparison-state.d.ts.map +1 -0
- package/compare/comparison-state.js +20 -0
- package/compare/comparison-state.js.map +1 -0
- package/compare/comparison.d.ts +12 -0
- package/compare/comparison.d.ts.map +1 -0
- package/compare/raw-comparison.d.ts +24 -0
- package/compare/raw-comparison.d.ts.map +1 -0
- package/compare/raw-comparison.js +285 -0
- package/compare/raw-comparison.js.map +1 -0
- package/compare/serialized-value-shape.d.ts +143 -0
- package/compare/serialized-value-shape.d.ts.map +1 -0
- package/compare/serialized-value.d.ts +11 -0
- package/compare/serialized-value.d.ts.map +1 -0
- package/compare/value-classification.d.ts +26 -0
- package/compare/value-classification.d.ts.map +1 -0
- package/compare/value-classification.js +110 -0
- package/compare/value-classification.js.map +1 -0
- package/diff/diff-shape.d.ts +117 -0
- package/diff/diff-shape.d.ts.map +1 -0
- package/doubles/disposal-symbol.d.ts +3 -0
- package/doubles/disposal-symbol.d.ts.map +1 -0
- package/doubles/disposal-symbol.js +10 -0
- package/doubles/disposal-symbol.js.map +1 -0
- package/doubles/double-behavior.d.ts +106 -0
- package/doubles/double-behavior.d.ts.map +1 -0
- package/doubles/double-behavior.js +257 -0
- package/doubles/double-behavior.js.map +1 -0
- package/doubles/double-chronology.d.ts +21 -0
- package/doubles/double-chronology.d.ts.map +1 -0
- package/doubles/double-chronology.js +78 -0
- package/doubles/double-chronology.js.map +1 -0
- package/doubles/double-history-api.d.ts +33 -0
- package/doubles/double-history-api.d.ts.map +1 -0
- package/doubles/double-history-api.js +125 -0
- package/doubles/double-history-api.js.map +1 -0
- package/doubles/double-history-record.d.ts +82 -0
- package/doubles/double-history-record.d.ts.map +1 -0
- package/doubles/double-history-record.js +65 -0
- package/doubles/double-history-record.js.map +1 -0
- package/doubles/double-history-store.d.ts +21 -0
- package/doubles/double-history-store.d.ts.map +1 -0
- package/doubles/double-history-store.js +118 -0
- package/doubles/double-history-store.js.map +1 -0
- package/doubles/double-history.d.ts +141 -0
- package/doubles/double-history.d.ts.map +1 -0
- package/doubles/double-history.js +32 -0
- package/doubles/double-history.js.map +1 -0
- package/doubles/double-iterator-event-types.d.ts +25 -0
- package/doubles/double-iterator-event-types.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.d.ts +12 -0
- package/doubles/double-iterator-tracking.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.js +161 -0
- package/doubles/double-iterator-tracking.js.map +1 -0
- package/doubles/double-rule-arguments.d.ts +18 -0
- package/doubles/double-rule-arguments.d.ts.map +1 -0
- package/doubles/double-rule-callback.d.ts +40 -0
- package/doubles/double-rule-callback.d.ts.map +1 -0
- package/doubles/double-rule-callback.js +84 -0
- package/doubles/double-rule-callback.js.map +1 -0
- package/doubles/double-rule-generator.d.ts +108 -0
- package/doubles/double-rule-generator.d.ts.map +1 -0
- package/doubles/double-rule-generator.js +37 -0
- package/doubles/double-rule-generator.js.map +1 -0
- package/doubles/double-rule-types.d.ts +162 -0
- package/doubles/double-rule-types.d.ts.map +1 -0
- package/doubles/double-rule.d.ts +3 -0
- package/doubles/double-rule.d.ts.map +1 -0
- package/doubles/double-rule.js +113 -0
- package/doubles/double-rule.js.map +1 -0
- package/doubles/double-runtime.d.ts +9 -0
- package/doubles/double-runtime.d.ts.map +1 -0
- package/doubles/double-runtime.js +173 -0
- package/doubles/double-runtime.js.map +1 -0
- package/doubles/double-signature.d.ts +5 -0
- package/doubles/double-signature.d.ts.map +1 -0
- package/doubles/double-usage-argument-assertion.d.ts +27 -0
- package/doubles/double-usage-argument-assertion.d.ts.map +1 -0
- package/doubles/double-usage-argument-assertion.js +202 -0
- package/doubles/double-usage-argument-assertion.js.map +1 -0
- package/doubles/double-usage-contract.d.ts +29 -0
- package/doubles/double-usage-contract.d.ts.map +1 -0
- package/doubles/double-usage-contract.js +11 -0
- package/doubles/double-usage-contract.js.map +1 -0
- package/doubles/double-usage-count-assertion.d.ts +6 -0
- package/doubles/double-usage-count-assertion.d.ts.map +1 -0
- package/doubles/double-usage-count-assertion.js +73 -0
- package/doubles/double-usage-count-assertion.js.map +1 -0
- package/doubles/double-usage-disposal-assertion.d.ts +7 -0
- package/doubles/double-usage-disposal-assertion.d.ts.map +1 -0
- package/doubles/double-usage-disposal-assertion.js +175 -0
- package/doubles/double-usage-disposal-assertion.js.map +1 -0
- package/doubles/double-usage-inspection.d.ts +22 -0
- package/doubles/double-usage-inspection.d.ts.map +1 -0
- package/doubles/double-usage-inspection.js +59 -0
- package/doubles/double-usage-inspection.js.map +1 -0
- package/doubles/double-usage-iterator-assertion.d.ts +7 -0
- package/doubles/double-usage-iterator-assertion.d.ts.map +1 -0
- package/doubles/double-usage-iterator-assertion.js +124 -0
- package/doubles/double-usage-iterator-assertion.js.map +1 -0
- package/doubles/double-usage-order-assertion.d.ts +3 -0
- package/doubles/double-usage-order-assertion.d.ts.map +1 -0
- package/doubles/double-usage-order-assertion.js +91 -0
- package/doubles/double-usage-order-assertion.js.map +1 -0
- package/doubles/double-usage.d.ts +81 -0
- package/doubles/double-usage.d.ts.map +1 -0
- package/doubles/double-usage.js +228 -0
- package/doubles/double-usage.js.map +1 -0
- package/doubles/protocol-disposable-double.d.ts +16 -0
- package/doubles/protocol-disposable-double.d.ts.map +1 -0
- package/doubles/protocol-disposable-double.js +37 -0
- package/doubles/protocol-disposable-double.js.map +1 -0
- package/doubles/protocol-double-metadata.d.ts +15 -0
- package/doubles/protocol-double-metadata.d.ts.map +1 -0
- package/doubles/protocol-double-metadata.js +30 -0
- package/doubles/protocol-double-metadata.js.map +1 -0
- package/doubles/protocol-double.d.ts +50 -0
- package/doubles/protocol-double.d.ts.map +1 -0
- package/doubles/protocol-double.js +76 -0
- package/doubles/protocol-double.js.map +1 -0
- package/doubles/protocol-iterator-double.d.ts +93 -0
- package/doubles/protocol-iterator-double.d.ts.map +1 -0
- package/doubles/protocol-iterator-double.js +512 -0
- package/doubles/protocol-iterator-double.js.map +1 -0
- package/doubles/test-double.d.ts +62 -0
- package/doubles/test-double.d.ts.map +1 -0
- package/doubles/test-double.js +192 -0
- package/doubles/test-double.js.map +1 -0
- package/package.json +36 -6
- package/packages/doubles/doubles.entry-point.d.ts +13 -0
- package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
- package/packages/doubles/doubles.entry-point.js +5 -0
- package/packages/doubles/doubles.entry-point.js.map +1 -0
- package/readme.md +423 -5
- package/sbom.cdx.json +30 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
function assertNonEmptyItems(items, message) {
|
|
2
|
+
if (items.length === 0) {
|
|
3
|
+
throw new TypeError(message);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
function isExactThrownMatcher(matcher) {
|
|
7
|
+
return Object.hasOwn(matcher, 'exact');
|
|
8
|
+
}
|
|
9
|
+
function expectedAction(kind) {
|
|
10
|
+
return kind === 'throws' ? 'throw' : 'reject';
|
|
11
|
+
}
|
|
12
|
+
function missingThrownValueChild(input) {
|
|
13
|
+
return {
|
|
14
|
+
actual: false,
|
|
15
|
+
check: 'true',
|
|
16
|
+
location: input.location,
|
|
17
|
+
message: `Expected function to ${expectedAction(input.kind)}.`,
|
|
18
|
+
source: input.source
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function expectedMatcherChild(input) {
|
|
22
|
+
if (input.check === 'equal') {
|
|
23
|
+
return {
|
|
24
|
+
actual: input.actual,
|
|
25
|
+
check: input.check,
|
|
26
|
+
expected: input.expected,
|
|
27
|
+
location: input.location,
|
|
28
|
+
message: input.message,
|
|
29
|
+
source: input.source
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
actual: input.actual,
|
|
34
|
+
check: input.check,
|
|
35
|
+
expected: input.expected,
|
|
36
|
+
location: input.location,
|
|
37
|
+
message: input.message,
|
|
38
|
+
source: input.source
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function matchMatcherChild(input) {
|
|
42
|
+
return {
|
|
43
|
+
actual: input.actual,
|
|
44
|
+
check: input.check,
|
|
45
|
+
location: input.location,
|
|
46
|
+
message: input.message,
|
|
47
|
+
pattern: input.pattern,
|
|
48
|
+
source: input.source
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function errorCode(error) {
|
|
52
|
+
return Reflect.get(error, 'code');
|
|
53
|
+
}
|
|
54
|
+
function matcherHas(matcher, key) {
|
|
55
|
+
return Object.hasOwn(matcher, key);
|
|
56
|
+
}
|
|
57
|
+
function errorInstanceChild(input, value, label) {
|
|
58
|
+
return expectedMatcherChild({
|
|
59
|
+
actual: value,
|
|
60
|
+
check: 'instance-of',
|
|
61
|
+
expected: Error,
|
|
62
|
+
location: input.location,
|
|
63
|
+
message: `Expected ${label} to be an Error.`,
|
|
64
|
+
source: input.source
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function typeMatcherChildren(input, matcher, value, label) {
|
|
68
|
+
return matcherHas(matcher, 'type')
|
|
69
|
+
? [
|
|
70
|
+
expectedMatcherChild({
|
|
71
|
+
actual: value,
|
|
72
|
+
check: 'instance-of',
|
|
73
|
+
expected: matcher.type,
|
|
74
|
+
location: input.location,
|
|
75
|
+
message: `Expected ${label} to be an instance of the constructor.`,
|
|
76
|
+
source: input.source
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
: [];
|
|
80
|
+
}
|
|
81
|
+
function messageMatcherChildren(input, matcher, value, label) {
|
|
82
|
+
if (matcherHas(matcher, 'message')) {
|
|
83
|
+
return matcher.message instanceof RegExp
|
|
84
|
+
? [
|
|
85
|
+
matchMatcherChild({
|
|
86
|
+
actual: value.message,
|
|
87
|
+
check: 'match',
|
|
88
|
+
location: input.location,
|
|
89
|
+
message: `Expected ${label} message to match the pattern.`,
|
|
90
|
+
pattern: matcher.message,
|
|
91
|
+
source: input.source
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
: [
|
|
95
|
+
expectedMatcherChild({
|
|
96
|
+
actual: value.message,
|
|
97
|
+
check: 'equal',
|
|
98
|
+
expected: matcher.message,
|
|
99
|
+
location: input.location,
|
|
100
|
+
message: `Expected ${label} message to equal the string.`,
|
|
101
|
+
source: input.source
|
|
102
|
+
})
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
function codeMatcherChildren(input, matcher, value, label) {
|
|
108
|
+
return matcherHas(matcher, 'code')
|
|
109
|
+
? [
|
|
110
|
+
expectedMatcherChild({
|
|
111
|
+
actual: errorCode(value),
|
|
112
|
+
check: 'equal',
|
|
113
|
+
expected: matcher.code,
|
|
114
|
+
location: input.location,
|
|
115
|
+
message: `Expected ${label} code to equal the string.`,
|
|
116
|
+
source: input.source
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
: [];
|
|
120
|
+
}
|
|
121
|
+
function nameMatcherChildren(input, matcher, value, label) {
|
|
122
|
+
return matcherHas(matcher, 'name')
|
|
123
|
+
? [
|
|
124
|
+
expectedMatcherChild({
|
|
125
|
+
actual: value.name,
|
|
126
|
+
check: 'equal',
|
|
127
|
+
expected: matcher.name,
|
|
128
|
+
location: input.location,
|
|
129
|
+
message: `Expected ${label} name to equal the string.`,
|
|
130
|
+
source: input.source
|
|
131
|
+
})
|
|
132
|
+
]
|
|
133
|
+
: [];
|
|
134
|
+
}
|
|
135
|
+
function causeMatcherChildren(input) {
|
|
136
|
+
return matcherHas(input.matcher, 'cause')
|
|
137
|
+
? input.childrenForMatcher(input.assertion, input.matcher.cause, input.value.cause, `${input.label} cause`)
|
|
138
|
+
: [];
|
|
139
|
+
}
|
|
140
|
+
function structuredErrorChildren(input) {
|
|
141
|
+
if (!(input.value instanceof Error)) {
|
|
142
|
+
return [errorInstanceChild(input.assertion, input.value, input.label)];
|
|
143
|
+
}
|
|
144
|
+
const errorInput = {
|
|
145
|
+
...input,
|
|
146
|
+
value: input.value
|
|
147
|
+
};
|
|
148
|
+
return [
|
|
149
|
+
errorInstanceChild(input.assertion, input.value, input.label),
|
|
150
|
+
...typeMatcherChildren(input.assertion, input.matcher, input.value, input.label),
|
|
151
|
+
...messageMatcherChildren(input.assertion, input.matcher, input.value, input.label),
|
|
152
|
+
...codeMatcherChildren(input.assertion, input.matcher, input.value, input.label),
|
|
153
|
+
...nameMatcherChildren(input.assertion, input.matcher, input.value, input.label),
|
|
154
|
+
...causeMatcherChildren(errorInput)
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
const matcherChildren = function createMatcherChildren(input, matcher, value, label) {
|
|
158
|
+
return isExactThrownMatcher(matcher)
|
|
159
|
+
? [
|
|
160
|
+
expectedMatcherChild({
|
|
161
|
+
actual: value,
|
|
162
|
+
check: 'equal',
|
|
163
|
+
expected: matcher.exact,
|
|
164
|
+
location: input.location,
|
|
165
|
+
message: `Expected ${label} to equal the exact matcher.`,
|
|
166
|
+
source: input.source
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
: structuredErrorChildren({
|
|
170
|
+
assertion: input,
|
|
171
|
+
childrenForMatcher: createMatcherChildren,
|
|
172
|
+
label,
|
|
173
|
+
matcher,
|
|
174
|
+
value
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
export function thrownMatcherChildren(input) {
|
|
178
|
+
const expectedStatus = input.kind === 'throws' ? 'threw' : 'rejected';
|
|
179
|
+
const children = input.observation.status === expectedStatus
|
|
180
|
+
? matcherChildren(input, input.matcher, input.observation.value, 'thrown value')
|
|
181
|
+
: [missingThrownValueChild(input)];
|
|
182
|
+
assertNonEmptyItems(children, 'Expected thrown matcher assertion to create children.');
|
|
183
|
+
return children;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
//# sourceMappingURL=thrown-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thrown-matcher.js","sourceRoot":"","sources":["../../../../source/assertion-protocol/thrown-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Diff, DiffPathSegment } from '../diff/diff-shape.ts';
|
|
2
|
+
import { type SerializedValue } from './serialized-value.ts';
|
|
3
|
+
export type ComparisonResult = {
|
|
4
|
+
readonly actual: SerializedValue;
|
|
5
|
+
readonly diff: Diff | null;
|
|
6
|
+
readonly expected: SerializedValue;
|
|
7
|
+
readonly passed: boolean;
|
|
8
|
+
readonly path: readonly DiffPathSegment[];
|
|
9
|
+
};
|
|
10
|
+
type ComparisonResultInput = {
|
|
11
|
+
readonly actual: unknown;
|
|
12
|
+
readonly diff: Diff | null;
|
|
13
|
+
readonly expected: unknown;
|
|
14
|
+
readonly passed: boolean;
|
|
15
|
+
readonly path: readonly DiffPathSegment[];
|
|
16
|
+
};
|
|
17
|
+
export declare const emptyPath: readonly DiffPathSegment[];
|
|
18
|
+
export declare function firstDiffPath(diff: Diff | null): readonly DiffPathSegment[];
|
|
19
|
+
export declare function comparisonResult(input: ComparisonResultInput): ComparisonResult;
|
|
20
|
+
export declare function passedResult(actual: unknown, expected: unknown): ComparisonResult;
|
|
21
|
+
export declare function failedResult(actual: unknown, expected: unknown, diff: Diff | null): ComparisonResult;
|
|
22
|
+
export declare function serializedValueDiff(actual: unknown, expected: unknown): Diff;
|
|
23
|
+
export declare function valueMismatch(actual: unknown, expected: unknown): ComparisonResult;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=comparison-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-result.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,IAAI,EACJ,eAAe,EAIlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAE7E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,eAAe,EAAO,CAAC;AAoBxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,eAAe,EAAE,CAQ3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CAQ/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAEjF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAEpG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAElF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ComparisonState = {
|
|
2
|
+
readonly actualToExpected: WeakMap<WeakKey, WeakKey>;
|
|
3
|
+
readonly expectedToActual: WeakMap<WeakKey, WeakKey>;
|
|
4
|
+
};
|
|
5
|
+
export declare function createComparisonState(): ComparisonState;
|
|
6
|
+
export declare function objectPairStatus(actual: WeakKey, expected: WeakKey, state: ComparisonState): 'new' | 'seen' | 'topology-mismatch';
|
|
7
|
+
//# sourceMappingURL=comparison-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-state.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,eAAe,CAKvD;AAED,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,eAAe,GACvB,KAAK,GAAG,MAAM,GAAG,mBAAmB,CAgBtC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function createComparisonState() {
|
|
2
|
+
return {
|
|
3
|
+
actualToExpected: new WeakMap(),
|
|
4
|
+
expectedToActual: new WeakMap()
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export function objectPairStatus(actual, expected, state) {
|
|
8
|
+
const previousExpected = state.actualToExpected.get(actual);
|
|
9
|
+
const previousActual = state.expectedToActual.get(expected);
|
|
10
|
+
if (previousExpected === expected && previousActual === actual) {
|
|
11
|
+
return 'seen';
|
|
12
|
+
}
|
|
13
|
+
if (previousExpected !== undefined || previousActual !== undefined) {
|
|
14
|
+
return 'topology-mismatch';
|
|
15
|
+
}
|
|
16
|
+
state.actualToExpected.set(actual, expected);
|
|
17
|
+
state.expectedToActual.set(expected, actual);
|
|
18
|
+
return 'new';
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=comparison-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-state.js","sourceRoot":"","sources":["../../../../source/compare/comparison-state.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,qBAAqB;IACjC,OAAO;QACH,gBAAgB,EAAE,IAAI,OAAO,EAAoB;QACjD,gBAAgB,EAAE,IAAI,OAAO,EAAoB;KACpD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,MAAe,EACf,QAAiB,EACjB,KAAsB;IAEtB,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5D,IAAI,gBAAgB,KAAK,QAAQ,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Diff } from '../diff/diff-shape.ts';
|
|
2
|
+
import { type ComparisonResult as StructuredComparisonResult } from './comparison-result.ts';
|
|
3
|
+
export type ComparisonResult = StructuredComparisonResult;
|
|
4
|
+
export declare const serializedValueDiff: (actual: unknown, expected: unknown) => Diff;
|
|
5
|
+
export declare function compareEqualValues(actual: unknown, expected: unknown): ComparisonResult;
|
|
6
|
+
export declare function compareStringEquality(actual: string, expected: string): ComparisonResult;
|
|
7
|
+
export declare function compareDeepValues(actual: unknown, expected: unknown): ComparisonResult;
|
|
8
|
+
export declare function comparePartialValue(actual: unknown, expected: unknown): ComparisonResult;
|
|
9
|
+
export declare function compareArrayContainsPartial(actual: unknown, expected: unknown): ComparisonResult;
|
|
10
|
+
export declare function compareMembersPartialDeepEqual(actual: unknown, expected: unknown): ComparisonResult;
|
|
11
|
+
export declare function serializedOutcome(actual: unknown, expected: unknown, passed: boolean): ComparisonResult;
|
|
12
|
+
//# sourceMappingURL=comparison.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAOH,KAAK,gBAAgB,IAAI,0BAA0B,EACtD,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAgC,CAAC;AAE3G,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAWxF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAQtF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAQxF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAoBhG;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAsBnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAEvG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ByteSource } from './value-classification.ts';
|
|
2
|
+
type BinaryReference = ArrayBuffer | ArrayBufferView;
|
|
3
|
+
type BuiltInReference = Date | Error | Promise<unknown> | RegExp;
|
|
4
|
+
type CollectionReference = ReadonlyMap<unknown, unknown> | ReadonlySet<unknown>;
|
|
5
|
+
type WeakCollectionReference = WeakMap<Record<string, unknown>, unknown> | WeakSet<Record<string, unknown>>;
|
|
6
|
+
type StrongReference = BinaryReference | BuiltInReference | CollectionReference;
|
|
7
|
+
type ReferenceValue = Readonly<Record<string, unknown>> | StrongReference | WeakCollectionReference;
|
|
8
|
+
export type RawProperty = {
|
|
9
|
+
readonly key: PropertyKey;
|
|
10
|
+
readonly value: unknown;
|
|
11
|
+
};
|
|
12
|
+
export type RawMapEntry = {
|
|
13
|
+
readonly key: unknown;
|
|
14
|
+
readonly value: unknown;
|
|
15
|
+
};
|
|
16
|
+
export declare function sortedKeys(value: ReferenceValue): readonly PropertyKey[] | null;
|
|
17
|
+
export declare function rawProperty(value: ReferenceValue, key: PropertyKey): RawProperty;
|
|
18
|
+
export declare function bytesFrom(value: ByteSource): readonly number[];
|
|
19
|
+
export declare function mapEntries(value: ReadonlyMap<unknown, unknown>): readonly RawMapEntry[];
|
|
20
|
+
export declare function setValues(value: ReadonlySet<unknown>): readonly unknown[];
|
|
21
|
+
export declare function compareExactly(actual: unknown, expected: unknown): boolean;
|
|
22
|
+
export declare function comparePartially(actual: unknown, expected: unknown): boolean;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=raw-comparison.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-comparison.d.ts","sourceRoot":"","sources":["../../../../source/compare/raw-comparison.ts"],"names":[],"mappings":"AACA,OAAO,EAWH,KAAK,UAAU,EAClB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,eAAe,GAAG,WAAW,GAAG,eAAe,CAAC;AACrD,KAAK,gBAAgB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AACjE,KAAK,mBAAmB,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAChF,KAAK,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5G,KAAK,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAChF,KAAK,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAEpG,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAmCF,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,WAAW,EAAE,GAAG,IAAI,CAiB/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAWhF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAM9D;AAYD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,WAAW,EAAE,CAIvF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,OAAO,EAAE,CAEzE;AAoTD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE1E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE5E"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { createComparisonState, objectPairStatus } from "./comparison-state.js";
|
|
2
|
+
import { byteSourcePair, isDateValue, isErrorValue, isMapCandidate, isOpaqueIdentityValue, isRegExpValue, isSetCandidate, mapPair, prototypeOf, setPair } from "./value-classification.js";
|
|
3
|
+
function keyText(key) {
|
|
4
|
+
return typeof key === 'symbol' ? key.toString() : String(key);
|
|
5
|
+
}
|
|
6
|
+
function safePropertyDescriptor(value, key) {
|
|
7
|
+
try {
|
|
8
|
+
return Object.getOwnPropertyDescriptor(value, key);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function sortedKeys(value) {
|
|
15
|
+
try {
|
|
16
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
17
|
+
return Reflect
|
|
18
|
+
.ownKeys(descriptors)
|
|
19
|
+
.filter(function enumerableDataKey(key) {
|
|
20
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
21
|
+
return descriptor?.enumerable === true;
|
|
22
|
+
})
|
|
23
|
+
.toSorted(function compareKeys(first, second) {
|
|
24
|
+
return keyText(first).localeCompare(keyText(second));
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function rawProperty(value, key) {
|
|
32
|
+
const descriptor = safePropertyDescriptor(value, key);
|
|
33
|
+
if (descriptor === undefined || !Object.hasOwn(descriptor, 'value')) {
|
|
34
|
+
return {
|
|
35
|
+
key,
|
|
36
|
+
value: { accessor: true }
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return { key, value: descriptor.value };
|
|
40
|
+
}
|
|
41
|
+
export function bytesFrom(value) {
|
|
42
|
+
if (value instanceof ArrayBuffer) {
|
|
43
|
+
return Array.from(new Uint8Array(value));
|
|
44
|
+
}
|
|
45
|
+
return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
46
|
+
}
|
|
47
|
+
function compareBytes(actual, expected) {
|
|
48
|
+
const actualBytes = bytesFrom(actual);
|
|
49
|
+
const expectedBytes = bytesFrom(expected);
|
|
50
|
+
return actualBytes.length === expectedBytes.length &&
|
|
51
|
+
actualBytes.every(function sameByte(actualByte, index) {
|
|
52
|
+
return actualByte === expectedBytes[index];
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function mapEntries(value) {
|
|
56
|
+
return Array.from(value, function toEntry([key, entryValue]) {
|
|
57
|
+
return { key, value: entryValue };
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export function setValues(value) {
|
|
61
|
+
return Array.from(value);
|
|
62
|
+
}
|
|
63
|
+
function primitiveOrFunction(value) {
|
|
64
|
+
return value === null || typeof value !== 'object';
|
|
65
|
+
}
|
|
66
|
+
function compareSeenObjects(actual, expected, state) {
|
|
67
|
+
const pairStatus = objectPairStatus(actual, expected, state);
|
|
68
|
+
if (pairStatus === 'seen') {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return pairStatus === 'topology-mismatch' ? false : null;
|
|
72
|
+
}
|
|
73
|
+
function objectKeyCountMatches(actualKeys, expectedKeys, mode) {
|
|
74
|
+
return mode === 'partial' || actualKeys.length === expectedKeys.length;
|
|
75
|
+
}
|
|
76
|
+
function compareArrays(actual, expected, context) {
|
|
77
|
+
const exactLengthMismatch = context.mode === 'exact' && actual.length !== expected.length;
|
|
78
|
+
const partialLengthMismatch = context.mode === 'partial' && actual.length < expected.length;
|
|
79
|
+
if (exactLengthMismatch || partialLengthMismatch) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return Array.from({ length: expected.length }).every(function itemMatches(_unusedValue, index) {
|
|
83
|
+
const expectedValue = expected[index];
|
|
84
|
+
return Object.hasOwn(actual, index) === Object.hasOwn(expected, index) &&
|
|
85
|
+
(!Object.hasOwn(expected, index) ||
|
|
86
|
+
context.compare(actual[index], expectedValue, context.state, context.mode));
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function compareObjects(actual, expected, context) {
|
|
90
|
+
const actualKeys = sortedKeys(actual);
|
|
91
|
+
const expectedKeys = sortedKeys(expected);
|
|
92
|
+
if (actualKeys === null || expectedKeys === null) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return objectKeyCountMatches(actualKeys, expectedKeys, context.mode) &&
|
|
96
|
+
expectedKeys.every(function propertyMatches(expectedKey) {
|
|
97
|
+
return actualKeys.includes(expectedKey) &&
|
|
98
|
+
context.compare(rawProperty(actual, expectedKey).value, rawProperty(expected, expectedKey).value, context.state, context.mode);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function matchedMapIndex(actualEntries, expectedEntry, matchedActualIndexes, context) {
|
|
102
|
+
return actualEntries.findIndex(function matchesEntry(actualEntry, index) {
|
|
103
|
+
return !matchedActualIndexes.has(index) &&
|
|
104
|
+
context.compare(actualEntry.key, expectedEntry.key, createComparisonState(), 'exact') &&
|
|
105
|
+
context.compare(actualEntry.value, expectedEntry.value, createComparisonState(), context.mode);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function mapSizeMatches(actualEntries, expectedEntries, mode) {
|
|
109
|
+
return mode === 'partial' || actualEntries.length === expectedEntries.length;
|
|
110
|
+
}
|
|
111
|
+
function compareMaps(actual, expected, context) {
|
|
112
|
+
const actualEntries = mapEntries(actual);
|
|
113
|
+
const expectedEntries = mapEntries(expected);
|
|
114
|
+
const matchedActualIndexes = new Set();
|
|
115
|
+
return mapSizeMatches(actualEntries, expectedEntries, context.mode) &&
|
|
116
|
+
expectedEntries.every(function entryMatches(expectedEntry) {
|
|
117
|
+
const matchIndex = matchedMapIndex(actualEntries, expectedEntry, matchedActualIndexes, context);
|
|
118
|
+
const actualEntry = actualEntries[matchIndex];
|
|
119
|
+
const matched = actualEntry !== undefined &&
|
|
120
|
+
context.compare(actualEntry.key, expectedEntry.key, context.state, 'exact') &&
|
|
121
|
+
context.compare(actualEntry.value, expectedEntry.value, context.state, context.mode);
|
|
122
|
+
if (matched) {
|
|
123
|
+
matchedActualIndexes.add(matchIndex);
|
|
124
|
+
}
|
|
125
|
+
return matched;
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function matchedSetIndex(actualValues, expectedValue, matchedActualIndexes, context) {
|
|
129
|
+
return actualValues.findIndex(function matchesValue(actualValue, index) {
|
|
130
|
+
return !matchedActualIndexes.has(index) &&
|
|
131
|
+
context.compare(actualValue, expectedValue, createComparisonState(), context.mode);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function setSizeMatches(actualValues, expectedValues, mode) {
|
|
135
|
+
return mode === 'partial' || actualValues.length === expectedValues.length;
|
|
136
|
+
}
|
|
137
|
+
function compareSets(actual, expected, context) {
|
|
138
|
+
const actualValues = setValues(actual);
|
|
139
|
+
const expectedValues = setValues(expected);
|
|
140
|
+
const matchedActualIndexes = new Set();
|
|
141
|
+
return setSizeMatches(actualValues, expectedValues, context.mode) &&
|
|
142
|
+
expectedValues.every(function valueMatches(expectedValue) {
|
|
143
|
+
const matchIndex = matchedSetIndex(actualValues, expectedValue, matchedActualIndexes, context);
|
|
144
|
+
const actualValue = actualValues[matchIndex];
|
|
145
|
+
const matched = context.compare(actualValue, expectedValue, context.state, context.mode);
|
|
146
|
+
if (matched) {
|
|
147
|
+
matchedActualIndexes.add(matchIndex);
|
|
148
|
+
}
|
|
149
|
+
return matched;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
function compareErrors(actual, expected, context) {
|
|
153
|
+
return actual.name === expected.name &&
|
|
154
|
+
actual.message === expected.message &&
|
|
155
|
+
compareObjects(actual, expected, context);
|
|
156
|
+
}
|
|
157
|
+
function firstReferenceResult(comparisons, actual, expected, context) {
|
|
158
|
+
for (const comparison of comparisons) {
|
|
159
|
+
const comparisonResult = comparison(actual, expected, context);
|
|
160
|
+
if (comparisonResult !== null) {
|
|
161
|
+
return comparisonResult;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
const exactReferenceComparisons = [
|
|
167
|
+
function compareArrayValues(actual, expected, context) {
|
|
168
|
+
if (!Array.isArray(actual) && !Array.isArray(expected)) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
return Array.isArray(actual) && Array.isArray(expected) && compareArrays(actual, expected, context);
|
|
172
|
+
},
|
|
173
|
+
function compareByteValues(actual, expected) {
|
|
174
|
+
const pair = byteSourcePair(actual, expected);
|
|
175
|
+
return pair === null ? null : compareBytes(pair.actual, pair.expected);
|
|
176
|
+
},
|
|
177
|
+
function compareDateValues(actual, expected) {
|
|
178
|
+
return isDateValue(actual) || isDateValue(expected)
|
|
179
|
+
? isDateValue(actual) && isDateValue(expected) && Object.is(actual.getTime(), expected.getTime())
|
|
180
|
+
: null;
|
|
181
|
+
},
|
|
182
|
+
function compareRegExpValues(actual, expected) {
|
|
183
|
+
if (!isRegExpValue(actual) && !isRegExpValue(expected)) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return isRegExpValue(actual) && isRegExpValue(expected) &&
|
|
187
|
+
actual.source === expected.source &&
|
|
188
|
+
actual.flags === expected.flags;
|
|
189
|
+
},
|
|
190
|
+
function compareErrorValues(actual, expected, context) {
|
|
191
|
+
return isErrorValue(actual) || isErrorValue(expected)
|
|
192
|
+
? isErrorValue(actual) && isErrorValue(expected) && compareErrors(actual, expected, context)
|
|
193
|
+
: null;
|
|
194
|
+
},
|
|
195
|
+
function compareOpaqueValues(actual, expected) {
|
|
196
|
+
return isOpaqueIdentityValue(actual) || isOpaqueIdentityValue(expected) ? false : null;
|
|
197
|
+
},
|
|
198
|
+
function compareMapValues(actual, expected, context) {
|
|
199
|
+
const pair = mapPair(actual, expected);
|
|
200
|
+
return isMapCandidate(actual) || isMapCandidate(expected)
|
|
201
|
+
? pair !== null && compareMaps(pair.actual, pair.expected, context)
|
|
202
|
+
: null;
|
|
203
|
+
},
|
|
204
|
+
function compareSetValues(actual, expected, context) {
|
|
205
|
+
const pair = setPair(actual, expected);
|
|
206
|
+
return isSetCandidate(actual) || isSetCandidate(expected)
|
|
207
|
+
? pair !== null && compareSets(pair.actual, pair.expected, context)
|
|
208
|
+
: null;
|
|
209
|
+
},
|
|
210
|
+
function compareObjectValues(actual, expected, context) {
|
|
211
|
+
return prototypeOf(actual) === prototypeOf(expected) &&
|
|
212
|
+
compareObjects(actual, expected, context);
|
|
213
|
+
}
|
|
214
|
+
];
|
|
215
|
+
const partialReferenceComparisons = [
|
|
216
|
+
function compareArrayValues(actual, expected, context) {
|
|
217
|
+
return Array.isArray(expected)
|
|
218
|
+
? Array.isArray(actual) && compareArrays(actual, expected, context)
|
|
219
|
+
: null;
|
|
220
|
+
},
|
|
221
|
+
function compareByteValues(actual, expected) {
|
|
222
|
+
const pair = byteSourcePair(actual, expected);
|
|
223
|
+
return pair === null ? null : compareBytes(pair.actual, pair.expected);
|
|
224
|
+
},
|
|
225
|
+
function compareDateValues(actual, expected) {
|
|
226
|
+
return isDateValue(expected)
|
|
227
|
+
? isDateValue(actual) && Object.is(actual.getTime(), expected.getTime())
|
|
228
|
+
: null;
|
|
229
|
+
},
|
|
230
|
+
function compareRegExpValues(actual, expected) {
|
|
231
|
+
return isRegExpValue(expected)
|
|
232
|
+
? isRegExpValue(actual) && actual.source === expected.source && actual.flags === expected.flags
|
|
233
|
+
: null;
|
|
234
|
+
},
|
|
235
|
+
function compareErrorValues(actual, expected, context) {
|
|
236
|
+
return isErrorValue(expected)
|
|
237
|
+
? isErrorValue(actual) && compareErrors(actual, expected, context)
|
|
238
|
+
: null;
|
|
239
|
+
},
|
|
240
|
+
function compareOpaqueValues(actual, expected) {
|
|
241
|
+
return isOpaqueIdentityValue(actual) || isOpaqueIdentityValue(expected) ? false : null;
|
|
242
|
+
},
|
|
243
|
+
function compareMapValues(actual, expected, context) {
|
|
244
|
+
const pair = mapPair(actual, expected);
|
|
245
|
+
return isMapCandidate(expected)
|
|
246
|
+
? pair !== null && compareMaps(pair.actual, pair.expected, context)
|
|
247
|
+
: null;
|
|
248
|
+
},
|
|
249
|
+
function compareSetValues(actual, expected, context) {
|
|
250
|
+
const pair = setPair(actual, expected);
|
|
251
|
+
return isSetCandidate(expected)
|
|
252
|
+
? pair !== null && compareSets(pair.actual, pair.expected, context)
|
|
253
|
+
: null;
|
|
254
|
+
},
|
|
255
|
+
compareObjects
|
|
256
|
+
];
|
|
257
|
+
function isReferenceValue(value) {
|
|
258
|
+
return value !== null && typeof value === 'object';
|
|
259
|
+
}
|
|
260
|
+
function compareReferences(actual, expected, context) {
|
|
261
|
+
const seen = compareSeenObjects(actual, expected, context.state);
|
|
262
|
+
if (seen !== null) {
|
|
263
|
+
return seen;
|
|
264
|
+
}
|
|
265
|
+
const comparisons = context.mode === 'exact' ? exactReferenceComparisons : partialReferenceComparisons;
|
|
266
|
+
return firstReferenceResult(comparisons, actual, expected, context);
|
|
267
|
+
}
|
|
268
|
+
function compareRaw(actual, expected, state, mode) {
|
|
269
|
+
if (Object.is(actual, expected)) {
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
if (primitiveOrFunction(actual) || primitiveOrFunction(expected)) {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
return isReferenceValue(actual) && isReferenceValue(expected)
|
|
276
|
+
? compareReferences(actual, expected, { compare: compareRaw, mode, state })
|
|
277
|
+
: false;
|
|
278
|
+
}
|
|
279
|
+
export function compareExactly(actual, expected) {
|
|
280
|
+
return compareRaw(actual, expected, createComparisonState(), 'exact');
|
|
281
|
+
}
|
|
282
|
+
export function comparePartially(actual, expected) {
|
|
283
|
+
return compareRaw(actual, expected, createComparisonState(), 'partial');
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=raw-comparison.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-comparison.js","sourceRoot":"","sources":["../../../../source/compare/raw-comparison.ts"],"names":[],"mappings":"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"}
|