| 'use strict'; |
| |
| Object.defineProperty(exports, '__esModule', { |
| value: true |
| }); |
| exports.printReceivedConstructorNameNot = exports.printReceivedConstructorName = exports.printExpectedConstructorNameNot = exports.printExpectedConstructorName = exports.printCloseTo = exports.printReceivedArrayContainExpectedItem = exports.printReceivedStringContainExpectedResult = exports.printReceivedStringContainExpectedSubstring = 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) => |
| (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) |
| }`; |