public String marshal(Scenario sc) { if (sc.getFixtures().size() > 1 && sc.getFixtures().get(sc.getFixtures().size() - 1) instanceof ExecutionTrace) { Object f = sc.getFixtures().get(sc.getFixtures().size() - 2); if (f instanceof Expectation) { sc.getFixtures().remove(sc.getFixtures().size() - 1); } } String s = xt.toXML(sc); return s; }
public void run(Scenario scenario) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { MVEL.COMPILER_OPT_ALLOW_NAKED_METH_CALL = true; scenario.setLastRunResult(new Date()); populateGlobals(scenario.getGlobals()); applyFixtures(scenario.getFixtures(), createScenarioSettings(scenario)); }
/** * @return true if a fact name is already in use. */ public boolean isFactNameReserved(String factName) { if ( isFactNameUsedInGlobals( factName ) ) { return true; } else if ( isFactNameUsedInFactDataFixtures( factName ) ) { return true; } else { return false; } }
/** * * @return int[0] = failures, int[1] = total; */ public int[] countFailuresTotal() { int total = 0; int failures = 0; for ( Fixture fixture : fixtures ) { if ( fixture instanceof VerifyRuleFired ) { total++; VerifyRuleFired verifyRuleFired = (VerifyRuleFired) fixture; if ( ruleFailedToFire( verifyRuleFired ) ) { failures++; } } else if ( fixture instanceof VerifyFact ) { VerifyFact verifyFact = (VerifyFact) fixture; for ( VerifyField verifyField : verifyFact.getFieldValues() ) { if ( fieldExpectationFailed( verifyField ) ) { failures++; } total++; } } } return new int[]{failures, total}; }
@Test public void testIntegrationInfiniteLoop() throws Exception { Scenario sc = new Scenario(); FactData[] facts = new FactData[]{new FactData("Cheese", "c1", sc.getGlobals().add(new FactData("Person", "p", new ArrayList(), false)); sc.getFixtures().addAll(Arrays.asList(facts)); sc.getRules().add("rule1"); sc.getRules().add("rule2"); sc.setInclusive(true); sc.getFixtures().add(executionTrace); null); sc.getFixtures().addAll(Arrays.asList(assertions)); run.run(sc); assertEquals(sc.getMaxRuleFirings(), executionTrace.getNumberOfRulesFired().intValue());
public void testIntegrationWithSuccess() throws Exception { Scenario sc = new Scenario(); FactData[] facts = new FactData[]{new FactData("Cheese", "c1", sc.getGlobals().add(new FactData("Person", "p", new ArrayList(), false)); sc.getFixtures().addAll(Arrays.asList(facts)); sc.getRules().add("rule1"); sc.getRules().add("rule2"); sc.setInclusive(true); sc.getFixtures().add(executionTrace); null); sc.getFixtures().addAll(Arrays.asList(assertions)); assertTrue(sc.wasSuccessful()); assertTrue((new Date()).after(sc.getLastRunResult())); assertTrue(executionTrace.getExecutionTimeResult() != null);
@Test public void testToXML() { ScenarioXMLPersistence p = ScenarioXMLPersistence.getInstance(); Scenario sc = new Scenario(); String s = p.marshal(sc); assertNotNull(s); sc = getDemo(); s = p.marshal(sc); assertTrue(s.indexOf("<ruleName>Life unverse and everything</ruleName>") > 0); Scenario sc_ = p.unmarshal(s); assertEquals(sc.getGlobals().size(), sc_.getGlobals().size()); assertEquals(sc.getFixtures().size(), sc_.getFixtures().size()); assertTrue(s.indexOf("org.drools") == -1); //check we have aliased all }
@Test public void testIsFactNameUsed() { Scenario sc = new Scenario(); sc.getGlobals().add( new FactData( "X", "x", null, false ) ); sc.getFixtures().add( new FactData( "Q", "q", null, false ) ); sc.getFixtures().add( new ExecutionTrace() ); assertTrue( sc.isFactNameReserved( "x" ) ); assertTrue( sc.isFactNameReserved( "q" ) ); assertFalse( sc.isFactNameReserved( "w" ) ); sc = new Scenario(); assertFalse( sc.isFactNameReserved( "w" ) ); }
@Test public void testIntegrationWithDeclaredTypes() throws Exception { Scenario scenario = new Scenario(); FactData[] facts = new FactData[]{new FactData("Coolness", "c", scenario.getFixtures().addAll(Arrays.asList(facts)); scenario.getRules().add("rule1"); scenario.setInclusive(true); scenario.getFixtures().add(executionTrace); null); scenario.getFixtures().addAll(Arrays.asList(assertions)); executionTrace.getNumberOfRulesFired().intValue()); assertTrue(scenario.wasSuccessful());
FactData d3 = new FactData("Driver", "d3", ls(new FieldData[]{new FieldData("name", "michael2")}), false); FactData d4 = new FactData("Accident", "a1", ls(new FieldData[]{new FieldData("name", "michael2")}), false); Scenario sc = new Scenario(); sc.getFixtures().add(d1); sc.getFixtures().add(d2); sc.getGlobals().add(d3); sc.getGlobals().add(d4); sc.getRules().add("rule1"); sc.getRules().add("rule2"); sc.getFixtures().add(new ExecutionTrace()); sc.getFixtures().add(vf); vf2.setSuccessResult(new Boolean(false)); vf2.setExplanation("Not so good here."); sc.getFixtures().add(vf1); sc.getFixtures().add(vf2);
@Test public void testRemoveFixture() { Scenario sc = new Scenario(); VerifyRuleFired vf1 = new VerifyRuleFired(); VerifyRuleFired vf2 = new VerifyRuleFired(); VerifyRuleFired vf3 = new VerifyRuleFired(); FactData fd = new FactData(); sc.getFixtures().add( vf1 ); sc.getFixtures().add( vf2 ); sc.getFixtures().add( vf3 ); sc.getGlobals().add( fd ); sc.removeFixture( vf2 ); assertEquals( 2, sc.getFixtures().size() ); assertEquals( vf1, sc.getFixtures().get( 0 ) ); assertEquals( vf3, sc.getFixtures().get( 1 ) ); assertEquals( 1, sc.getGlobals().size() ); sc.removeFixture( fd ); assertEquals( 0, sc.getGlobals().size() ); assertEquals( 2, sc.getFixtures().size() ); }
@Test public void testMapFactTypes() { Scenario sc = new Scenario(); sc.getFixtures().add( new FactData( "X", "q", null, false ) ); sc.getGlobals().add( new FactData( "Q", "x", null, false ) ); Map r = sc.getVariableTypes(); assertEquals( 2, r.size() ); assertEquals( "X", r.get( "q" ) ); assertEquals( "Q", r.get( "x" ) ); }
@Test public void testAllowRemoveFact() { Scenario sc = new Scenario(); new ArrayList(), false ); sc.getFixtures().add( fd1 ); FactData fd2 = new FactData( "Q", "q", new ArrayList(), false ); sc.getFixtures().add( fd2 ); FactData fd3 = new FactData( "Z", "z", new ArrayList(), false ); sc.getFixtures().add( fd3 ); ExecutionTrace ex1 = new ExecutionTrace(); FactData fd4 = new FactData( "I", new ArrayList(), false ); sc.getGlobals().add( fd4 ); sc.getFixtures().add( ex1 ); sc.getFixtures().add( new RetractFact( "z" ) ); sc.getFixtures().add( new FactData( "Z", "z", new ArrayList(), true ) );
@Test public void testVariablesInScope() { Scenario sc = new Scenario(); sc.getGlobals().add( new FactData( "X", "x", new ArrayList(), false ) ); sc.getFixtures().add( new FactData( "Q", "q", new ArrayList(), true ) ); sc.getFixtures().add( new FactData( "Z", "z", new ArrayList(), sc.getFixtures().add( ex1 ); sc.getFixtures().add( new RetractFact( "z" ) ); sc.getFixtures().add( new FactData( "Y", "y", new ArrayList(), sc.getFixtures().add( ex2 ); List l = sc.getFactNamesInScope( ex1, true ); l = sc.getFactNamesInScope( ex1, false ); assertEquals( 2,
sc.getFixtures().addAll(Arrays.asList(facts)); sc.getGlobals().add(new FactData("Person", "p", new ArrayList(), sc.getRules().add("rule1"); sc.getRules().add("rule2"); sc.setInclusive(true); sc.getFixtures().add(executionTrace); null); sc.getFixtures().addAll(Arrays.asList(assertions)); return assertions;
@Test public void testIntegrationWithModify() throws Exception { Scenario sc = new Scenario(); sc.getFixtures().add(new FactData("Cheese", "c1", Arrays.<Field>asList(new FieldData("price", false)); sc.getFixtures().add(new ExecutionTrace()); sc.getFixtures().add(new VerifyFact("c1", ls(new VerifyField("type", "rule1", "==")))); sc.getFixtures().add(new FactData("Cheese", "c1", Arrays.<Field>asList(new FieldData("price", "42")), true)); sc.getFixtures().add(new ExecutionTrace()); sc.getFixtures().add(new VerifyFact("c1", ls(new VerifyField("type", "rule3", assertTrue(sc.wasSuccessful());
@Test public void testNewScenario() { FactData d1 = new FactData("Driver", "d1", ls(new FieldData[]{new FieldData("age", "42"), new FieldData("name", "david")}), false); Scenario sc = new Scenario(); sc.getFixtures().add(d1); sc.getFixtures().add(new ExecutionTrace()); int size = sc.getFixtures().size(); String xml = ScenarioXMLPersistence.getInstance().marshal(sc); Scenario sc_ = ScenarioXMLPersistence.getInstance().unmarshal(xml); assertEquals(size, sc_.getFixtures().size()); sc = new Scenario(); sc.getFixtures().add(new ExecutionTrace()); xml = ScenarioXMLPersistence.getInstance().marshal(sc); sc_ = ScenarioXMLPersistence.getInstance().unmarshal(xml); assertEquals(1, sc_.getFixtures().size()); }
@Test public void testTestingEventListener() throws Exception { Scenario sc = new Scenario(); sc.getRules().add("foo"); sc.getRules().add("bar"); ExecutionTrace ext = new ExecutionTrace(); sc.getFixtures().add(ext); MockWorkingMemory wm = new MockWorkingMemory(); PseudoClockScheduler clock = new PseudoClockScheduler(); long time = new Date().getTime(); clock.setStartupTime(time); clock.setSession(wm); wm.setSessionClock(clock); ScenarioRunner run = new ScenarioRunner( null, getClassLoader(), wm); run.run(sc); assertNotNull(wm.agendaEventListener); assertTrue(wm.agendaEventListener instanceof TestingEventListener); assertEquals(2, sc.getRules().size()); assertTrue(sc.getRules().contains("foo")); assertTrue(sc.getRules().contains("bar")); }
@Test public void testInsertBetween() { Scenario sc = new Scenario(); VerifyRuleFired vf = new VerifyRuleFired(); sc.insertBetween( null, vf ); assertEquals( 1, sc.getFixtures().size() ); assertEquals( vf, sc.getFixtures().get( 0 ) ); sc.getFixtures().add( vf2 ); sc.insertBetween( vf, vf3 ); assertEquals( 3, sc.getFixtures().size() ); assertEquals( vf, sc.getFixtures().get( 0 ) ); assertEquals( vf2, sc.getFixtures().get( 1 ) ); assertEquals( vf3, sc.getFixtures().get( 2 ) ); sc.insertBetween( vf2, vf4 ); assertEquals( 4, sc.getFixtures().size() ); assertEquals( 3, sc.getFixtures().indexOf( vf4 ) );