| 112 | * @returns {string} explanation string |
| 113 | */ |
| 114 | const explain = (object) => { |
| 115 | if (object instanceof RegExp) { |
| 116 | object = { message: object }; |
| 117 | } |
| 118 | return Object.keys(object) |
| 119 | .map((key) => { |
| 120 | let value = object[key]; |
| 121 | if (typeof value === "object" && !(value instanceof RegExp)) { |
| 122 | value = JSON.stringify(value); |
| 123 | } |
| 124 | let msg = `${key} = ${value}`; |
| 125 | if (key !== "stack" && key !== "details" && msg.length > 100) { |
| 126 | msg = `${msg.slice(0, 97)}...`; |
| 127 | } |
| 128 | return msg; |
| 129 | }) |
| 130 | .join("; "); |
| 131 | }; |
| 132 | |
| 133 | /** |
| 134 | * @param {EXPECTED_ANY[]} actual actual items |