UNPKG

alsatian

Version:

TypeScript and JavaScript testing framework for beautiful and readable tests

57 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const spying_1 = require("../spying"); function stringify(data) { if (isItearable(data)) { return stringifyIterable(data); } if (data instanceof Function) { return stringifyFunction(data); } return stringifyObject(data); } exports.stringify = stringify; function isItearable(data) { return data && typeof data[Symbol.iterator] === "function"; } function stringifyFunction(data) { if (data === spying_1.Any) { return "Anything"; } return data.name || "anonymous function"; } function stringifyObject(data) { if (data instanceof spying_1.TypeMatcher) { return data.stringify(); } return JSON.stringify(data, createCircularReplacer(data)) || "undefined"; } function stringifyIterable(data) { if (data instanceof Array) { return stringifyArray(data); } if (data instanceof Map) { return `Map<${data.size}>`; } return stringifyObject(data); } function createCircularReplacer(rootObject) { const cache = []; return (key, value) => circularReplacer(key, value, cache, rootObject); } function circularReplacer(key, value, cache, rootObject) { if (typeof value === "function") { return value.toString(); } if (typeof value === "object" && value !== null) { if (cache.indexOf(value) !== -1) { return; } cache.push(value); } return value; } function stringifyArray(array) { return `[${array.map(stringify).join(", ")}]`; } //# sourceMappingURL=stringify.js.map