private Object getExpectedResult() { Object expectedResult = currentField.getExpected().trim(); if ( currentField.getExpected().startsWith( "=" ) ) { expectedResult = eval( currentField.getExpected().substring( 1 ), this.populatedData ); } else if (currentField.getNature() == VerifyField.TYPE_ENUM) { try { // The string representation of enum value is using a // format like CheeseType.CHEDDAR String classNameOfEnum = currentField.getExpected().substring(0, currentField.getExpected().indexOf(".")); String valueOfEnum = currentField.getExpected().substring(currentField.getExpected() .indexOf(".") + 1); String fullName = resolver.getFullTypeName(classNameOfEnum); expectedResult = eval(fullName + "." + valueOfEnum); } catch (ClassNotFoundException e) { //Do nothing. } } return expectedResult; }
private Object getExpectedResult() { Object expectedResult = currentField.getExpected().trim(); if ( currentField.getExpected().startsWith( "=" ) ) { expectedResult = eval( currentField.getExpected().substring( 1 ), this.populatedData ); } else if (currentField.getNature() == VerifyField.TYPE_ENUM) { try { // The string representation of enum value is using a // format like CheeseType.CHEDDAR String classNameOfEnum = currentField.getExpected().substring(0, currentField.getExpected().indexOf(".")); String valueOfEnum = currentField.getExpected().substring(currentField.getExpected() .indexOf(".") + 1); String fullName = resolver.getFullTypeName(classNameOfEnum); expectedResult = eval(fullName + "." + valueOfEnum); } catch (ClassNotFoundException e) { //Do nothing. } } return expectedResult; }
private String getSuccessfulExplanation() { if (currentField.getOperator().equals("==")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getExpected() + "]."; } else if (currentField.getOperator().equals("!=")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not [" + currentField.getExpected() + "]."; } return ""; }
private String getSuccesfulExplanation() { if ( currentField.getOperator().equals( "==" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getExpected() + "]."; } else if ( currentField.getOperator().equals( "!=" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not [" + currentField.getExpected() + "]."; } return ""; }
private String getSuccesfulExplanation() { if ( currentField.getOperator().equals( "==" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getExpected() + "]."; } else if ( currentField.getOperator().equals( "!=" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not [" + currentField.getExpected() + "]."; } return ""; }
private String getSuccessfulExplanation() { if (currentField.getOperator().equals("==")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getExpected() + "]."; } else if (currentField.getOperator().equals("!=")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not [" + currentField.getExpected() + "]."; } return ""; }
private Object getExpectedResult() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { Object expectedResult = currentField.getExpected().trim(); if (currentField.getExpected().startsWith("=")) { expectedResult = eval(currentField.getExpected().substring(1), this.populatedData); } else if (currentField.getNature() == VerifyField.TYPE_ENUM) { try { // The string representation of enum value is using a // format like CheeseType.CHEDDAR String classNameOfEnum = currentField.getExpected().substring(0, currentField.getExpected().indexOf(".")); String valueOfEnum = currentField.getExpected().substring(currentField.getExpected().indexOf(".") + 1); String fullName = resolver.getFullTypeName(classNameOfEnum); if (fullName != null && !"".equals(fullName)) { valueOfEnum = fullName + "." + valueOfEnum; } Serializable compiled = MVEL.compileExpression(valueOfEnum, pctx); expectedResult = MVEL.executeExpression(compiled); } catch (ClassNotFoundException e) { //Do nothing. } } else if (isFieldDate()) { return DateObjectFactory.createTimeObject(FieldTypeResolver.getFieldType(currentField.getFieldName(), factObject), currentField.getExpected()); } return expectedResult; }
private Object getExpectedResult() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { Object expectedResult = currentField.getExpected().trim(); if (currentField.getExpected().startsWith("=")) { expectedResult = eval(currentField.getExpected().substring(1), this.populatedData); } else if (currentField.getNature() == VerifyField.TYPE_ENUM) { try { // The string representation of enum value is using a // format like CheeseType.CHEDDAR String classNameOfEnum = currentField.getExpected().substring(0, currentField.getExpected().indexOf(".")); String valueOfEnum = currentField.getExpected().substring(currentField.getExpected().indexOf(".") + 1); String fullName = resolver.getFullTypeName(classNameOfEnum); if (fullName != null && !"".equals(fullName)) { valueOfEnum = fullName + "." + valueOfEnum; } Serializable compiled = MVEL.compileExpression(valueOfEnum, pctx); expectedResult = MVEL.executeExpression(compiled); } catch (ClassNotFoundException e) { //Do nothing. } } else if (isFieldDate()) { return DateObjectFactory.createTimeObject(FieldTypeResolver.getFieldType(currentField.getFieldName(), factObject), currentField.getExpected()); } return expectedResult; }
private String getFailingExplanation() { if (currentField.getOperator().equals("==")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getActualResult() + "] expected [" + currentField.getExpected() + "]."; } else { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not expected to be [" + currentField.getActualResult() + "]."; } } }
private String getFailingExplanation() { if (currentField.getOperator().equals("==")) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getActualResult() + "] expected [" + currentField.getExpected() + "]."; } else { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not expected to be [" + currentField.getActualResult() + "]."; } } }
private String getFailingExplanation() { if ( currentField.getOperator().equals( "==" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getActualResult() + "] expected [" + currentField.getExpected() + "]."; } else { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not expected to be [" + currentField.getActualResult() + "]."; } } }
private String getFailingExplanation() { if ( currentField.getOperator().equals( "==" ) ) { return "[" + factName + "] field [" + currentField.getFieldName() + "] was [" + currentField.getActualResult() + "] expected [" + currentField.getExpected() + "]."; } else { return "[" + factName + "] field [" + currentField.getFieldName() + "] was not expected to be [" + currentField.getActualResult() + "]."; } } }
public void checkFields(List<VerifyField> fieldValues) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, InstantiationException { Iterator<VerifyField> fields = fieldValues.iterator(); while (fields.hasNext()) { this.currentField = fields.next(); if (currentField.getExpected() != null) { ResultVerifier resultVerifier = new ResultVerifier(factObject); resultVerifier.setExpected(getExpectedResult()); currentField.setSuccessResult(resultVerifier.isSuccess(currentField)); if (!currentField.getSuccessResult()) { currentField.setActualResult(resultVerifier.getActual(currentField)); currentField.setExplanation(getFailingExplanation()); } else { currentField.setExplanation(getSuccessfulExplanation()); } } } }
public void checkFields(List<VerifyField> fieldValues) { Iterator<VerifyField> fields = fieldValues.iterator(); while ( fields.hasNext() ) { this.currentField = fields.next(); if ( currentField.getExpected() != null ) { ResultVerifier resultVerifier = new ResultVerifier( factObject ); resultVerifier.setExpected( getExpectedResult() ); currentField.setSuccessResult( resultVerifier.isSuccess( currentField ) ); if ( !currentField.getSuccessResult() ) { currentField.setActualResult( resultVerifier.getActual( currentField ) ); currentField.setExplanation( getFailingExplanation() ); } else { currentField.setExplanation( getSuccesfulExplanation() ); } } } }
public void checkFields(List<VerifyField> fieldValues) { Iterator<VerifyField> fields = fieldValues.iterator(); while ( fields.hasNext() ) { this.currentField = fields.next(); if ( currentField.getExpected() != null ) { ResultVerifier resultVerifier = new ResultVerifier( factObject ); resultVerifier.setExpected( getExpectedResult() ); currentField.setSuccessResult( resultVerifier.isSuccess( currentField ) ); if ( !currentField.getSuccessResult() ) { currentField.setActualResult( resultVerifier.getActual( currentField ) ); currentField.setExplanation( getFailingExplanation() ); } else { currentField.setExplanation( getSuccesfulExplanation() ); } } } }
public void checkFields(List<VerifyField> fieldValues) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, InstantiationException { Iterator<VerifyField> fields = fieldValues.iterator(); while (fields.hasNext()) { this.currentField = fields.next(); if (currentField.getExpected() != null) { ResultVerifier resultVerifier = new ResultVerifier(factObject); resultVerifier.setExpected(getExpectedResult()); currentField.setSuccessResult(resultVerifier.isSuccess(currentField)); if (!currentField.getSuccessResult()) { currentField.setActualResult(resultVerifier.getActual(currentField)); currentField.setExplanation(getFailingExplanation()); } else { currentField.setExplanation(getSuccessfulExplanation()); } } } }
@Test public void testVerifyFieldAndActualIsNull() 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 [] expected [boo].", vfl.getExplanation()); assertEquals("boo", vfl.getExpected()); assertEquals("", vfl.getActualResult()); }
@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()); }
assertEquals("mark", markVerifyFact.getFieldValues().get(0).getExpected()); assertEquals("mark", mark2VerifyFact.getFieldValues().get(0).getExpected()); assertEquals("32", mark2VerifyFact.getFieldValues().get(1).getExpected());