1323 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1323 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', {
 | |
|   value: true
 | |
| });
 | |
| exports.default = void 0;
 | |
| 
 | |
| var _jestGetType = _interopRequireWildcard(require('jest-get-type'));
 | |
| 
 | |
| var _jestMatcherUtils = require('jest-matcher-utils');
 | |
| 
 | |
| var _print = require('./print');
 | |
| 
 | |
| var _utils = require('./utils');
 | |
| 
 | |
| var _jasmineUtils = require('./jasmineUtils');
 | |
| 
 | |
| function _interopRequireWildcard(obj) {
 | |
|   if (obj && obj.__esModule) {
 | |
|     return obj;
 | |
|   } else {
 | |
|     var newObj = {};
 | |
|     if (obj != null) {
 | |
|       for (var key in obj) {
 | |
|         if (Object.prototype.hasOwnProperty.call(obj, key)) {
 | |
|           var desc =
 | |
|             Object.defineProperty && Object.getOwnPropertyDescriptor
 | |
|               ? Object.getOwnPropertyDescriptor(obj, key)
 | |
|               : {};
 | |
|           if (desc.get || desc.set) {
 | |
|             Object.defineProperty(newObj, key, desc);
 | |
|           } else {
 | |
|             newObj[key] = obj[key];
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     newObj.default = obj;
 | |
|     return newObj;
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * 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.
 | |
|  *
 | |
|  */
 | |
| // Omit colon and one or more spaces, so can call getLabelPrinter.
 | |
| const EXPECTED_LABEL = 'Expected';
 | |
| const RECEIVED_LABEL = 'Received';
 | |
| const EXPECTED_VALUE_LABEL = 'Expected value';
 | |
| const RECEIVED_VALUE_LABEL = 'Received value';
 | |
| const toStrictEqualTesters = [
 | |
|   _utils.iterableEquality,
 | |
|   _utils.typeEquality,
 | |
|   _utils.sparseArrayEquality
 | |
| ];
 | |
| const matchers = {
 | |
|   toBe(received, expected) {
 | |
|     const matcherName = 'toBe';
 | |
|     const options = {
 | |
|       comment: 'Object.is equality',
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     const pass = Object.is(received, expected);
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}`
 | |
|       : () => {
 | |
|           const expectedType = (0, _jestGetType.default)(expected);
 | |
|           let deepEqualityName = null;
 | |
| 
 | |
|           if (expectedType !== 'map' && expectedType !== 'set') {
 | |
|             // If deep equality passes when referential identity fails,
 | |
|             // but exclude map and set until review of their equality logic.
 | |
|             if (
 | |
|               (0, _jasmineUtils.equals)(
 | |
|                 received,
 | |
|                 expected,
 | |
|                 toStrictEqualTesters,
 | |
|                 true
 | |
|               )
 | |
|             ) {
 | |
|               deepEqualityName = 'toStrictEqual';
 | |
|             } else if (
 | |
|               (0, _jasmineUtils.equals)(received, expected, [
 | |
|                 _utils.iterableEquality
 | |
|               ])
 | |
|             ) {
 | |
|               deepEqualityName = 'toEqual';
 | |
|             }
 | |
|           }
 | |
| 
 | |
|           return (
 | |
|             (0, _jestMatcherUtils.matcherHint)(
 | |
|               matcherName,
 | |
|               undefined,
 | |
|               undefined,
 | |
|               options
 | |
|             ) +
 | |
|             '\n\n' +
 | |
|             (deepEqualityName !== null
 | |
|               ? (0, _jestMatcherUtils.DIM_COLOR)(
 | |
|                   `If it should pass with deep equality, replace "${matcherName}" with "${deepEqualityName}"`
 | |
|                 ) + '\n\n'
 | |
|               : '') +
 | |
|             (0, _print.printDiffOrStringify)(
 | |
|               expected,
 | |
|               received,
 | |
|               EXPECTED_LABEL,
 | |
|               RECEIVED_LABEL,
 | |
|               this.expand
 | |
|             )
 | |
|           );
 | |
|         }; // Passing the actual and expected objects so that a custom reporter
 | |
|     // could access them, for example in order to display a custom visual diff,
 | |
|     // or create a different error message
 | |
| 
 | |
|     return {
 | |
|       actual: received,
 | |
|       expected,
 | |
|       message,
 | |
|       name: matcherName,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeCloseTo(received, expected, precision = 2) {
 | |
|     const matcherName = 'toBeCloseTo';
 | |
|     const secondArgument = arguments.length === 3 ? 'precision' : undefined;
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise,
 | |
|       secondArgument
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNumbers)(
 | |
|       received,
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     let pass = false;
 | |
|     let expectedDiff = 0;
 | |
|     let receivedDiff = 0;
 | |
| 
 | |
|     if (received === Infinity && expected === Infinity) {
 | |
|       pass = true; // Infinity - Infinity is NaN
 | |
|     } else if (received === -Infinity && expected === -Infinity) {
 | |
|       pass = true; // -Infinity - -Infinity is NaN
 | |
|     } else {
 | |
|       expectedDiff = Math.pow(10, -precision) / 2;
 | |
|       receivedDiff = Math.abs(expected - received);
 | |
|       pass = receivedDiff < expectedDiff;
 | |
|     }
 | |
| 
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|           (receivedDiff === 0
 | |
|             ? ''
 | |
|             : `Received:     ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 received
 | |
|               )}\n` +
 | |
|               '\n' +
 | |
|               `Expected precision:        ${(0,
 | |
|               _jestMatcherUtils.printExpected)(precision)}\n` +
 | |
|               `Expected difference: not < ${(0,
 | |
|               _jestMatcherUtils.printExpected)(expectedDiff)}\n` +
 | |
|               `Received difference:       ${(0,
 | |
|               _jestMatcherUtils.printReceived)(receivedDiff)}`)
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|           `Received: ${(0, _jestMatcherUtils.printReceived)(received)}\n` +
 | |
|           '\n' +
 | |
|           `Expected precision:    ${(0, _jestMatcherUtils.printExpected)(
 | |
|             precision
 | |
|           )}\n` +
 | |
|           `Expected difference: < ${(0, _jestMatcherUtils.printExpected)(
 | |
|             expectedDiff
 | |
|           )}\n` +
 | |
|           `Received difference:   ${(0, _jestMatcherUtils.printReceived)(
 | |
|             receivedDiff
 | |
|           )}`;
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeDefined(received, expected) {
 | |
|     const matcherName = 'toBeDefined';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = received !== void 0;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeFalsy(received, expected) {
 | |
|     const matcherName = 'toBeFalsy';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = !received;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeGreaterThan(received, expected) {
 | |
|     const matcherName = 'toBeGreaterThan';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNumbers)(
 | |
|       received,
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     const pass = received > expected;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(
 | |
|         matcherName,
 | |
|         undefined,
 | |
|         undefined,
 | |
|         options
 | |
|       ) +
 | |
|       '\n\n' +
 | |
|       `Expected:${isNot ? ' not' : ''} > ${(0, _jestMatcherUtils.printExpected)(
 | |
|         expected
 | |
|       )}\n` +
 | |
|       `Received:${isNot ? '    ' : ''}   ${(0, _jestMatcherUtils.printReceived)(
 | |
|         received
 | |
|       )}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeGreaterThanOrEqual(received, expected) {
 | |
|     const matcherName = 'toBeGreaterThanOrEqual';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNumbers)(
 | |
|       received,
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     const pass = received >= expected;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(
 | |
|         matcherName,
 | |
|         undefined,
 | |
|         undefined,
 | |
|         options
 | |
|       ) +
 | |
|       '\n\n' +
 | |
|       `Expected:${isNot ? ' not' : ''} >= ${(0,
 | |
|       _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|       `Received:${isNot ? '    ' : ''}    ${(0,
 | |
|       _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeInstanceOf(received, expected) {
 | |
|     const matcherName = 'toBeInstanceOf';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (typeof expected !== 'function') {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 | |
|             'expected'
 | |
|           )} value must be a function`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Expected',
 | |
|             expected,
 | |
|             _jestMatcherUtils.printExpected
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const pass = received instanceof expected;
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (0, _print.printExpectedConstructorNameNot)(
 | |
|             'Expected constructor',
 | |
|             expected
 | |
|           ) +
 | |
|           (typeof received.constructor === 'function' &&
 | |
|           received.constructor !== expected
 | |
|             ? (0, _print.printReceivedConstructorNameNot)(
 | |
|                 'Received constructor',
 | |
|                 received.constructor,
 | |
|                 expected
 | |
|               )
 | |
|             : '')
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (0, _print.printExpectedConstructorName)(
 | |
|             'Expected constructor',
 | |
|             expected
 | |
|           ) +
 | |
|           ((0, _jestGetType.isPrimitive)(received) ||
 | |
|           Object.getPrototypeOf(received) === null
 | |
|             ? `\nReceived value has no prototype\nReceived value: ${(0,
 | |
|               _jestMatcherUtils.printReceived)(received)}`
 | |
|             : typeof received.constructor !== 'function'
 | |
|             ? `\nReceived value: ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 received
 | |
|               )}`
 | |
|             : (0, _print.printReceivedConstructorName)(
 | |
|                 'Received constructor',
 | |
|                 received.constructor
 | |
|               ));
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeLessThan(received, expected) {
 | |
|     const matcherName = 'toBeLessThan';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNumbers)(
 | |
|       received,
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     const pass = received < expected;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(
 | |
|         matcherName,
 | |
|         undefined,
 | |
|         undefined,
 | |
|         options
 | |
|       ) +
 | |
|       '\n\n' +
 | |
|       `Expected:${isNot ? ' not' : ''} < ${(0, _jestMatcherUtils.printExpected)(
 | |
|         expected
 | |
|       )}\n` +
 | |
|       `Received:${isNot ? '    ' : ''}   ${(0, _jestMatcherUtils.printReceived)(
 | |
|         received
 | |
|       )}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeLessThanOrEqual(received, expected) {
 | |
|     const matcherName = 'toBeLessThanOrEqual';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNumbers)(
 | |
|       received,
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     const pass = received <= expected;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(
 | |
|         matcherName,
 | |
|         undefined,
 | |
|         undefined,
 | |
|         options
 | |
|       ) +
 | |
|       '\n\n' +
 | |
|       `Expected:${isNot ? ' not' : ''} <= ${(0,
 | |
|       _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|       `Received:${isNot ? '    ' : ''}    ${(0,
 | |
|       _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeNaN(received, expected) {
 | |
|     const matcherName = 'toBeNaN';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = Number.isNaN(received);
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeNull(received, expected) {
 | |
|     const matcherName = 'toBeNull';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = received === null;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeTruthy(received, expected) {
 | |
|     const matcherName = 'toBeTruthy';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = !!received;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toBeUndefined(received, expected) {
 | |
|     const matcherName = 'toBeUndefined';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
 | |
|     const pass = received === void 0;
 | |
| 
 | |
|     const message = () =>
 | |
|       (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
 | |
|       '\n\n' +
 | |
|       `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toContain(received, expected) {
 | |
|     const matcherName = 'toContain';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       comment: 'indexOf',
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (received == null) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must not be null nor undefined`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     if (typeof received === 'string') {
 | |
|       const index = received.indexOf(String(expected));
 | |
|       const pass = index !== -1;
 | |
| 
 | |
|       const message = () => {
 | |
|         const labelExpected = `Expected ${
 | |
|           typeof expected === 'string' ? 'substring' : 'value'
 | |
|         }`;
 | |
|         const labelReceived = 'Received string';
 | |
|         const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
 | |
|           labelExpected,
 | |
|           labelReceived
 | |
|         );
 | |
|         return (
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
 | |
|           _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|           `${printLabel(labelReceived)}${isNot ? '    ' : ''}${
 | |
|             isNot
 | |
|               ? (0, _print.printReceivedStringContainExpectedSubstring)(
 | |
|                   received,
 | |
|                   index,
 | |
|                   String(expected).length
 | |
|                 )
 | |
|               : (0, _jestMatcherUtils.printReceived)(received)
 | |
|           }`
 | |
|         );
 | |
|       };
 | |
| 
 | |
|       return {
 | |
|         message,
 | |
|         pass
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     const indexable = Array.from(received);
 | |
|     const index = indexable.indexOf(expected);
 | |
|     const pass = index !== -1;
 | |
| 
 | |
|     const message = () => {
 | |
|       const labelExpected = 'Expected value';
 | |
|       const labelReceived = `Received ${(0, _jestGetType.default)(received)}`;
 | |
|       const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
 | |
|         labelExpected,
 | |
|         labelReceived
 | |
|       );
 | |
|       return (
 | |
|         (0, _jestMatcherUtils.matcherHint)(
 | |
|           matcherName,
 | |
|           undefined,
 | |
|           undefined,
 | |
|           options
 | |
|         ) +
 | |
|         '\n\n' +
 | |
|         `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
 | |
|         _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|         `${printLabel(labelReceived)}${isNot ? '    ' : ''}${
 | |
|           isNot && Array.isArray(received)
 | |
|             ? (0, _print.printReceivedArrayContainExpectedItem)(received, index)
 | |
|             : (0, _jestMatcherUtils.printReceived)(received)
 | |
|         }` +
 | |
|         (!isNot &&
 | |
|         indexable.findIndex(item =>
 | |
|           (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality])
 | |
|         ) !== -1
 | |
|           ? `\n\n${_jestMatcherUtils.SUGGEST_TO_CONTAIN_EQUAL}`
 | |
|           : '')
 | |
|       );
 | |
|     };
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toContainEqual(received, expected) {
 | |
|     const matcherName = 'toContainEqual';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       comment: 'deep equality',
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (received == null) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must not be null nor undefined`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const index = Array.from(received).findIndex(item =>
 | |
|       (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality])
 | |
|     );
 | |
|     const pass = index !== -1;
 | |
| 
 | |
|     const message = () => {
 | |
|       const labelExpected = 'Expected value';
 | |
|       const labelReceived = `Received ${(0, _jestGetType.default)(received)}`;
 | |
|       const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
 | |
|         labelExpected,
 | |
|         labelReceived
 | |
|       );
 | |
|       return (
 | |
|         (0, _jestMatcherUtils.matcherHint)(
 | |
|           matcherName,
 | |
|           undefined,
 | |
|           undefined,
 | |
|           options
 | |
|         ) +
 | |
|         '\n\n' +
 | |
|         `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
 | |
|         _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|         `${printLabel(labelReceived)}${isNot ? '    ' : ''}${
 | |
|           isNot && Array.isArray(received)
 | |
|             ? (0, _print.printReceivedArrayContainExpectedItem)(received, index)
 | |
|             : (0, _jestMatcherUtils.printReceived)(received)
 | |
|         }`
 | |
|       );
 | |
|     };
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toEqual(received, expected) {
 | |
|     const matcherName = 'toEqual';
 | |
|     const options = {
 | |
|       comment: 'deep equality',
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     const pass = (0, _jasmineUtils.equals)(received, expected, [
 | |
|       _utils.iterableEquality
 | |
|     ]);
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|           ((0, _jestMatcherUtils.stringify)(expected) !==
 | |
|           (0, _jestMatcherUtils.stringify)(received)
 | |
|             ? `Received:     ${(0, _jestMatcherUtils.printReceived)(received)}`
 | |
|             : '')
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (0, _print.printDiffOrStringify)(
 | |
|             expected,
 | |
|             received,
 | |
|             EXPECTED_LABEL,
 | |
|             RECEIVED_LABEL,
 | |
|             this.expand
 | |
|           ); // Passing the actual and expected objects so that a custom reporter
 | |
|     // could access them, for example in order to display a custom visual diff,
 | |
|     // or create a different error message
 | |
| 
 | |
|     return {
 | |
|       actual: received,
 | |
|       expected,
 | |
|       message,
 | |
|       name: matcherName,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toHaveLength(received, expected) {
 | |
|     const matcherName = 'toHaveLength';
 | |
|     const isNot = this.isNot;
 | |
|     const options = {
 | |
|       isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (
 | |
|       typeof received !== 'string' &&
 | |
|       (!received || typeof received.length !== 'number')
 | |
|     ) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must have a length property whose value must be a number`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     (0, _jestMatcherUtils.ensureExpectedIsNonNegativeInteger)(
 | |
|       expected,
 | |
|       matcherName,
 | |
|       options
 | |
|     );
 | |
|     const pass = received.length === expected;
 | |
| 
 | |
|     const message = () => {
 | |
|       const labelExpected = 'Expected length';
 | |
|       const labelReceivedLength = 'Received length';
 | |
|       const labelReceivedValue = `Received ${(0, _jestGetType.default)(
 | |
|         received
 | |
|       )}`;
 | |
|       const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
 | |
|         labelExpected,
 | |
|         labelReceivedLength,
 | |
|         labelReceivedValue
 | |
|       );
 | |
|       return (
 | |
|         (0, _jestMatcherUtils.matcherHint)(
 | |
|           matcherName,
 | |
|           undefined,
 | |
|           undefined,
 | |
|           options
 | |
|         ) +
 | |
|         '\n\n' +
 | |
|         `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
 | |
|         _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|         (isNot
 | |
|           ? ''
 | |
|           : `${printLabel(labelReceivedLength)}${(0,
 | |
|             _jestMatcherUtils.printReceived)(received.length)}\n`) +
 | |
|         `${printLabel(labelReceivedValue)}${isNot ? '    ' : ''}${(0,
 | |
|         _jestMatcherUtils.printReceived)(received)}`
 | |
|       );
 | |
|     };
 | |
| 
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toHaveProperty(received, expectedPath, expectedValue) {
 | |
|     const matcherName = 'toHaveProperty';
 | |
|     const expectedArgument = 'path';
 | |
|     const hasValue = arguments.length === 3;
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise,
 | |
|       secondArgument: hasValue ? 'value' : ''
 | |
|     };
 | |
| 
 | |
|     if (received === null || received === undefined) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             expectedArgument,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must not be null nor undefined`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const expectedPathType = (0, _jestGetType.default)(expectedPath);
 | |
| 
 | |
|     if (expectedPathType !== 'string' && expectedPathType !== 'array') {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             expectedArgument,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 | |
|             'expected'
 | |
|           )} path must be a string or array`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Expected',
 | |
|             expectedPath,
 | |
|             _jestMatcherUtils.printExpected
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const expectedPathLength =
 | |
|       typeof expectedPath === 'string'
 | |
|         ? expectedPath.split('.').length
 | |
|         : expectedPath.length;
 | |
| 
 | |
|     if (expectedPathType === 'array' && expectedPathLength === 0) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             expectedArgument,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 | |
|             'expected'
 | |
|           )} path must not be an empty array`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Expected',
 | |
|             expectedPath,
 | |
|             _jestMatcherUtils.printExpected
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const result = (0, _utils.getPath)(received, expectedPath);
 | |
|     const lastTraversedObject = result.lastTraversedObject,
 | |
|       hasEndProp = result.hasEndProp;
 | |
|     const receivedPath = result.traversedPath;
 | |
|     const hasCompletePath = receivedPath.length === expectedPathLength;
 | |
|     const receivedValue = hasCompletePath ? result.value : lastTraversedObject;
 | |
|     const pass = hasValue
 | |
|       ? (0, _jasmineUtils.equals)(result.value, expectedValue, [
 | |
|           _utils.iterableEquality
 | |
|         ])
 | |
|       : Boolean(hasEndProp); // theoretically undefined if empty path
 | |
|     // Remove type cast if we rewrite getPath as iterative algorithm.
 | |
|     // Delete this unique report if future breaking change
 | |
|     // removes the edge case that expected value undefined
 | |
|     // also matches absence of a property with the key path.
 | |
| 
 | |
|     if (pass && !hasCompletePath) {
 | |
|       const message = () =>
 | |
|         (0, _jestMatcherUtils.matcherHint)(
 | |
|           matcherName,
 | |
|           undefined,
 | |
|           expectedArgument,
 | |
|           options
 | |
|         ) +
 | |
|         '\n\n' +
 | |
|         `Expected path: ${(0, _jestMatcherUtils.printExpected)(
 | |
|           expectedPath
 | |
|         )}\n` +
 | |
|         `Received path: ${(0, _jestMatcherUtils.printReceived)(
 | |
|           expectedPathType === 'array' || receivedPath.length === 0
 | |
|             ? receivedPath
 | |
|             : receivedPath.join('.')
 | |
|         )}\n\n` +
 | |
|         `Expected value: not ${(0, _jestMatcherUtils.printExpected)(
 | |
|           expectedValue
 | |
|         )}\n` +
 | |
|         `Received value:     ${(0, _jestMatcherUtils.printReceived)(
 | |
|           receivedValue
 | |
|         )}\n\n` +
 | |
|         (0, _jestMatcherUtils.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'
 | |
|         );
 | |
| 
 | |
|       return {
 | |
|         message,
 | |
|         pass
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             expectedArgument,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (hasValue
 | |
|             ? `Expected path: ${(0, _jestMatcherUtils.printExpected)(
 | |
|                 expectedPath
 | |
|               )}\n\n` +
 | |
|               `Expected value: not ${(0, _jestMatcherUtils.printExpected)(
 | |
|                 expectedValue
 | |
|               )}` +
 | |
|               ((0, _jestMatcherUtils.stringify)(expectedValue) !==
 | |
|               (0, _jestMatcherUtils.stringify)(receivedValue)
 | |
|                 ? `\nReceived value:     ${(0, _jestMatcherUtils.printReceived)(
 | |
|                     receivedValue
 | |
|                   )}`
 | |
|                 : '')
 | |
|             : `Expected path: not ${(0, _jestMatcherUtils.printExpected)(
 | |
|                 expectedPath
 | |
|               )}\n\n` +
 | |
|               `Received value: ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 receivedValue
 | |
|               )}`)
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             expectedArgument,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected path: ${(0, _jestMatcherUtils.printExpected)(
 | |
|             expectedPath
 | |
|           )}\n` +
 | |
|           (hasCompletePath
 | |
|             ? '\n' +
 | |
|               (0, _print.printDiffOrStringify)(
 | |
|                 expectedValue,
 | |
|                 receivedValue,
 | |
|                 EXPECTED_VALUE_LABEL,
 | |
|                 RECEIVED_VALUE_LABEL,
 | |
|                 this.expand
 | |
|               )
 | |
|             : `Received path: ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 expectedPathType === 'array' || receivedPath.length === 0
 | |
|                   ? receivedPath
 | |
|                   : receivedPath.join('.')
 | |
|               )}\n\n` +
 | |
|               (hasValue
 | |
|                 ? `Expected value: ${(0, _jestMatcherUtils.printExpected)(
 | |
|                     expectedValue
 | |
|                   )}\n`
 | |
|                 : '') +
 | |
|               `Received value: ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 receivedValue
 | |
|               )}`);
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toMatch(received, expected) {
 | |
|     const matcherName = 'toMatch';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (typeof received !== 'string') {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must be a string`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     if (
 | |
|       !(typeof expected === 'string') &&
 | |
|       !(expected && typeof expected.test === 'function')
 | |
|     ) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 | |
|             'expected'
 | |
|           )} value must be a string or regular expression`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Expected',
 | |
|             expected,
 | |
|             _jestMatcherUtils.printExpected
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const pass =
 | |
|       typeof expected === 'string'
 | |
|         ? received.includes(expected)
 | |
|         : expected.test(received);
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           typeof expected === 'string'
 | |
|             ? (0, _jestMatcherUtils.matcherHint)(
 | |
|                 matcherName,
 | |
|                 undefined,
 | |
|                 undefined,
 | |
|                 options
 | |
|               ) +
 | |
|               '\n\n' +
 | |
|               `Expected substring: not ${(0, _jestMatcherUtils.printExpected)(
 | |
|                 expected
 | |
|               )}\n` +
 | |
|               `Received string:        ${(0,
 | |
|               _print.printReceivedStringContainExpectedSubstring)(
 | |
|                 received,
 | |
|                 received.indexOf(expected),
 | |
|                 expected.length
 | |
|               )}`
 | |
|             : (0, _jestMatcherUtils.matcherHint)(
 | |
|                 matcherName,
 | |
|                 undefined,
 | |
|                 undefined,
 | |
|                 options
 | |
|               ) +
 | |
|               '\n\n' +
 | |
|               `Expected pattern: not ${(0, _jestMatcherUtils.printExpected)(
 | |
|                 expected
 | |
|               )}\n` +
 | |
|               `Received string:      ${(0,
 | |
|               _print.printReceivedStringContainExpectedResult)(
 | |
|                 received,
 | |
|                 typeof expected.exec === 'function'
 | |
|                   ? expected.exec(received)
 | |
|                   : null
 | |
|               )}`
 | |
|       : () => {
 | |
|           const labelExpected = `Expected ${
 | |
|             typeof expected === 'string' ? 'substring' : 'pattern'
 | |
|           }`;
 | |
|           const labelReceived = 'Received string';
 | |
|           const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
 | |
|             labelExpected,
 | |
|             labelReceived
 | |
|           );
 | |
|           return (
 | |
|             (0, _jestMatcherUtils.matcherHint)(
 | |
|               matcherName,
 | |
|               undefined,
 | |
|               undefined,
 | |
|               options
 | |
|             ) +
 | |
|             '\n\n' +
 | |
|             `${printLabel(labelExpected)}${(0, _jestMatcherUtils.printExpected)(
 | |
|               expected
 | |
|             )}\n` +
 | |
|             `${printLabel(labelReceived)}${(0, _jestMatcherUtils.printReceived)(
 | |
|               received
 | |
|             )}`
 | |
|           );
 | |
|         };
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toMatchObject(received, expected) {
 | |
|     const matcherName = 'toMatchObject';
 | |
|     const options = {
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
| 
 | |
|     if (typeof received !== 'object' || received === null) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 | |
|             'received'
 | |
|           )} value must be a non-null object`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Received',
 | |
|             received,
 | |
|             _jestMatcherUtils.printReceived
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     if (typeof expected !== 'object' || expected === null) {
 | |
|       throw new Error(
 | |
|         (0, _jestMatcherUtils.matcherErrorMessage)(
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ),
 | |
|           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 | |
|             'expected'
 | |
|           )} value must be a non-null object`,
 | |
|           (0, _jestMatcherUtils.printWithType)(
 | |
|             'Expected',
 | |
|             expected,
 | |
|             _jestMatcherUtils.printExpected
 | |
|           )
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     const pass = (0, _jasmineUtils.equals)(received, expected, [
 | |
|       _utils.iterableEquality,
 | |
|       _utils.subsetEquality
 | |
|     ]);
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}` +
 | |
|           ((0, _jestMatcherUtils.stringify)(expected) !==
 | |
|           (0, _jestMatcherUtils.stringify)(received)
 | |
|             ? `\nReceived:     ${(0, _jestMatcherUtils.printReceived)(
 | |
|                 received
 | |
|               )}`
 | |
|             : '')
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (0, _print.printDiffOrStringify)(
 | |
|             expected,
 | |
|             (0, _utils.getObjectSubset)(received, expected),
 | |
|             EXPECTED_LABEL,
 | |
|             RECEIVED_LABEL,
 | |
|             this.expand
 | |
|           );
 | |
|     return {
 | |
|       message,
 | |
|       pass
 | |
|     };
 | |
|   },
 | |
| 
 | |
|   toStrictEqual(received, expected) {
 | |
|     const matcherName = 'toStrictEqual';
 | |
|     const options = {
 | |
|       comment: 'deep equality',
 | |
|       isNot: this.isNot,
 | |
|       promise: this.promise
 | |
|     };
 | |
|     const pass = (0, _jasmineUtils.equals)(
 | |
|       received,
 | |
|       expected,
 | |
|       toStrictEqualTesters,
 | |
|       true
 | |
|     );
 | |
|     const message = pass
 | |
|       ? () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
 | |
|           ((0, _jestMatcherUtils.stringify)(expected) !==
 | |
|           (0, _jestMatcherUtils.stringify)(received)
 | |
|             ? `Received:     ${(0, _jestMatcherUtils.printReceived)(received)}`
 | |
|             : '')
 | |
|       : () =>
 | |
|           (0, _jestMatcherUtils.matcherHint)(
 | |
|             matcherName,
 | |
|             undefined,
 | |
|             undefined,
 | |
|             options
 | |
|           ) +
 | |
|           '\n\n' +
 | |
|           (0, _print.printDiffOrStringify)(
 | |
|             expected,
 | |
|             received,
 | |
|             EXPECTED_LABEL,
 | |
|             RECEIVED_LABEL,
 | |
|             this.expand
 | |
|           ); // Passing the actual and expected objects so that a custom reporter
 | |
|     // could access them, for example in order to display a custom visual diff,
 | |
|     // or create a different error message
 | |
| 
 | |
|     return {
 | |
|       actual: received,
 | |
|       expected,
 | |
|       message,
 | |
|       name: matcherName,
 | |
|       pass
 | |
|     };
 | |
|   }
 | |
| };
 | |
| var _default = matchers;
 | |
| exports.default = _default;
 |