@casual-simulation/expect 2.0.18

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.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/index.d.ts +6 -0
  4. package/index.js +5 -0
  5. package/index.js.map +1 -0
  6. package/package.json +35 -0
  7. package/src/asymmetricMatchers.d.ts +67 -0
  8. package/src/asymmetricMatchers.js +188 -0
  9. package/src/asymmetricMatchers.js.map +1 -0
  10. package/src/diff/cleanupSemantic.d.ts +58 -0
  11. package/src/diff/cleanupSemantic.js +526 -0
  12. package/src/diff/cleanupSemantic.js.map +1 -0
  13. package/src/diff/constants.d.ts +9 -0
  14. package/src/diff/constants.js +10 -0
  15. package/src/diff/constants.js.map +1 -0
  16. package/src/diff/diffLines.d.ts +13 -0
  17. package/src/diff/diffLines.js +138 -0
  18. package/src/diff/diffLines.js.map +1 -0
  19. package/src/diff/diffStrings.d.ts +10 -0
  20. package/src/diff/diffStrings.js +36 -0
  21. package/src/diff/diffStrings.js.map +1 -0
  22. package/src/diff/getAlignedDiffs.d.ts +11 -0
  23. package/src/diff/getAlignedDiffs.js +187 -0
  24. package/src/diff/getAlignedDiffs.js.map +1 -0
  25. package/src/diff/index.d.ts +16 -0
  26. package/src/diff/index.js +139 -0
  27. package/src/diff/index.js.map +1 -0
  28. package/src/diff/joinAlignedDiffs.d.ts +11 -0
  29. package/src/diff/joinAlignedDiffs.js +191 -0
  30. package/src/diff/joinAlignedDiffs.js.map +1 -0
  31. package/src/diff/normalizeDiffOptions.d.ts +10 -0
  32. package/src/diff/normalizeDiffOptions.js +40 -0
  33. package/src/diff/normalizeDiffOptions.js.map +1 -0
  34. package/src/diff/printDiffs.d.ts +11 -0
  35. package/src/diff/printDiffs.js +46 -0
  36. package/src/diff/printDiffs.js.map +1 -0
  37. package/src/diff/types.d.ts +49 -0
  38. package/src/diff/types.js +2 -0
  39. package/src/diff/types.js.map +1 -0
  40. package/src/diff-sequences/index.d.ts +19 -0
  41. package/src/diff-sequences/index.js +506 -0
  42. package/src/diff-sequences/index.js.map +1 -0
  43. package/src/extractExpectedAssertionsErrors.d.ts +11 -0
  44. package/src/extractExpectedAssertionsErrors.js +58 -0
  45. package/src/extractExpectedAssertionsErrors.js.map +1 -0
  46. package/src/get-type/index.d.ts +11 -0
  47. package/src/get-type/index.js +57 -0
  48. package/src/get-type/index.js.map +1 -0
  49. package/src/index.d.ts +16 -0
  50. package/src/index.js +247 -0
  51. package/src/index.js.map +1 -0
  52. package/src/jasmineUtils.d.ts +9 -0
  53. package/src/jasmineUtils.js +218 -0
  54. package/src/jasmineUtils.js.map +1 -0
  55. package/src/jestMatchersObject.d.ts +14 -0
  56. package/src/jestMatchersObject.js +78 -0
  57. package/src/jestMatchersObject.js.map +1 -0
  58. package/src/matcher-utils/Replaceable.d.ts +18 -0
  59. package/src/matcher-utils/Replaceable.js +57 -0
  60. package/src/matcher-utils/Replaceable.js.map +1 -0
  61. package/src/matcher-utils/deepCyclicCopyReplaceable.d.ts +8 -0
  62. package/src/matcher-utils/deepCyclicCopyReplaceable.js +96 -0
  63. package/src/matcher-utils/deepCyclicCopyReplaceable.js.map +1 -0
  64. package/src/matcher-utils/index.d.ts +53 -0
  65. package/src/matcher-utils/index.js +341 -0
  66. package/src/matcher-utils/index.js.map +1 -0
  67. package/src/matchers.d.ts +11 -0
  68. package/src/matchers.js +575 -0
  69. package/src/matchers.js.map +1 -0
  70. package/src/message-util/index.d.ts +11 -0
  71. package/src/message-util/index.js +34 -0
  72. package/src/message-util/index.js.map +1 -0
  73. package/src/pretty-format/collections.d.ts +33 -0
  74. package/src/pretty-format/collections.js +130 -0
  75. package/src/pretty-format/collections.js.map +1 -0
  76. package/src/pretty-format/index.d.ts +25 -0
  77. package/src/pretty-format/index.js +390 -0
  78. package/src/pretty-format/index.js.map +1 -0
  79. package/src/pretty-format/plugins/AsymmetricMatcher.d.ts +12 -0
  80. package/src/pretty-format/plugins/AsymmetricMatcher.js +53 -0
  81. package/src/pretty-format/plugins/AsymmetricMatcher.js.map +1 -0
  82. package/src/pretty-format/plugins/ConvertAnsi.d.ts +12 -0
  83. package/src/pretty-format/plugins/ConvertAnsi.js +58 -0
  84. package/src/pretty-format/plugins/ConvertAnsi.js.map +1 -0
  85. package/src/pretty-format/plugins/DOMCollection.d.ts +12 -0
  86. package/src/pretty-format/plugins/DOMCollection.js +39 -0
  87. package/src/pretty-format/plugins/DOMCollection.js.map +1 -0
  88. package/src/pretty-format/plugins/DOMElement.d.ts +12 -0
  89. package/src/pretty-format/plugins/DOMElement.js +68 -0
  90. package/src/pretty-format/plugins/DOMElement.js.map +1 -0
  91. package/src/pretty-format/plugins/Immutable.d.ts +12 -0
  92. package/src/pretty-format/plugins/Immutable.js +113 -0
  93. package/src/pretty-format/plugins/Immutable.js.map +1 -0
  94. package/src/pretty-format/plugins/ReactTestComponent.d.ts +19 -0
  95. package/src/pretty-format/plugins/ReactTestComponent.js +29 -0
  96. package/src/pretty-format/plugins/ReactTestComponent.js.map +1 -0
  97. package/src/pretty-format/plugins/lib/escapeHTML.d.ts +8 -0
  98. package/src/pretty-format/plugins/lib/escapeHTML.js +10 -0
  99. package/src/pretty-format/plugins/lib/escapeHTML.js.map +1 -0
  100. package/src/pretty-format/plugins/lib/markup.d.ts +14 -0
  101. package/src/pretty-format/plugins/lib/markup.js +98 -0
  102. package/src/pretty-format/plugins/lib/markup.js.map +1 -0
  103. package/src/pretty-format/types.d.ts +109 -0
  104. package/src/pretty-format/types.js +8 -0
  105. package/src/pretty-format/types.js.map +1 -0
  106. package/src/print.d.ts +16 -0
  107. package/src/print.js +71 -0
  108. package/src/print.js.map +1 -0
  109. package/src/spyMatchers.d.ts +10 -0
  110. package/src/spyMatchers.js +766 -0
  111. package/src/spyMatchers.js.map +1 -0
  112. package/src/test-utils/ConditionalTest.d.ts +10 -0
  113. package/src/test-utils/ConditionalTest.js +25 -0
  114. package/src/test-utils/ConditionalTest.js.map +1 -0
  115. package/src/test-utils/alignedAnsiStyleSerializer.d.ts +9 -0
  116. package/src/test-utils/alignedAnsiStyleSerializer.js +46 -0
  117. package/src/test-utils/alignedAnsiStyleSerializer.js.map +1 -0
  118. package/src/test-utils/config.d.ts +10 -0
  119. package/src/test-utils/config.js +143 -0
  120. package/src/test-utils/config.js.map +1 -0
  121. package/src/test-utils/index.d.ts +10 -0
  122. package/src/test-utils/index.js +10 -0
  123. package/src/test-utils/index.js.map +1 -0
  124. package/src/toThrowMatchers.d.ts +12 -0
  125. package/src/toThrowMatchers.js +258 -0
  126. package/src/toThrowMatchers.js.map +1 -0
  127. package/src/types.d.ts +327 -0
  128. package/src/types.js +9 -0
  129. package/src/types.js.map +1 -0
  130. package/src/utils.d.ts +26 -0
  131. package/src/utils.js +303 -0
  132. package/src/utils.js.map +1 -0
