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((msg != null ? msg + ": " : "") + "expected: "+ y + ", got: " + x);
} else
print("OK: " + /*sfu*/(x));
ret y;
}
ifclass Scorer
static void assertEqualsVerbose(Scorer scorer, O x, O y) {
if (scorer == null) ret with assertEqualsVerbose(x, y);
if (!eq(x, y)) {
print(/*sfu*/(y) + " != " + /*sfu*/(x));
scorer.add(false);
} else {
print("OK: " + /*sfu*/(x));
scorer.add(true);
}
}
endif