@Override public DRes<SBool> not(DRes<SBool> in) { return this.delegate.not(in); }
@Override public DRes<SBool> xnor(DRes<SBool> left, boolean right) { if (right) { return left; } else { return builder.binary().not(left); } }
@Override public DRes<SBool> buildComputation(ProtocolBuilderBinary builder) { DRes<SBool> tmp = builder.binary().and(inA, inB); return builder.binary().not(tmp); } }
@Override public DRes<SBool> buildComputation(ProtocolBuilderBinary builder) { DRes<SBool> tmp = builder.binary().xor(inA, inB); return builder.binary().not(tmp); } }
@Override public DRes<SBool> nand(DRes<SBool> left, boolean right) { if (right) { return builder.binary().not(left); } else { return builder.binary().known(true); } }
throw new IllegalArgumentException("NOT input " + in[0] + " was not set"); outWireNot = builder.binary().not(inWireNot); this.wires.put(out[0], outWireNot); } else {
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> list = new ArrayList<>(); list.add(builder.open(builder.not(falseBool))); list.add(builder.open(builder.not(trueBool))); return () -> list; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(true, outs.get(0)); Assert.assertEquals(false, outs.get(1)); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> list = new ArrayList<>(); list.add(builder .open(builder.not(builder.and(builder.xor(falseBool, falseBool), falseBool)))); list.add(builder .open(builder.not(builder.and(builder.xor(falseBool, trueBool), falseBool)))); list.add( builder.open(builder.not(builder.and(builder.xor(trueBool, falseBool), trueBool)))); list.add( builder.open(builder.not(builder.and(builder.xor(trueBool, trueBool), trueBool)))); return () -> list; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(true, outs.get(0)); Assert.assertEquals(true, outs.get(1)); Assert.assertEquals(false, outs.get(2)); Assert.assertEquals(true, outs.get(3)); } } };