@Test() public void fromDestroyed() throws IllegalArgumentException, IllegalAccessException { stateField.set(session, State.DESTROYED); session.destroy(); assertThat(session.getState(), equalTo(Session.State.DESTROYED)); verifyNoMoreInteractions(sessionContext); }
@Test(dataProvider = "destroyableStates") public void testFromDestroyableStates(State state) throws IllegalArgumentException, IllegalAccessException { stateField.set(session, state); session.destroy(); assertThat(session.getState(), equalTo(Session.State.DESTROYED)); } }
@Test public void fromPassivate() throws SessionException, IllegalArgumentException, IllegalAccessException { stateField.set(session, State.PASSIVATED); String input = "Input"; session.activate(input, Session.EMPTY_SESSION_VARIABLES); assertThat(session.getState(), equalTo(Session.State.ACTIVATED)); verify(sessionContext, times(1)).activate(input, Session.EMPTY_SESSION_VARIABLES); }
@Test() public void fromProcessed() throws IllegalArgumentException, IllegalAccessException { stateField.set(session, State.PROCESSED); session.destroy(); assertThat(session.getState(), equalTo(Session.State.DESTROYED)); verify(sessionContext, times(1)).passivate(); }
@Test public void fromNew() throws SessionException { String input = "Input"; session.activate(input, Session.EMPTY_SESSION_VARIABLES); assertThat(session.getState(), equalTo(Session.State.ACTIVATED)); verify(sessionContext, times(1)).activate(input, Session.EMPTY_SESSION_VARIABLES); }
@Test(dataProvider = "allStates") public void testFromDifferentStates(State state) throws IllegalArgumentException, IllegalAccessException { stateField.set(session, state); session.passivate(); assertThat(session.getState(), equalTo(Session.State.PASSIVATED)); verify(sessionContext, times(1)).passivate(); } }
@Test public void fromActivated() throws Exception { session = new Session<>(Rules.define(RuleA.class, RuleB.class, RuleC.class), new DefaultSessionResultCollector<String>()); String input = "input"; session.activate(input, Session.EMPTY_SESSION_VARIABLES); DefaultSessionResult<String> result = session.call(); assertThat(session.getState(), equalTo(State.PROCESSED)); assertThat(result.getConditionFailures().keys(), empty()); assertThat(result.getEndTags().keySet(), containsInAnyOrder("C")); assertThat(result.getEndTags().get("C"), hasSize(1)); assertThat(((Integer) result.getEndTags().get("C").iterator().next().getValue()), equalTo((input.length() * 2) + 2)); }
@Test public void twoOfThreeRulesApply() throws Exception { session = new Session<>(Rules.define(RuleA.class, RuleE.class, RuleF.class), new DefaultSessionResultCollector<String>()); String input = "input"; session.activate(input, Session.EMPTY_SESSION_VARIABLES); DefaultSessionResult<String> result = session.call(); assertThat(session.getState(), equalTo(State.PROCESSED)); assertThat(result.getConditionFailures().keys(), empty()); assertThat(result.getEndTags().keySet(), hasSize(2)); assertThat(result.getEndTags().keySet(), containsInAnyOrder("A", "E")); }
@Test public void ruleWithConditionFailure() throws Exception { session = new Session<>(Rules.define(RuleA.class, RuleG.class), new DefaultSessionResultCollector<String>()); String input = "input"; session.activate(input, Session.EMPTY_SESSION_VARIABLES); DefaultSessionResult<String> result = session.call(); assertThat(session.getState(), equalTo(State.PROCESSED)); assertThat(result.getConditionFailures().keySet(), containsInAnyOrder("RuleG")); assertThat(result.getEndTags().keySet(), hasSize(1)); assertThat(result.getEndTags().keySet(), containsInAnyOrder("A")); }
@Test public void test() throws Exception { Set<Class<?>> ruleClasses = new HashSet<>(Arrays.asList(RuleA.class, RuleB.class, RuleC.class)); when(config.getRuleClasses()).thenReturn(ruleClasses); when(config.getResultCollector()).thenReturn(resultCollector); Answer<Class<? extends IRuleOutputStorage>> callableAnswer = new Answer<Class<? extends IRuleOutputStorage>>() { @Override public Class<? extends IRuleOutputStorage> answer(InvocationOnMock invocation) throws Throwable { return DefaultRuleOutputStorage.class; } }; doAnswer(callableAnswer).when(config).getStorageClass(); sessionFactory = new SessionFactory<>(config); Session<String, DefaultSessionResult<String>> session = sessionFactory.makeObject(); session.activate("", Collections.<String, Object> emptyMap()); sessionFactory.destroyObject(session); assertThat(session.getState(), equalTo(State.DESTROYED)); } }
@Test public void makeValid() throws Exception { Set<Class<?>> ruleClasses = new HashSet<>(Arrays.asList(RuleA.class, RuleB.class, RuleC.class)); when(config.getRuleClasses()).thenReturn(ruleClasses); when(config.getResultCollector()).thenReturn(resultCollector); Answer<Class<? extends IRuleOutputStorage>> callableAnswer = new Answer<Class<? extends IRuleOutputStorage>>() { @Override public Class<? extends IRuleOutputStorage> answer(InvocationOnMock invocation) throws Throwable { return DefaultRuleOutputStorage.class; } }; doAnswer(callableAnswer).when(config).getStorageClass(); sessionFactory = new SessionFactory<>(config); Session<String, DefaultSessionResult<String>> session = sessionFactory.makeObject(); assertThat(session.getState(), equalTo(State.NEW)); assertThat(session.getSessionContext().getRuleSet(), empty()); session.activate("input", Collections.<String, Object> emptyMap()); assertThat(session.getState(), equalTo(State.ACTIVATED)); assertThat(session.getSessionContext().getRuleSet(), containsInAnyOrder(Rules.define(RuleA.class, RuleB.class, RuleC.class).toArray())); }
@Test public void test() throws Exception { Set<Class<?>> ruleClasses = new HashSet<>(Arrays.asList(RuleA.class, RuleB.class, RuleC.class)); when(config.getRuleClasses()).thenReturn(ruleClasses); when(config.getResultCollector()).thenReturn(resultCollector); Answer<Class<? extends IRuleOutputStorage>> callableAnswer = new Answer<Class<? extends IRuleOutputStorage>>() { @Override public Class<? extends IRuleOutputStorage> answer(InvocationOnMock invocation) throws Throwable { return DefaultRuleOutputStorage.class; } }; doAnswer(callableAnswer).when(config).getStorageClass(); sessionFactory = new SessionFactory<>(config); Session<String, DefaultSessionResult<String>> session = sessionFactory.makeObject(); session.activate("", Collections.<String, Object> emptyMap()); sessionFactory.passivateObject(session); assertThat(session.getState(), equalTo(State.PASSIVATED)); } }