function compare(text, expected, mode) { var expectedOutput = []; for (var i = 0; i < expected.length; ++i) { var sty = expected[i].style; if (sty && sty.indexOf(" ")) sty = sty.split(' ').sort().join(' '); expectedOutput.push({style: sty, text: expected[i].text}); } var observedOutput = highlight(text, mode); var s = ""; var diff = highlightOutputsDifferent(expectedOutput, observedOutput); if (diff != null) { s += '<div class="mt-test mt-fail">'; s += '<pre>' + esc(text) + '</pre>'; s += '<div class="cm-s-default">'; s += 'expected:'; s += prettyPrintOutputTable(expectedOutput, diff); s += 'observed: [<a onclick="this.parentElement.className+=\' mt-state-unhide\'">display states</a>]'; s += prettyPrintOutputTable(observedOutput, diff); s += '</div>'; s += '</div>'; } if (observedOutput.indentFailures) { for (var i = 0; i < observedOutput.indentFailures.length; i++) s += "<div class='mt-test mt-fail'>" + esc(observedOutput.indentFailures[i]) + "</div>"; } if (s) throw new Failure(s); }
var indent = mode.indent(state, line.slice(ws.length)); if (indent != CodeMirror.Pass && indent != ws.length) (st.indentFailures || (st.indentFailures = [])).push( "Indentation of line " + (i + 1) + " is " + indent + " (expected " + ws.length + ")");