private boolean verifyFact(Object factObject, VerifyFact verifyFact, Map<String, Object> populatedData, TypeResolver resolver) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { if ( factObject.getClass().getSimpleName().equals( verifyFact.getName() ) ) { FactFieldValueVerifier fieldVerifier = new FactFieldValueVerifier( populatedData, verifyFact.getName(), factObject, resolver, classLoader ); fieldVerifier.checkFields( verifyFact.getFieldValues() ); if ( verifyFact.wasSuccessful() ) { return true; } } return false; }
@Test public void testVerifyFactsWithExpression() throws Exception { TypeResolver typeResolver = mock(TypeResolver.class); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); Cheese f1 = new Cheese("cheddar", 42); f1.setPrice(42); HashMap<String, Object> populatedData = new HashMap<String, Object>(); populatedData.put("f1", f1); workingMemory.facts.add(f1); FactVerifier factVerifier = new FactVerifier(populatedData, typeResolver, classLoader, workingMemory, new HashMap<String, Object>()); // test all true VerifyFact vf = new VerifyFact(); vf.setName("f1"); vf.getFieldValues().add(new VerifyField("price", "= 40 + 2", "==")); factVerifier.verify(vf); assertTrue(vf.getFieldValues().get(0).getSuccessResult()); }
public void verify(VerifyFact verifyFact) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { for ( VerifyField vf : verifyFact.getFieldValues() ) { vf.setSuccessResult( null ); vf.setExplanation( "Fact of type [" + verifyFact.getName() + "] was not found in the results." ); verifyFact.getName(), getFactObject( verifyFact.getName(), populatedData, globalData ), resolver, classLoader ); fieldVerifier.checkFields( verifyFact.getFieldValues() ); } else { Iterator objects = workingMemory.iterateObjects(); for ( VerifyField verifyField : verifyFact.getFieldValues() ) { if ( verifyField.getSuccessResult() == null ) { verifyField.setSuccessResult( Boolean.FALSE );
VerifyFact vf = new VerifyFact("Cheese", new ArrayList(), true); vf.getFieldValues().add(new VerifyField("price", "42", "==")); vf.getFieldValues().add(new VerifyField("type", "stilton", "==")); assertTrue(vf.wasSuccessful()); vf = new VerifyFact("Person", new ArrayList(), true); vf.getFieldValues().add(new VerifyField("age", "42", "==")); assertFalse(vf.wasSuccessful()); vf = new VerifyFact("Cheese", new ArrayList(), true); vf.getFieldValues().add(new VerifyField("price", "43", "==")); vf.getFieldValues().add(new VerifyField("type", "stilton",
VerifyFact verifyCheddar = new VerifyFact(); verifyCheddar.setName("f1"); verifyCheddar.setFieldValues( asList( new VerifyField( VerifyFact michaelVerifyFact = new VerifyFact(); michaelVerifyFact.setName("f2"); michaelVerifyFact.setFieldValues( asList( new VerifyField( VerifyFact markVerifyFact = new VerifyFact(); markVerifyFact.setName("f2"); markVerifyFact.setFieldValues( asList( new VerifyField( VerifyFact mark2VerifyFact = new VerifyFact(); mark2VerifyFact.setName("f2"); mark2VerifyFact.setFieldValues( asList( new VerifyField( for (VerifyField verifyField : verifyCheddar.getFieldValues()) { assertTrue(verifyField.getSuccessResult()); for (VerifyField verifyField : michaelVerifyFact.getFieldValues()) { assertTrue(verifyField.getSuccessResult());
/** * * @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 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] ); }
assertions[0] = new VerifyFact("testList", ls(new VerifyField("empty", "true", "=="))); assertions[1] = new VerifyFact("testList", ls(new VerifyField("size", "0",
private boolean isFactNameUsedInThisFixture(Fixture fixture, String factName) { if ( fixture instanceof FactData ) { return ((FactData) fixture).getName().equals( factName ); } else if ( fixture instanceof VerifyFact ) { return ((VerifyFact) fixture).getName().equals( factName ); } else if ( fixture instanceof RetractFact ) { return ((RetractFact) fixture).getName().equals( factName ); } else { return false; } }
new MockWorkingMemory()); VerifyFact vf = new VerifyFact(); vf.setName("f1"); VerifyField verifyField = new VerifyField( "cheeseType", "=="); verifyField.setNature(VerifyField.TYPE_ENUM); vf.setFieldValues(ls(verifyField)); scenario.getFixtures().add(vf); for (VerifyField field : vf.getFieldValues()) { assertTrue(field.getSuccessResult());
public void verify(VerifyFact verifyFact) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { for ( VerifyField vf : verifyFact.getFieldValues() ) { vf.setSuccessResult( null ); vf.setExplanation( "Fact of type [" + verifyFact.getName() + "] was not found in the results." ); verifyFact.getName(), getFactObject( verifyFact.getName(), populatedData, globalData ), resolver, classLoader ); fieldVerifier.checkFields( verifyFact.getFieldValues() ); } else { Iterator objects = workingMemory.iterateObjects(); for ( VerifyField verifyField : verifyFact.getFieldValues() ) { if ( verifyField.getSuccessResult() == null ) { verifyField.setSuccessResult( Boolean.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}; }
new ArrayList(), true ) ); sc.getFixtures().add( new VerifyFact( "q", new ArrayList() ) );
private boolean isFactNameUsedInThisFixture(Fixture fixture, String factName) { if ( fixture instanceof FactData ) { return ((FactData) fixture).getName().equals( factName ); } else if ( fixture instanceof VerifyFact ) { return ((VerifyFact) fixture).getName().equals( factName ); } else if ( fixture instanceof RetractFact ) { return ((RetractFact) fixture).getName().equals( factName ); } else { return false; } }
private boolean verifyFact(Object factObject, VerifyFact verifyFact, Map<String, Object> populatedData, TypeResolver resolver) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { if ( factObject.getClass().getSimpleName().equals( verifyFact.getName() ) ) { FactFieldValueVerifier fieldVerifier = new FactFieldValueVerifier( populatedData, verifyFact.getName(), factObject, resolver, classLoader ); fieldVerifier.checkFields( verifyFact.getFieldValues() ); if ( verifyFact.wasSuccessful() ) { return true; } } return false; }
VerifyFact vf = new VerifyFact(); vf.setName("f1"); vf.getFieldValues().add(new VerifyField("type", "cheddar", "==")); vf.getFieldValues().add(new VerifyField("price", "4777", "!=")); for (int i = 0; i < vf.getFieldValues().size(); i++) { assertTrue(vf.getFieldValues().get(i).getSuccessResult()); vf = new VerifyFact(); vf.setName("f1"); vf.getFieldValues().add(new VerifyField("type", "cheddar", "!=")); factVerifier.verify(vf); assertFalse(vf.getFieldValues().get(0).getSuccessResult());
@Test public void testIntegrationWithFailure() throws Exception { Scenario sc = new Scenario(); Expectation[] assertions = populateScenarioForFailure(sc); TypeResolver resolver = new ClassTypeResolver(new HashSet<String>(), Thread.currentThread().getContextClassLoader()); resolver.addImport("org.drools.Cheese"); resolver.addImport("org.drools.Person"); WorkingMemory wm = getWorkingMemory("test_rules2.drl"); ScenarioRunner run = new ScenarioRunner( resolver, getClassLoader(), (InternalWorkingMemory) wm); run.run(sc); assertFalse(sc.wasSuccessful()); VerifyFact vf = (VerifyFact) assertions[1]; assertFalse((vf.getFieldValues().get(0)).getSuccessResult()); assertEquals("XXX", vf.getFieldValues().get(0).getExpected()); assertEquals("rule1", vf.getFieldValues().get(0).getActualResult()); assertNotNull(vf.getFieldValues().get(0).getExplanation()); VerifyRuleFired vr = (VerifyRuleFired) assertions[4]; assertFalse(vr.getSuccessResult()); assertEquals(2, vr.getExpectedCount().intValue()); assertEquals(0, vr.getActualResult().intValue()); }
ExecutionTrace ex1 = new ExecutionTrace(); sc.getFixtures().add( ex1 ); sc.getFixtures().add( new VerifyFact() ); sc.getFixtures().add( new RetractFact() ); sc.getFixtures().add( new FactData( "D", ExecutionTrace ex2 = new ExecutionTrace(); sc.getFixtures().add( ex2 ); sc.getFixtures().add( new VerifyFact() ); sc.getFixtures().add( new FactData( "F", "F",
@Test public void testVerifyFactExplanation() throws Exception { Cheese f1 = new Cheese(); f1.setType(null); TypeResolver typeResolver = mock(TypeResolver.class); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); HashMap<String, Object> populatedData = new HashMap<String, Object>(); populatedData.put("f1", f1); workingMemory.facts.add(f1); FactVerifier factVerifier = new FactVerifier(populatedData, typeResolver, classLoader, workingMemory, new HashMap<String, Object>()); VerifyFact vf = new VerifyFact(); vf.setName("f1"); vf.getFieldValues().add(new VerifyField("type", "boo", "!=")); factVerifier.verify(vf); VerifyField vfl = vf.getFieldValues().get(0); assertEquals("[f1] field [type] was not [boo].", vfl.getExplanation()); }
assertions[0] = new VerifyFact("c1", ls(new VerifyField("type", "cheddar", assertions[1] = new VerifyFact("p", ls(new VerifyField("name", "XXX",