use of org.drools.workbench.models.testscenarios.shared.VerifyRuleFired in project drools-wb by kiegroup.
the class TestScenarioIndexVisitor method visit.
private void visit(final Fixture fixture) {
if (fixture instanceof FixtureList) {
for (Fixture child : ((FixtureList) fixture)) {
visit(child);
}
} else if (fixture instanceof FixturesMap) {
for (Fixture child : ((FixturesMap) fixture).values()) {
visit(child);
}
} else if (fixture instanceof FactData) {
final FactData factData = (FactData) fixture;
final String typeName = factData.getType();
final String fullyQualifiedClassName = getFullyQualifiedClassName(typeName);
ResourceReference resRef = addResourceReference(fullyQualifiedClassName, ResourceType.JAVA);
factDataToFullyQualifiedClassNameMap.put(factData.getName(), fullyQualifiedClassName);
for (Field field : factData.getFieldData()) {
final String fieldName = field.getName();
final String fieldFullyQualifiedClassName = getFieldFullyQualifiedClassName(fullyQualifiedClassName, fieldName);
resRef.addPartReference(fieldName, PartType.FIELD);
addResourceReference(fieldFullyQualifiedClassName, ResourceType.JAVA);
}
} else if (fixture instanceof VerifyFact) {
final VerifyFact verifyFact = (VerifyFact) fixture;
final String typeName = verifyFact.getName();
// If VerifyFact is not anonymous lookup FQCN from previous FactData elements
String fullyQualifiedClassName = null;
if (!verifyFact.anonymous) {
fullyQualifiedClassName = factDataToFullyQualifiedClassNameMap.get(verifyFact.getName());
} else {
fullyQualifiedClassName = getFullyQualifiedClassName(typeName);
}
ResourceReference resRef = null;
if (fullyQualifiedClassName != null) {
resRef = addResourceReference(fullyQualifiedClassName, ResourceType.JAVA);
for (VerifyField field : verifyFact.getFieldValues()) {
final String fieldName = field.getFieldName();
final String fieldFullyQualifiedClassName = getFieldFullyQualifiedClassName(fullyQualifiedClassName, fieldName);
resRef.addPartReference(fieldName, PartType.FIELD);
addResourceReference(fieldFullyQualifiedClassName, ResourceType.JAVA);
}
}
} else if (fixture instanceof VerifyRuleFired) {
final VerifyRuleFired verifyRuleFired = (VerifyRuleFired) fixture;
addResourceReference(verifyRuleFired.getRuleName(), ResourceType.RULE);
}
}
use of org.drools.workbench.models.testscenarios.shared.VerifyRuleFired in project drools-wb by kiegroup.
the class TestScenarioFactory method makeTestScenarioWithVerifyRuleFired.
// See https://bugzilla.redhat.com/show_bug.cgi?id=1179158
public static Scenario makeTestScenarioWithVerifyRuleFired(final String packageName, final Collection<Import> imports, final String name) {
final Scenario model = new Scenario();
model.getImports().getImports().addAll(imports);
model.setPackageName(packageName);
model.setName(name);
model.getFixtures().add(new VerifyRuleFired("test", 1, true));
return model;
}
use of org.drools.workbench.models.testscenarios.shared.VerifyRuleFired in project drools-wb by kiegroup.
the class VerifyRulesFiredWidget method render.
private FlexTable render(final FixtureList rfl, final Scenario sc) {
FlexTable data = new FlexTable();
for (int i = 0; i < rfl.size(); i++) {
final VerifyRuleFired v = (VerifyRuleFired) rfl.get(i);
if (showResults && v.getSuccessResult() != null) {
if (!v.getSuccessResult().booleanValue()) {
data.setWidget(i, 0, new Image(CommonImages.INSTANCE.warning()));
data.setWidget(i, 4, new HTML(TestScenarioConstants.INSTANCE.ActualResult(v.getActualResult().toString())));
data.getCellFormatter().addStyleName(i, 4, // NON-NLS
"testErrorValue");
} else {
data.setWidget(i, 0, new Image(TestScenarioImages.INSTANCE.testPassed()));
}
}
data.setWidget(i, 1, new SmallLabel(v.getRuleName() + ":"));
data.getFlexCellFormatter().setAlignment(i, 1, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE);
final ListBox b = new ListBox();
b.addItem(TestScenarioConstants.INSTANCE.firedAtLeastOnce(), "y");
b.addItem(TestScenarioConstants.INSTANCE.didNotFire(), "n");
b.addItem(TestScenarioConstants.INSTANCE.firedThisManyTimes(), "e");
final TextBox num = new TextBox();
((InputElement) num.getElement().cast()).setSize(5);
if (v.getExpectedFire() != null) {
b.setSelectedIndex((v.getExpectedFire().booleanValue()) ? 0 : 1);
num.setVisible(false);
} else {
b.setSelectedIndex(2);
String xc = (v.getExpectedCount() != null) ? "" + v.getExpectedCount().intValue() : "0";
num.setText(xc);
}
b.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
String s = b.getValue(b.getSelectedIndex());
if (s.equals("y") || s.equals("n")) {
num.setVisible(false);
v.setExpectedFire((s.equals("y")) ? Boolean.TRUE : Boolean.FALSE);
v.setExpectedCount(null);
} else {
num.setVisible(true);
v.setExpectedFire(null);
num.setText("1");
v.setExpectedCount(Integer.valueOf(1));
}
}
});
b.addItem(TestScenarioConstants.INSTANCE.ChooseDotDotDot());
num.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
v.setExpectedCount(Integer.valueOf(num.getText()));
}
});
HorizontalPanel h = new HorizontalPanel();
h.add(b);
h.add(num);
data.setWidget(i, 2, h);
Button del = new Button();
del.setIcon(IconType.TRASH);
del.setTitle(TestScenarioConstants.INSTANCE.RemoveThisRuleExpectation());
del.addClickHandler(clickEvent -> {
if (Window.confirm(TestScenarioConstants.INSTANCE.AreYouSureYouWantToRemoveThisRuleExpectation())) {
rfl.remove(v);
sc.removeFixture(v);
outer.setWidget(1, 0, render(rfl, sc));
}
});
data.setWidget(i, 3, del);
// we only want numbers here...
num.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (Character.isLetter(event.getCharCode())) {
((TextBox) event.getSource()).cancelKey();
}
}
});
}
ScenarioUtils.addBottomAndRightPaddingToTableCells(data);
return data;
}
use of org.drools.workbench.models.testscenarios.shared.VerifyRuleFired in project drools by kiegroup.
the class ScenarioRunnerTest method testIntegrationWithFailure.
@Test
public void testIntegrationWithFailure() throws Exception {
Scenario sc = new Scenario();
sc.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Cheese"));
sc.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Person"));
Expectation[] assertions = populateScenarioForFailure(sc);
KieSession ksession = getKieSession("test_rules2.drl");
ScenarioRunner run = new ScenarioRunner(ksession);
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());
}
use of org.drools.workbench.models.testscenarios.shared.VerifyRuleFired in project drools by kiegroup.
the class ScenarioRunnerTest method testIntegrationWithDeclaredTypes.
@Test
public void testIntegrationWithDeclaredTypes() throws Exception {
Scenario scenario = new Scenario();
scenario.getImports().addImport(new Import("foo.bar.Coolness"));
FactData[] facts = new FactData[] { new FactData("Coolness", "c", Arrays.<Field>asList(new FieldData("num", "42"), new FieldData("name", "mic")), false) };
scenario.getFixtures().addAll(Arrays.asList(facts));
ExecutionTrace executionTrace = new ExecutionTrace();
scenario.getRules().add("rule1");
scenario.setInclusive(true);
scenario.getFixtures().add(executionTrace);
Expectation[] assertions = new Expectation[2];
assertions[0] = new VerifyFact("c", ls(new VerifyField("num", "42", "==")));
assertions[1] = new VerifyRuleFired("rule1", 1, null);
scenario.getFixtures().addAll(Arrays.asList(assertions));
KieSession ksession = getKieSession("test_rules3.drl");
ClassLoader cl = ((KnowledgeBaseImpl) ksession.getKieBase()).getRootClassLoader();
HashSet<String> imports = new HashSet<String>();
imports.add("foo.bar.*");
assertNotNull(cl.loadClass("foo.bar.Coolness"));
ClassLoader cl_ = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(cl);
// resolver will need to have generated beans in it - possibly using a composite classloader from the package,
// including whatever CL has the generated beans...
ScenarioRunner run = new ScenarioRunner(ksession);
run.run(scenario);
assertEquals(1, executionTrace.getNumberOfRulesFired().intValue());
assertTrue(scenario.wasSuccessful());
Thread.currentThread().setContextClassLoader(cl_);
}
Aggregations