: () => { const diffString = valuePassed && hasEndProp ? diff(value, result.value, {expand: this.expand}) : ''; return ( matcherHint('.toHaveProperty', 'object', 'path', { secondArgument, } as MatcherHintOptions) + '\n\n' + `Expected the object:\n` + ` ${printReceived(object)}\n` + `To have a nested property:\n` + ` ${printExpected(keyPath)}\n` + (valuePassed ? `With a value of:\n ${printExpected(value)}\n` : '') + (hasEndProp ? `Received:\n` + ` ${printReceived(result.value)}` + (diffString ? `\n\nDifference:\n\n${diffString}` : '') : traversedPath ? `Received:\n ${RECEIVED_COLOR( 'object', )}.${traversedPath}: ${printReceived(lastTraversedObject)}` : '') ); };
const message = () => { const labelExpected = 'Expected length'; const labelReceivedLength = 'Received length'; const labelReceivedValue = `Received ${getType(received)}`; const printLabel = getLabelPrinter( labelExpected, labelReceivedLength, labelReceivedValue, ); return ( matcherHint(matcherName, undefined, undefined, options) + '\n\n' + `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected( expected, )}\n` + (isNot ? '' : `${printLabel(labelReceivedLength)}${printReceived( received.length, )}\n`) + `${printLabel(labelReceivedValue)}${isNot ? ' ' : ''}${printReceived( received, )}` ); };
: () => matcherHint(matcherName, undefined, undefined, options) + '\n\n' + `Expected: ${printExpected(expected)}\n` + `Received: ${printReceived(received)}\n` + '\n' + `Expected precision: ${printExpected(precision)}\n` + `Expected difference: < ${printExpected(expectedDiff)}\n` + `Received difference: ${printReceived(receivedDiff)}`;
? () => matcherHint('toBeCloseTo', undefined, undefined, options) + '\n\n' + `Expected: not ${printExpected(expected)}\n` + (receivedDiff === 0 ? '' : `Received: ${printReceived(received)}\n` + '\n' + `Expected precision: ${printExpected(precision)}\n` + `Expected difference: not < ${printExpected(expectedDiff)}\n` + `Received difference: ${printReceived(receivedDiff)}`)
? () => matcherHint(matcherName, undefined, expectedArgument, options) + '\n\n' + (hasValue ? `Expected path: ${printExpected(expectedPath)}\n\n` + `Expected value: not ${printExpected(expectedValue)}` + (stringify(expectedValue) !== stringify(receivedValue) ? `\nReceived value: ${printReceived(receivedValue)}` : '') : `Expected path: not ${printExpected(expectedPath)}\n\n` + `Received value: ${printReceived(receivedValue)}`)
const formatReceived = ( label: string, thrown: Thrown | null, key: string, expected?: string | RegExp, ) => { if (thrown === null) { return ''; } if (key === 'message') { const message = thrown.message; if (typeof expected === 'string') { const index = message.indexOf(expected); if (index !== -1) { return ( label + printReceivedStringContainExpectedSubstring( message, index, expected.length, ) + '\n' ); } } else if (expected instanceof RegExp) { return ( label + printReceivedStringContainExpectedResult( message, typeof expected.exec === 'function' ? expected.exec(message) : null, ) + '\n' ); } return label + printReceived(message) + '\n'; } if (key === 'name') { return thrown.isError ? label + printReceived(thrown.value.name) + '\n' : ''; } if (key === 'value') { return thrown.isError ? '' : label + printReceived(thrown.value) + '\n'; } return ''; };
const getPrintedReturnValues = (calls: Array<any>, limit: number): string => { const result = []; for (let i = 0; i < calls.length && i < limit; i += 1) { result.push(printReceived(calls[i])); } if (calls.length > limit) { result.push(`...and ${printReceived(calls.length - limit)} more`); } return result.join('\n\n '); };
: () => matcherHint(matcherName, undefined, undefined, options) + '\n\n' + printExpectedConstructorName('Expected constructor', expected) + (isPrimitive(received) || Object.getPrototypeOf(received) === null ? `\nReceived value has no prototype\nReceived value: ${printReceived( received, )}` : typeof received.constructor !== 'function' ? `\nReceived value: ${printReceived(received)}` : printReceivedConstructorName( 'Received constructor', received.constructor, ));
const message = () => matcherHint(matcherName, undefined, expectedArgument, options) + '\n\n' + `Expected path: ${printExpected(expectedPath)}\n` + `Received path: ${printReceived( expectedPathType === 'array' || receivedPath.length === 0 ? receivedPath : receivedPath.join('.'), )}\n\n` + `Expected value: not ${printExpected(expectedValue)}\n` + `Received value: ${printReceived(receivedValue)}\n\n` + 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', );
? () => matcherHint('.toEqual', undefined, undefined, { isNot: this.isNot, }) + '\n\n' + `Expected: ${printExpected(expected)}\n` + `Received: ${printReceived(received)}`