@@ -0,0 +1,575 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ /* eslint-disable local/ban-types-eventually */
9
+ import { getType, isPrimitive } from './get-type';
10
+ import { DIM_COLOR, EXPECTED_COLOR, RECEIVED_COLOR, SUGGEST_TO_CONTAIN_EQUAL, ensureExpectedIsNonNegativeInteger, ensureNoExpected, ensureNumbers, getLabelPrinter, matcherErrorMessage, matcherHint, printDiffOrStringify, printExpected, printReceived, printWithType, stringify, } from './matcher-utils';
11
+ import { equals } from './jasmineUtils';
12
+ import { printCloseTo, printExpectedConstructorName, printExpectedConstructorNameNot, printReceivedArrayContainExpectedItem, printReceivedConstructorName, printReceivedConstructorNameNot, printReceivedStringContainExpectedResult, printReceivedStringContainExpectedSubstring, } from './print';
13
+ import { arrayBufferEquality, getObjectSubset, getPath, iterableEquality, sparseArrayEquality, subsetEquality, typeEquality, } from './utils';
14
+ // Omit colon and one or more spaces, so can call getLabelPrinter.
15
+ const EXPECTED_LABEL = 'Expected';
16
+ const RECEIVED_LABEL = 'Received';
17
+ const EXPECTED_VALUE_LABEL = 'Expected value';
18
+ const RECEIVED_VALUE_LABEL = 'Received value';
19
+ // The optional property of matcher context is true if undefined.
20
+ const isExpand = (expand) => expand !== false;
21
+ const toStrictEqualTesters = [
22
+ iterableEquality,
23
+ typeEquality,
24
+ sparseArrayEquality,
25
+ arrayBufferEquality,
26
+ ];
27
+ const matchers = {
28
+ toBe(received, expected) {
29
+ const matcherName = 'toBe';
30
+ const options = {
31
+ comment: 'Object.is equality',
32
+ isNot: this.isNot,
33
+ promise: this.promise,
34
+ };
35
+ const pass = Object.is(received, expected);
36
+ const message = pass
37
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
38
+ '\n\n' +
39
+ `Expected: not ${printExpected(expected)}`
40
+ : () => {
41
+ const expectedType = getType(expected);
42
+ let deepEqualityName = null;
43
+ if (expectedType !== 'map' && expectedType !== 'set') {
44
+ // If deep equality passes when referential identity fails,
45
+ // but exclude map and set until review of their equality logic.
46
+ if (equals(received, expected, toStrictEqualTesters, true)) {
47
+ deepEqualityName = 'toStrictEqual';
48
+ }
49
+ else if (equals(received, expected, [iterableEquality])) {
50
+ deepEqualityName = 'toEqual';
51
+ }
52
+ }
53
+ return (matcherHint(matcherName, undefined, undefined, options) +
54
+ '\n\n' +
55
+ (deepEqualityName !== null
56
+ ? DIM_COLOR(`If it should pass with deep equality, replace "${matcherName}" with "${deepEqualityName}"`) + '\n\n'
57
+ : '') +
58
+ printDiffOrStringify(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(this.expand)));
59
+ };
60
+ // Passing the actual and expected objects so that a custom reporter
61
+ // could access them, for example in order to display a custom visual diff,
62
+ // or create a different error message
63
+ return { actual: received, expected, message, name: matcherName, pass };
64
+ },
65
+ toBeCloseTo(received, expected, precision = 2) {
66
+ const matcherName = 'toBeCloseTo';
67
+ const secondArgument = arguments.length === 3 ? 'precision' : undefined;
68
+ const isNot = this.isNot;
69
+ const options = {
70
+ isNot,
71
+ promise: this.promise,
72
+ secondArgument,
73
+ secondArgumentColor: (arg) => arg,
74
+ };
75
+ if (typeof expected !== 'number') {
76
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${EXPECTED_COLOR('expected')} value must be a number`, printWithType('Expected', expected, printExpected)));
77
+ }
78
+ if (typeof received !== 'number') {
79
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must be a number`, printWithType('Received', received, printReceived)));
80
+ }
81
+ let pass = false;
82
+ let expectedDiff = 0;
83
+ let receivedDiff = 0;
84
+ if (received === Infinity && expected === Infinity) {
85
+ pass = true; // Infinity - Infinity is NaN
86
+ }
87
+ else if (received === -Infinity && expected === -Infinity) {
88
+ pass = true; // -Infinity - -Infinity is NaN
89
+ }
90
+ else {
91
+ expectedDiff = Math.pow(10, -precision) / 2;
92
+ receivedDiff = Math.abs(expected - received);
93
+ pass = receivedDiff < expectedDiff;
94
+ }
95
+ const message = pass
96
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
97
+ '\n\n' +
98
+ `Expected: not ${printExpected(expected)}\n` +
99
+ (receivedDiff === 0
100
+ ? ''
101
+ : `Received: ${printReceived(received)}\n` +
102
+ '\n' +
103
+ printCloseTo(receivedDiff, expectedDiff, precision, isNot))
104
+ : () => matcherHint(matcherName, undefined, undefined, options) +
105
+ '\n\n' +
106
+ `Expected: ${printExpected(expected)}\n` +
107
+ `Received: ${printReceived(received)}\n` +
108
+ '\n' +
109
+ printCloseTo(receivedDiff, expectedDiff, precision, isNot);
110
+ return { message, pass };
111
+ },
112
+ toBeDefined(received, expected) {
113
+ const matcherName = 'toBeDefined';
114
+ const options = {
115
+ isNot: this.isNot,
116
+ promise: this.promise,
117
+ };
118
+ ensureNoExpected(expected, matcherName, options);
119
+ const pass = received !== void 0;
120
+ const message = () => matcherHint(matcherName, undefined, '', options) +
121
+ '\n\n' +
122
+ `Received: ${printReceived(received)}`;
123
+ return { message, pass };
124
+ },
125
+ toBeFalsy(received, expected) {
126
+ const matcherName = 'toBeFalsy';
127
+ const options = {
128
+ isNot: this.isNot,
129
+ promise: this.promise,
130
+ };
131
+ ensureNoExpected(expected, matcherName, options);
132
+ const pass = !received;
133
+ const message = () => matcherHint(matcherName, undefined, '', options) +
134
+ '\n\n' +
135
+ `Received: ${printReceived(received)}`;
136
+ return { message, pass };
137
+ },
138
+ toBeGreaterThan(received, expected) {
139
+ const matcherName = 'toBeGreaterThan';
140
+ const isNot = this.isNot;
141
+ const options = {
142
+ isNot,
143
+ promise: this.promise,
144
+ };
145
+ ensureNumbers(received, expected, matcherName, options);
146
+ const pass = received > expected;
147
+ const message = () => matcherHint(matcherName, undefined, undefined, options) +
148
+ '\n\n' +
149
+ `Expected:${isNot ? ' not' : ''} > ${printExpected(expected)}\n` +
150
+ `Received:${isNot ? ' ' : ''} ${printReceived(received)}`;
151
+ return { message, pass };
152
+ },
153
+ toBeGreaterThanOrEqual(received, expected) {
154
+ const matcherName = 'toBeGreaterThanOrEqual';
155
+ const isNot = this.isNot;
156
+ const options = {
157
+ isNot,
158
+ promise: this.promise,
159
+ };
160
+ ensureNumbers(received, expected, matcherName, options);
161
+ const pass = received >= expected;
162
+ const message = () => matcherHint(matcherName, undefined, undefined, options) +
163
+ '\n\n' +
164
+ `Expected:${isNot ? ' not' : ''} >= ${printExpected(expected)}\n` +
165
+ `Received:${isNot ? ' ' : ''} ${printReceived(received)}`;
166
+ return { message, pass };
167
+ },
168
+ toBeInstanceOf(received, expected) {
169
+ const matcherName = 'toBeInstanceOf';
170
+ const options = {
171
+ isNot: this.isNot,
172
+ promise: this.promise,
173
+ };
174
+ if (typeof expected !== 'function') {
175
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${EXPECTED_COLOR('expected')} value must be a function`, printWithType('Expected', expected, printExpected)));
176
+ }
177
+ const pass = received instanceof expected;
178
+ const message = pass
179
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
180
+ '\n\n' +
181
+ printExpectedConstructorNameNot('Expected constructor', expected) +
182
+ (typeof received.constructor === 'function' &&
183
+ received.constructor !== expected
184
+ ? printReceivedConstructorNameNot('Received constructor', received.constructor, expected)
185
+ : '')
186
+ : () => matcherHint(matcherName, undefined, undefined, options) +
187
+ '\n\n' +
188
+ printExpectedConstructorName('Expected constructor', expected) +
189
+ (isPrimitive(received) ||
190
+ Object.getPrototypeOf(received) === null
191
+ ? `\nReceived value has no prototype\nReceived value: ${printReceived(received)}`
192
+ : typeof received.constructor !== 'function'
193
+ ? `\nReceived value: ${printReceived(received)}`
194
+ : printReceivedConstructorName('Received constructor', received.constructor));
195
+ return { message, pass };
196
+ },
197
+ toBeLessThan(received, expected) {
198
+ const matcherName = 'toBeLessThan';
199
+ const isNot = this.isNot;
200
+ const options = {
201
+ isNot,
202
+ promise: this.promise,
203
+ };
204
+ ensureNumbers(received, expected, matcherName, options);
205
+ const pass = received < expected;
206
+ const message = () => matcherHint(matcherName, undefined, undefined, options) +
207
+ '\n\n' +
208
+ `Expected:${isNot ? ' not' : ''} < ${printExpected(expected)}\n` +
209
+ `Received:${isNot ? ' ' : ''} ${printReceived(received)}`;
210
+ return { message, pass };
211
+ },
212
+ toBeLessThanOrEqual(received, expected) {
213
+ const matcherName = 'toBeLessThanOrEqual';
214
+ const isNot = this.isNot;
215
+ const options = {
216
+ isNot,
217
+ promise: this.promise,
218
+ };
219
+ ensureNumbers(received, expected, matcherName, options);
220
+ const pass = received <= expected;
221
+ const message = () => matcherHint(matcherName, undefined, undefined, options) +
222
+ '\n\n' +
223
+ `Expected:${isNot ? ' not' : ''} <= ${printExpected(expected)}\n` +
224
+ `Received:${isNot ? ' ' : ''} ${printReceived(received)}`;
225
+ return { message, pass };
226
+ },
227
+ toBeNaN(received, expected) {
228
+ const matcherName = 'toBeNaN';
229
+ const options = {
230
+ isNot: this.isNot,
231
+ promise: this.promise,
232
+ };
233
+ ensureNoExpected(expected, matcherName, options);
234
+ const pass = Number.isNaN(received);
235
+ const message = () => matcherHint(matcherName, undefined, '', options) +
236
+ '\n\n' +
237
+ `Received: ${printReceived(received)}`;
238
+ return { message, pass };
239
+ },
240
+ toBeNull(received, expected) {
241
+ const matcherName = 'toBeNull';
242
+ const options = {
243
+ isNot: this.isNot,
244
+ promise: this.promise,
245
+ };
246
+ ensureNoExpected(expected, matcherName, options);
247
+ const pass = received === null;
248
+ const message = () => matcherHint(matcherName, undefined, '', options) +
249
+ '\n\n' +
250
+ `Received: ${printReceived(received)}`;
251
+ return { message, pass };
252
+ },
253
+ toBeTruthy(received, expected) {
254
+ const matcherName = 'toBeTruthy';
255
+ const options = {
256
+ isNot: this.isNot,
257
+ promise: this.promise,
258
+ };
259
+ ensureNoExpected(expected, matcherName, options);
260
+ const pass = !!received;
261
+ const message = () => matcherHint(matcherName, undefined, '', options) +
262
+ '\n\n' +
263
+ `Received: ${printReceived(received)}`;
264
+ return { message, pass };
265
+ },
266
+ toBeUndefined(received, expected) {
267
+ const matcherName = 'toBeUndefined';
268
+ const options = {
269
+ isNot: this.isNot,
270
+ promise: this.promise,
271
+ };
272
+ ensureNoExpected(expected, matcherName, options);
273
+ const pass = received === void 0;
274
+ const message = () => matcherHint(matcherName, undefined, '', options) +
275
+ '\n\n' +
276
+ `Received: ${printReceived(received)}`;
277
+ return { message, pass };
278
+ },
279
+ toContain(received, expected) {
280
+ const matcherName = 'toContain';
281
+ const isNot = this.isNot;
282
+ const options = {
283
+ comment: 'indexOf',
284
+ isNot,
285
+ promise: this.promise,
286
+ };
287
+ if (received == null) {
288
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must not be null nor undefined`, printWithType('Received', received, printReceived)));
289
+ }
290
+ if (typeof received === 'string') {
291
+ const wrongTypeErrorMessage = `${EXPECTED_COLOR('expected')} value must be a string if ${RECEIVED_COLOR('received')} value is a string`;
292
+ if (typeof expected !== 'string') {
293
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, received, String(expected), options), wrongTypeErrorMessage, printWithType('Expected', expected, printExpected) +
294
+ '\n' +
295
+ printWithType('Received', received, printReceived)));
296
+ }
297
+ const index = received.indexOf(String(expected));
298
+ const pass = index !== -1;
299
+ const message = () => {
300
+ const labelExpected = `Expected ${typeof expected === 'string' ? 'substring' : 'value'}`;
301
+ const labelReceived = 'Received string';
302
+ const printLabel = getLabelPrinter(labelExpected, labelReceived);
303
+ return (matcherHint(matcherName, undefined, undefined, options) +
304
+ '\n\n' +
305
+ `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(expected)}\n` +
306
+ `${printLabel(labelReceived)}${isNot ? ' ' : ''}${isNot
307
+ ? printReceivedStringContainExpectedSubstring(received, index, String(expected).length)
308
+ : printReceived(received)}`);
309
+ };
310
+ return { message, pass };
311
+ }
312
+ const indexable = Array.from(received);
313
+ const index = indexable.indexOf(expected);
314
+ const pass = index !== -1;
315
+ const message = () => {
316
+ const labelExpected = 'Expected value';
317
+ const labelReceived = `Received ${getType(received)}`;
318
+ const printLabel = getLabelPrinter(labelExpected, labelReceived);
319
+ return (matcherHint(matcherName, undefined, undefined, options) +
320
+ '\n\n' +
321
+ `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(expected)}\n` +
322
+ `${printLabel(labelReceived)}${isNot ? ' ' : ''}${isNot && Array.isArray(received)
323
+ ? printReceivedArrayContainExpectedItem(received, index)
324
+ : printReceived(received)}` +
325
+ (!isNot &&
326
+ indexable.findIndex((item) => equals(item, expected, [iterableEquality])) !== -1
327
+ ? `\n\n${SUGGEST_TO_CONTAIN_EQUAL}`
328
+ : ''));
329
+ };
330
+ return { message, pass };
331
+ },
332
+ toContainEqual(received, expected) {
333
+ const matcherName = 'toContainEqual';
334
+ const isNot = this.isNot;
335
+ const options = {
336
+ comment: 'deep equality',
337
+ isNot,
338
+ promise: this.promise,
339
+ };
340
+ if (received == null) {
341
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must not be null nor undefined`, printWithType('Received', received, printReceived)));
342
+ }
343
+ const index = Array.from(received).findIndex((item) => equals(item, expected, [iterableEquality]));
344
+ const pass = index !== -1;
345
+ const message = () => {
346
+ const labelExpected = 'Expected value';
347
+ const labelReceived = `Received ${getType(received)}`;
348
+ const printLabel = getLabelPrinter(labelExpected, labelReceived);
349
+ return (matcherHint(matcherName, undefined, undefined, options) +
350
+ '\n\n' +
351
+ `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(expected)}\n` +
352
+ `${printLabel(labelReceived)}${isNot ? ' ' : ''}${isNot && Array.isArray(received)
353
+ ? printReceivedArrayContainExpectedItem(received, index)
354
+ : printReceived(received)}`);
355
+ };
356
+ return { message, pass };
357
+ },
358
+ toEqual(received, expected) {
359
+ const matcherName = 'toEqual';
360
+ const options = {
361
+ comment: 'deep equality',
362
+ isNot: this.isNot,
363
+ promise: this.promise,
364
+ };
365
+ const pass = equals(received, expected, [iterableEquality]);
366
+ const message = pass
367
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
368
+ '\n\n' +
369
+ `Expected: not ${printExpected(expected)}\n` +
370
+ (stringify(expected) !== stringify(received)
371
+ ? `Received: ${printReceived(received)}`
372
+ : '')
373
+ : () => matcherHint(matcherName, undefined, undefined, options) +
374
+ '\n\n' +
375
+ printDiffOrStringify(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(this.expand));
376
+ // Passing the actual and expected objects so that a custom reporter
377
+ // could access them, for example in order to display a custom visual diff,
378
+ // or create a different error message
379
+ return { actual: received, expected, message, name: matcherName, pass };
380
+ },
381
+ toHaveLength(received, expected) {
382
+ const matcherName = 'toHaveLength';
383
+ const isNot = this.isNot;
384
+ const options = {
385
+ isNot,
386
+ promise: this.promise,
387
+ };
388
+ if (typeof (received === null || received === void 0 ? void 0 : received.length) !== 'number') {
389
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must have a length property whose value must be a number`, printWithType('Received', received, printReceived)));
390
+ }
391
+ ensureExpectedIsNonNegativeInteger(expected, matcherName, options);
392
+ const pass = received.length === expected;
393
+ const message = () => {
394
+ const labelExpected = 'Expected length';
395
+ const labelReceivedLength = 'Received length';
396
+ const labelReceivedValue = `Received ${getType(received)}`;
397
+ const printLabel = getLabelPrinter(labelExpected, labelReceivedLength, labelReceivedValue);
398
+ return (matcherHint(matcherName, undefined, undefined, options) +
399
+ '\n\n' +
400
+ `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(expected)}\n` +
401
+ (isNot
402
+ ? ''
403
+ : `${printLabel(labelReceivedLength)}${printReceived(received.length)}\n`) +
404
+ `${printLabel(labelReceivedValue)}${isNot ? ' ' : ''}${printReceived(received)}`);
405
+ };
406
+ return { message, pass };
407
+ },
408
+ toHaveProperty(received, expectedPath, expectedValue) {
409
+ const matcherName = 'toHaveProperty';
410
+ const expectedArgument = 'path';
411
+ const hasValue = arguments.length === 3;
412
+ const options = {
413
+ isNot: this.isNot,
414
+ promise: this.promise,
415
+ secondArgument: hasValue ? 'value' : '',
416
+ };
417
+ if (received === null || received === undefined) {
418
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, expectedArgument, options), `${RECEIVED_COLOR('received')} value must not be null nor undefined`, printWithType('Received', received, printReceived)));
419
+ }
420
+ const expectedPathType = getType(expectedPath);
421
+ if (expectedPathType !== 'string' && expectedPathType !== 'array') {
422
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, expectedArgument, options), `${EXPECTED_COLOR('expected')} path must be a string or array`, printWithType('Expected', expectedPath, printExpected)));
423
+ }
424
+ const expectedPathLength = typeof expectedPath === 'string'
425
+ ? expectedPath.split('.').length
426
+ : expectedPath.length;
427
+ if (expectedPathType === 'array' && expectedPathLength === 0) {
428
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, expectedArgument, options), `${EXPECTED_COLOR('expected')} path must not be an empty array`, printWithType('Expected', expectedPath, printExpected)));
429
+ }
430
+ const result = getPath(received, expectedPath);
431
+ const { lastTraversedObject, hasEndProp } = result;
432
+ const receivedPath = result.traversedPath;
433
+ const hasCompletePath = receivedPath.length === expectedPathLength;
434
+ const receivedValue = hasCompletePath
435
+ ? result.value
436
+ : lastTraversedObject;
437
+ const pass = hasValue
438
+ ? equals(result.value, expectedValue, [iterableEquality])
439
+ : Boolean(hasEndProp); // theoretically undefined if empty path
440
+ // Remove type cast if we rewrite getPath as iterative algorithm.
441
+ // Delete this unique report if future breaking change
442
+ // removes the edge case that expected value undefined
443
+ // also matches absence of a property with the key path.
444
+ if (pass && !hasCompletePath) {
445
+ const message = () => matcherHint(matcherName, undefined, expectedArgument, options) +
446
+ '\n\n' +
447
+ `Expected path: ${printExpected(expectedPath)}\n` +
448
+ `Received path: ${printReceived(expectedPathType === 'array' || receivedPath.length === 0
449
+ ? receivedPath
450
+ : receivedPath.join('.'))}\n\n` +
451
+ `Expected value: not ${printExpected(expectedValue)}\n` +
452
+ `Received value: ${printReceived(receivedValue)}\n\n` +
453
+ DIM_COLOR('Because a positive assertion passes for expected value undefined if the property does not exist, this negative assertion fails unless the property does exist and has a defined value');
454
+ return { message, pass };
455
+ }
456
+ const message = pass
457
+ ? () => matcherHint(matcherName, undefined, expectedArgument, options) +
458
+ '\n\n' +
459
+ (hasValue
460
+ ? `Expected path: ${printExpected(expectedPath)}\n\n` +
461
+ `Expected value: not ${printExpected(expectedValue)}` +
462
+ (stringify(expectedValue) !== stringify(receivedValue)
463
+ ? `\nReceived value: ${printReceived(receivedValue)}`
464
+ : '')
465
+ : `Expected path: not ${printExpected(expectedPath)}\n\n` +
466
+ `Received value: ${printReceived(receivedValue)}`)
467
+ : () => matcherHint(matcherName, undefined, expectedArgument, options) +
468
+ '\n\n' +
469
+ `Expected path: ${printExpected(expectedPath)}\n` +
470
+ (hasCompletePath
471
+ ? '\n' +
472
+ printDiffOrStringify(expectedValue, receivedValue, EXPECTED_VALUE_LABEL, RECEIVED_VALUE_LABEL, isExpand(this.expand))
473
+ : `Received path: ${printReceived(expectedPathType === 'array' ||
474
+ receivedPath.length === 0
475
+ ? receivedPath
476
+ : receivedPath.join('.'))}\n\n` +
477
+ (hasValue
478
+ ? `Expected value: ${printExpected(expectedValue)}\n`
479
+ : '') +
480
+ `Received value: ${printReceived(receivedValue)}`);
481
+ return { message, pass };
482
+ },
483
+ toMatch(received, expected) {
484
+ const matcherName = 'toMatch';
485
+ const options = {
486
+ isNot: this.isNot,
487
+ promise: this.promise,
488
+ };
489
+ if (typeof received !== 'string') {
490
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must be a string`, printWithType('Received', received, printReceived)));
491
+ }
492
+ if (!(typeof expected === 'string') &&
493
+ !(expected && typeof expected.test === 'function')) {
494
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${EXPECTED_COLOR('expected')} value must be a string or regular expression`, printWithType('Expected', expected, printExpected)));
495
+ }
496
+ const pass = typeof expected === 'string'
497
+ ? received.includes(expected)
498
+ : new RegExp(expected).test(received);
499
+ const message = pass
500
+ ? () => typeof expected === 'string'
501
+ ? matcherHint(matcherName, undefined, undefined, options) +
502
+ '\n\n' +
503
+ `Expected substring: not ${printExpected(expected)}\n` +
504
+ `Received string: ${printReceivedStringContainExpectedSubstring(received, received.indexOf(expected), expected.length)}`
505
+ : matcherHint(matcherName, undefined, undefined, options) +
506
+ '\n\n' +
507
+ `Expected pattern: not ${printExpected(expected)}\n` +
508
+ `Received string: ${printReceivedStringContainExpectedResult(received, typeof expected.exec === 'function'
509
+ ? expected.exec(received)
510
+ : null)}`
511
+ : () => {
512
+ const labelExpected = `Expected ${typeof expected === 'string' ? 'substring' : 'pattern'}`;
513
+ const labelReceived = 'Received string';
514
+ const printLabel = getLabelPrinter(labelExpected, labelReceived);
515
+ return (matcherHint(matcherName, undefined, undefined, options) +
516
+ '\n\n' +
517
+ `${printLabel(labelExpected)}${printExpected(expected)}\n` +
518
+ `${printLabel(labelReceived)}${printReceived(received)}`);
519
+ };
520
+ return { message, pass };
521
+ },
522
+ toMatchObject(received, expected) {
523
+ const matcherName = 'toMatchObject';
524
+ const options = {
525
+ isNot: this.isNot,
526
+ promise: this.promise,
527
+ };
528
+ if (typeof received !== 'object' || received === null) {
529
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must be a non-null object`, printWithType('Received', received, printReceived)));
530
+ }
531
+ if (typeof expected !== 'object' || expected === null) {
532
+ throw new Error(matcherErrorMessage(matcherHint(matcherName, undefined, undefined, options), `${EXPECTED_COLOR('expected')} value must be a non-null object`, printWithType('Expected', expected, printExpected)));
533
+ }
534
+ const pass = equals(received, expected, [
535
+ iterableEquality,
536
+ subsetEquality,
537
+ ]);
538
+ const message = pass
539
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
540
+ '\n\n' +
541
+ `Expected: not ${printExpected(expected)}` +
542
+ (stringify(expected) !== stringify(received)
543
+ ? `\nReceived: ${printReceived(received)}`
544
+ : '')
545
+ : () => matcherHint(matcherName, undefined, undefined, options) +
546
+ '\n\n' +
547
+ printDiffOrStringify(expected, getObjectSubset(received, expected), EXPECTED_LABEL, RECEIVED_LABEL, isExpand(this.expand));
548
+ return { message, pass };
549
+ },
550
+ toStrictEqual(received, expected) {
551
+ const matcherName = 'toStrictEqual';
552
+ const options = {
553
+ comment: 'deep equality',
554
+ isNot: this.isNot,
555
+ promise: this.promise,
556
+ };
557
+ const pass = equals(received, expected, toStrictEqualTesters, true);
558
+ const message = pass
559
+ ? () => matcherHint(matcherName, undefined, undefined, options) +
560
+ '\n\n' +
561
+ `Expected: not ${printExpected(expected)}\n` +
562
+ (stringify(expected) !== stringify(received)
563
+ ? `Received: ${printReceived(received)}`
564
+ : '')
565
+ : () => matcherHint(matcherName, undefined, undefined, options) +
566
+ '\n\n' +
567
+ printDiffOrStringify(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(this.expand));
568
+ // Passing the actual and expected objects so that a custom reporter
569
+ // could access them, for example in order to display a custom visual diff,
570
+ // or create a different error message
571
+ return { actual: received, expected, message, name: matcherName, pass };
572
+ },
573
+ };
574
+ export default matchers;
575
+ //# sourceMappingURL=matchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["matchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export declare const separateMessageFromStack: (content: string) => {
8
+ message: string;
9
+ stack: string;
10
+ };
11
+ //# sourceMappingURL=index.d.ts.map