import cs2030s.fp.Constant; import cs2030s.fp.Memo; public class Test5 { public static void main(String[] args) { CS2030STest we = new CS2030STest(); Constant t = new Constant<>() { public Boolean init() { return true; } }; Constant f = new Constant<>() { public Boolean init() { String res = ""; for (int i=0; i<100000; i++) { res += i; } return false; } }; Cond cond = new And(new Or(new Bool(t), new Bool(f)), new Not(new Not(new Bool(t)))); we.expect( "cond", cond.toString(), "((? | ?) & !(!(?)))" ); we.expect( "cond.neg()", cond.neg().toString(), "((!(?) & !(?)) | !(?))" ); we.expect( "cond.neg().neg()", cond.neg().neg().toString(), "((? | ?) & ?)" ); we.expect( "cond.eval()", cond.eval(), true ); we.expect( "cond.neg()", cond.neg().toString(), "((!(t) & !(?)) | !(t))" ); we.expect( "cond.neg().neg()", cond.neg().neg().toString(), "((t | ?) & t)" ); } }