DummyBooleanBuilderFactory implements BuilderFactoryBinary { @Override public Binary createBinary(ProtocolBuilderBinary builder) { return new Binary() { @Override public DRes<SBool> known(boolean value) { return () -> new DummyBooleanSBool(value); } @Override public DRes<SBool> input(boolean value, int inputParty) { DummyBooleanCloseProtocol c = new DummyBooleanCloseProtocol(inputParty, () -> value); builder.append(c); return c; } @Override public DRes<SBool> randomBit() { DummyBooleanNativeProtocol<SBool> c = new DummyBooleanNativeProtocol<SBool>() { DummyBooleanSBool bit; @Override public EvaluationStatus evaluate(int round, ResourcePool resourcePool, Network network) { bit = new DummyBooleanSBool(rand.nextBoolean()); return EvaluationStatus.IS_DONE; } @Override public SBool out() { return bit; } }; builder.append(c); return c; } @Override public DRes<Boolean> open(DRes<SBool> secretShare) { DummyBooleanOpenProtocol c = new DummyBooleanOpenProtocol(secretShare); builder.append(c); return c; } @Override public DRes<Boolean> open(DRes<SBool> secretShare, int outputParty) { DummyBooleanOpenProtocol c = new DummyBooleanOpenProtocol(secretShare, outputParty); builder.append(c); return c; } @Override public DRes<SBool> and(DRes<SBool> a, DRes<SBool> b) { DummyBooleanAndProtocol c = new DummyBooleanAndProtocol(a, b); builder.append(c); return c; } @Override public DRes<SBool> xor(DRes<SBool> a, DRes<SBool> b) { DummyBooleanXorProtocol c = new DummyBooleanXorProtocol(a, b); builder.append(c); return c; } @Override public DRes<SBool> not(DRes<SBool> a) { DummyBooleanNotProtocol c = new DummyBooleanNotProtocol(a); builder.append(c); return c; } }; } DummyBooleanBuilderFactory(); @Override Binary createBinary(ProtocolBuilderBinary builder);  }
@Test public void createBinary() { ProtocolBuilderBinary builder = mock(ProtocolBuilderBinary.class); DRes<SBool> closed = mock(DRes.class); DummyBooleanSBool closedOut = mock(DummyBooleanSBool.class); when(closed.out()).thenReturn(closedOut); when(closedOut.getValue()).thenReturn(true); when(builder.append(any(DummyBooleanOpenProtocol.class))) .then( invocationOnMock -> { result = invocationOnMock.getArgument(0); return null; }); Binary binary = new DummyBooleanBuilderFactory().createBinary(builder); binary.open(closed, 2); ResourcePool resourcePool = mock(ResourcePool.class); when(resourcePool.getMyId()).thenReturn(2); Assert.assertNotNull(result); Assert.assertNull(result.out()); Assert.assertEquals( result.evaluate(1, resourcePool, mock((Network.class))), EvaluationStatus.IS_DONE); Assert.assertTrue(result.out()); }