static A assertEqualsVerbose(O x, A y) {
assertEqualsVerbose((S) null, x, y);
ret y;
}
// x = expected, y = actual
static A assertEqualsVerbose(S msg, O x, A y) {
if (!eq(x, y)) {
ifdef assertEqualsVerbose_advancedDiff
if (x instanceof S && y instanceof S && (containsNewLine((S) x) || containsNewLine((S) y)))
nlPrintNL(unidiff((S) x, (S) y));
endifdef
fail((nempty(msg) ? msg + ": " : "") + "expected: "+ x + ", got: " + y);
} else
print("OK" + (empty(msg) ? "" : " " + msg) + ": " + /*sfu*/(x));
ret y;
}
ifclass Scorer
static void assertEqualsVerbose(Scorer scorer, S msg default "", O x, O y) {
if (scorer == null) ret with assertEqualsVerbose(x, y);
if (!eq(x, y)) {
print(appendColonIfNempty(msg) + y + " != " + x);
scorer.add(false);
} else {
print("OK: " + appendColonIfNempty(msg) + x);
scorer.add(true);
}
}
endif