@Test public void testPopulateFactWithoutFields() throws Exception { factPopulator.add( new NewFactPopulator( populatedData, getTypeResolver(), getClassLoader(), new FactData("Cheese", "c1", new ArrayList(), false))); factPopulator.populate(); assertTrue(populatedData.containsKey("c1")); assertTrue(populatedData.get("c1") instanceof Cheese); }
@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 testDummyRunNoRules() throws Exception { typeResolver.addImport("org.drools.Cheese"); List<Field> fieldData = new ArrayList<Field>(); fieldData.add(new FieldData("type", "cheddar")); fieldData.add(new FieldData("price", "42")); FactData fact = new FactData("Cheese", "c1", fieldData, false); NewFactPopulator newFactPopulator = new NewFactPopulator( populatedData, typeResolver, Thread.currentThread().getContextClassLoader(), fact); newFactPopulator.populate(workingMemory, new HashMap<String, FactHandle>()); assertTrue(populatedData.containsKey("c1")); assertNotNull(populatedData.get("c1")); assertEquals(populatedData.get("c1"), workingMemory.facts.get(0)); }
@Test public void testAdd() { FactData fd = new FactData("x", "y", new ArrayList(), false ); assertEquals(0, fd.getFieldData().size()); fd.getFieldData().add(new FieldData("x", "y")); assertEquals(1, fd.getFieldData().size()); fd.getFieldData().add(new FieldData("q", "x")); assertEquals(2, fd.getFieldData().size()); } }
@Test public void testWithGlobals() throws Exception { FactData global = new FactData("Cheese", "c", Arrays.<Field>asList(new FieldData("type", "cheddar")), false); TypeResolver resolver = new ClassTypeResolver(new HashSet<String>(), Thread.currentThread().getContextClassLoader()); resolver.addImport("org.drools.Cheese"); MockWorkingMemory wm = new MockWorkingMemory(); Map<String, Object> populatedData = new HashMap<String, Object>(); Map<String, Object> globalData = new HashMap<String, Object>(); GlobalFactPopulator globalFactPopulator = new GlobalFactPopulator(populatedData, resolver, Thread.currentThread().getContextClassLoader(), global, globalData); globalFactPopulator.populate(wm, new HashMap<String, FactHandle>()); assertEquals(1, wm.globals.size()); assertEquals(1, globalData.size()); assertEquals(0, populatedData.size()); }
@Test public void testSQLDateField() throws Exception { factPopulator.add( new NewFactPopulator( populatedData, getTypeResolver(), getClassLoader(), new FactData( "SqlDateWrapper", "c1", Arrays.<Field>asList( new FieldData( "sqlDate", "10-Jul-2008")), false))); factPopulator.populate(); assertTrue(populatedData.containsKey("c1")); SqlDateWrapper sqlDateWrapper = (SqlDateWrapper) populatedData.get("c1"); assertNotNull(sqlDateWrapper.getSqlDate()); }
@Test public void testPopulateFactsWithInterfaces() throws Exception { Scenario sc = new Scenario(); List facts = ls(new FactData("List", "ls", new ArrayList(), false)); List globals = ls(new FactData("List", "ls", new ArrayList(), false)); sc.getFixtures().addAll(facts); sc.getGlobals().addAll(globals); TypeResolver resolver = new ClassTypeResolver(new HashSet<String>(), getClassLoader()); resolver.addImport("java.util.List"); ScenarioRunner runner = new ScenarioRunner( resolver, getClassLoader(), new MockWorkingMemory()); runner.run(sc); }
@Test public void testPopulateEmptyIntegerField() throws Exception { factPopulator.add( new NewFactPopulator( populatedData, getTypeResolver(), getClassLoader(), new FactData("Cheese", "c1", Arrays.<Field>asList( new FieldData( "price", "")), false))); factPopulator.populate(); assertTrue(populatedData.containsKey("c1")); assertTrue(populatedData.get("c1") instanceof Cheese); }
@Test public void testCollectionSums() throws Exception { TypeResolver typeResolver = getTypeResolver(); List<Field> fieldData = new ArrayList<Field>(); CollectionFieldData collectionFieldData = new CollectionFieldData(); collectionFieldData.setName("list"); fieldData.add(collectionFieldData); collectionFieldData.getCollectionFieldList().add(new FieldData("list", "=1+3")); FactData wrapperFactData = new FactData( "MyCollectionWrapper", "wrapper", fieldData, false); factPopulator.add(new NewFactPopulator( populatedData, typeResolver, Thread.currentThread().getContextClassLoader(), wrapperFactData)); factPopulator.populate(); assertTrue(populatedData.containsKey("wrapper")); MyCollectionWrapper wrapper = (MyCollectionWrapper) populatedData.get("wrapper"); assertNotNull(wrapper); assertEquals(1, wrapper.getList().size()); assertNotNull(wrapper.getList().get(0)); assertEquals(4, wrapper.getList().get(0)); }
@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" ) ); }
private Scenario getDemo() { FactData d1 = new FactData("Driver", "d1", ls(new FieldData[]{new FieldData("age", "42"), new FieldData("name", "david")}), false); FactData d2 = new FactData("Driver", "d2", ls(new FieldData[]{new FieldData("name", "michael")}), false); 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);
@Test public void testPopulateEnum() throws Exception { FieldData fieldData = new FieldData( "cheeseType", "CheeseType.CHEDDAR"); fieldData.setNature(FieldData.TYPE_ENUM); FactData factData = new FactData("Cheese", "c1", asList((Field) fieldData), false); factPopulator.add(new NewFactPopulator(populatedData, getTypeResolver(), getClassLoader(), factData)); factPopulator.populate(); assertTrue(populatedData.containsKey("c1")); Cheese cheese = (Cheese) populatedData.get("c1"); assertEquals(CheeseType.CHEDDAR, cheese.getCheeseType()); }
public void testWithGlobalList() throws Exception { Scenario sc = new Scenario(); sc.getGlobals().add(new FactData("List", "testList", new ArrayList(),
@Test public void testPopulatingExistingFact() throws Exception { Cheese cheese = new Cheese(); cheese.setType("whee"); cheese.setPrice(1); Map<String, Object> populatedData = new HashMap<String, Object>(); populatedData.put( "x", cheese); factPopulator.add( new ExistingFactPopulator( populatedData, getTypeResolver(), getClassLoader(), new FactData( "Cheese", "x", Arrays.<Field>asList( new FieldData( "type", null), new FieldData( "price", "42")), false))); factPopulator.populate(); assertEquals("whee", cheese.getType()); assertEquals(42, cheese.getPrice()); }
@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 testCountSuccessFailures() { Scenario sc = new Scenario(); sc.getFixtures().add( new FactData() ); sc.getFixtures().add( new ExecutionTrace() ); VerifyRuleFired vr = new VerifyRuleFired(); vr.setSuccessResult( false ); sc.getFixtures().add( vr ); VerifyField vf = new VerifyField(); vf.setSuccessResult( true ); VerifyField vf2 = new VerifyField(); vf2.setSuccessResult( false ); VerifyFact vfact = new VerifyFact(); vfact.getFieldValues().add( vf ); vfact.getFieldValues().add( vf2 ); sc.getFixtures().add( vfact ); int[] totals = sc.countFailuresTotal(); assertEquals( 2, totals[0] ); assertEquals( 3, totals[1] ); }
@Test public void testPopulateEmptyString() throws Exception { Cheese cheese = new Cheese(); cheese.setType("whee"); cheese.setPrice(1); populatedData.put("x", cheese); assertEquals(1, cheese.getPrice()); //An empty String is a 'value' as opposed to null factPopulator.add( new ExistingFactPopulator( populatedData, getTypeResolver(), getClassLoader(), new FactData( "Cheese", "x", Arrays.<Field>asList( new FieldData( "type", ""), new FieldData( "price", "42")), false))); factPopulator.populate(); assertEquals("", cheese.getType()); assertEquals(42, cheese.getPrice()); }
@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 testPopulateFacts() throws Exception { FactData factData = new FactData( "Person", "p1", Arrays.<Field>asList( new FieldData( "name", "mic"), new FieldData( "age", "=30 + 3")), false); factPopulator.add(new NewFactPopulator(populatedData, getTypeResolver(), getClassLoader(), factData)); factPopulator.populate(); assertTrue(populatedData.containsKey("p1")); Person person = (Person) populatedData.get("p1"); assertEquals("mic", person.getName()); assertEquals(33, person.getAge()); }