sclass TestResult { double okPercentage; // 0 to 100 S description; PersistableThrowable e; *() {} *(bool ok) { this(null, ok); } *(S *description, double *okPercentage) {} *(S *description, bool ok) { okPercentage = ok ? 100 : 0; } *(S *description, Throwable e) { this.e = persistableThrowable(e); } bool ok() { ret okPercentage >= 100; } toString { ret ifloor(okPercentage) + "%: " + or2(description, "Some test") + (e != null ? " [" + e + "]" : ""); } }