You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.1 KiB
141 lines
5.1 KiB
'use strict'; |
|
|
|
Object.defineProperty(exports, '__esModule', { |
|
value: true |
|
}); |
|
exports.printReceivedStringContainExpectedSubstring = |
|
exports.printReceivedStringContainExpectedResult = |
|
exports.printReceivedConstructorNameNot = |
|
exports.printReceivedConstructorName = |
|
exports.printReceivedArrayContainExpectedItem = |
|
exports.printExpectedConstructorNameNot = |
|
exports.printExpectedConstructorName = |
|
exports.printCloseTo = |
|
void 0; |
|
|
|
var _jestMatcherUtils = require('jest-matcher-utils'); |
|
|
|
/** |
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
*/ |
|
|
|
/* eslint-disable local/ban-types-eventually */ |
|
// Format substring but do not enclose in double quote marks. |
|
// The replacement is compatible with pretty-format package. |
|
const printSubstring = val => val.replace(/"|\\/g, '\\$&'); |
|
|
|
const printReceivedStringContainExpectedSubstring = ( |
|
received, |
|
start, |
|
length // not end |
|
) => |
|
(0, _jestMatcherUtils.RECEIVED_COLOR)( |
|
'"' + |
|
printSubstring(received.slice(0, start)) + |
|
(0, _jestMatcherUtils.INVERTED_COLOR)( |
|
printSubstring(received.slice(start, start + length)) |
|
) + |
|
printSubstring(received.slice(start + length)) + |
|
'"' |
|
); |
|
|
|
exports.printReceivedStringContainExpectedSubstring = |
|
printReceivedStringContainExpectedSubstring; |
|
|
|
const printReceivedStringContainExpectedResult = (received, result) => |
|
result === null |
|
? (0, _jestMatcherUtils.printReceived)(received) |
|
: printReceivedStringContainExpectedSubstring( |
|
received, |
|
result.index, |
|
result[0].length |
|
); // The serialized array is compatible with pretty-format package min option. |
|
// However, items have default stringify depth (instead of depth - 1) |
|
// so expected item looks consistent by itself and enclosed in the array. |
|
|
|
exports.printReceivedStringContainExpectedResult = |
|
printReceivedStringContainExpectedResult; |
|
|
|
const printReceivedArrayContainExpectedItem = (received, index) => |
|
(0, _jestMatcherUtils.RECEIVED_COLOR)( |
|
'[' + |
|
received |
|
.map((item, i) => { |
|
const stringified = (0, _jestMatcherUtils.stringify)(item); |
|
return i === index |
|
? (0, _jestMatcherUtils.INVERTED_COLOR)(stringified) |
|
: stringified; |
|
}) |
|
.join(', ') + |
|
']' |
|
); |
|
|
|
exports.printReceivedArrayContainExpectedItem = |
|
printReceivedArrayContainExpectedItem; |
|
|
|
const printCloseTo = (receivedDiff, expectedDiff, precision, isNot) => { |
|
const receivedDiffString = (0, _jestMatcherUtils.stringify)(receivedDiff); |
|
const expectedDiffString = receivedDiffString.includes('e') // toExponential arg is number of digits after the decimal point. |
|
? expectedDiff.toExponential(0) |
|
: 0 <= precision && precision < 20 // toFixed arg is number of digits after the decimal point. |
|
? // It may be a value between 0 and 20 inclusive. |
|
// Implementations may optionally support a larger range of values. |
|
expectedDiff.toFixed(precision + 1) |
|
: (0, _jestMatcherUtils.stringify)(expectedDiff); |
|
return ( |
|
`Expected precision: ${isNot ? ' ' : ''} ${(0, |
|
_jestMatcherUtils.stringify)(precision)}\n` + |
|
`Expected difference: ${isNot ? 'not ' : ''}< ${(0, |
|
_jestMatcherUtils.EXPECTED_COLOR)(expectedDiffString)}\n` + |
|
`Received difference: ${isNot ? ' ' : ''} ${(0, |
|
_jestMatcherUtils.RECEIVED_COLOR)(receivedDiffString)}` |
|
); |
|
}; |
|
|
|
exports.printCloseTo = printCloseTo; |
|
|
|
const printExpectedConstructorName = (label, expected) => |
|
printConstructorName(label, expected, false, true) + '\n'; |
|
|
|
exports.printExpectedConstructorName = printExpectedConstructorName; |
|
|
|
const printExpectedConstructorNameNot = (label, expected) => |
|
printConstructorName(label, expected, true, true) + '\n'; |
|
|
|
exports.printExpectedConstructorNameNot = printExpectedConstructorNameNot; |
|
|
|
const printReceivedConstructorName = (label, received) => |
|
printConstructorName(label, received, false, false) + '\n'; // Do not call function if received is equal to expected. |
|
|
|
exports.printReceivedConstructorName = printReceivedConstructorName; |
|
|
|
const printReceivedConstructorNameNot = (label, received, expected) => |
|
typeof expected.name === 'string' && |
|
expected.name.length !== 0 && |
|
typeof received.name === 'string' && |
|
received.name.length !== 0 |
|
? printConstructorName(label, received, true, false) + |
|
` ${ |
|
Object.getPrototypeOf(received) === expected |
|
? 'extends' |
|
: 'extends … extends' |
|
} ${(0, _jestMatcherUtils.EXPECTED_COLOR)(expected.name)}` + |
|
'\n' |
|
: printConstructorName(label, received, false, false) + '\n'; |
|
|
|
exports.printReceivedConstructorNameNot = printReceivedConstructorNameNot; |
|
|
|
const printConstructorName = (label, constructor, isNot, isExpected) => |
|
typeof constructor.name !== 'string' |
|
? `${label} name is not a string` |
|
: constructor.name.length === 0 |
|
? `${label} name is an empty string` |
|
: `${label}: ${!isNot ? '' : isExpected ? 'not ' : ' '}${ |
|
isExpected |
|
? (0, _jestMatcherUtils.EXPECTED_COLOR)(constructor.name) |
|
: (0, _jestMatcherUtils.RECEIVED_COLOR)(constructor.name) |
|
}`;
|
|
|