@@ -0,0 +1,1292 @@
+package tools.devnull.trugger.factory;%0A%0Aimport org.junit.Test;%0Aimport tools.devnull.kodo.TestScenario;%0Aimport tools.devnull.trugger.util.factory.Context;%0Aimport tools.devnull.trugger.util.factory.DefaultContext;%0A%0Aimport java.lang.reflect.Parameter;%0Aimport java.util.function.Function;%0Aimport java.util.function.Predicate;%0A%0Aimport static org.mockito.Matchers.any;%0Aimport static org.mockito.Mockito.mock;%0Aimport static org.mockito.Mockito.when;%0A%0Apublic class DefaultContextTest %7B%0A%0A  @Test%0A  public void testMessages() %7B%0A    Function%3CParameter, Object%3E functionA = mock(Function.class);%0A    Predicate%3CParameter%3E conditionA = mock(Predicate.class);%0A    Object resultA = new Object();%0A    when(functionA.apply(any())).thenReturn(resultA);%0A    when(conditionA.test(any())).thenReturn(false);%0A%0A    Function%3CParameter, Object%3E functionB = mock(Function.class);%0A    Predicate%3CParameter%3E conditionB = mock(Predicate.class);%0A    Object resultB = new Object();%0A    when(functionB.apply(any())).thenReturn(resultB);%0A    when(conditionB.test(any())).thenReturn(true);%0A%0A    TestScenario.given(new DefaultContext())%0A%0A    context.use(functionA).when(conditionA).%0A        use(functionB).when(conditionB);%0A%0A    // don't need an actual parameter since everything here is a mock%0A    context.resolve(null);%0A  %7D%0A%0A%7D%0A

Add tests for default context