use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.
the class DecisionTableTest method testPullQueryWithFactDeclaration.
@Test
public void testPullQueryWithFactDeclaration() throws IllegalAccessException, InstantiationException {
final Resource decisionTable = ResourceUtil.getDecisionTableResourceFromClasspath("queries.xls", getClass(), DecisionTableInputType.XLS);
final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, decisionTable);
final FactType locationType = kbase.getFactType(TestConstants.PACKAGE_FUNCTIONAL, "Location");
final KieSession ksession = kbase.newKieSession();
final TrackingAgendaEventListener listener = new TrackingAgendaEventListener();
ksession.addEventListener(listener);
final Person peter = new Person("Peter");
peter.setLikes("steak");
final Object steakLocation = locationType.newInstance();
locationType.set(steakLocation, "thing", "steak");
locationType.set(steakLocation, "location", "table");
final Object tableLocation = locationType.newInstance();
locationType.set(tableLocation, "thing", "table");
locationType.set(tableLocation, "location", "office");
ksession.insert(peter);
final FactHandle steakHandle = ksession.insert(steakLocation);
final FactHandle tableHandle = ksession.insert(tableLocation);
ksession.insert("pull");
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isTrue();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
listener.clear();
// when location is changed of what Peter likes, pull query should
// ignore it
final Object steakLocation2 = locationType.newInstance();
locationType.set(steakLocation2, "thing", "steak");
locationType.set(steakLocation2, "location", "desk");
final Object deskLocation = locationType.newInstance();
locationType.set(deskLocation, "thing", "desk");
locationType.set(deskLocation, "location", "office");
ksession.insert(steakLocation2);
ksession.insert(deskLocation);
ksession.delete(steakHandle);
ksession.delete(tableHandle);
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
listener.clear();
final Person paul = new Person("Paul");
paul.setLikes("steak");
ksession.insert(paul);
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isTrue();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
listener.clear();
ksession.dispose();
}
use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.
the class DecisionTableTest method testPushQueryWithFactDeclaration.
@Test
public void testPushQueryWithFactDeclaration() throws IllegalAccessException, InstantiationException {
final Resource decisionTable = ResourceUtil.getDecisionTableResourceFromClasspath("queries.xls", getClass(), DecisionTableInputType.XLS);
final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, decisionTable);
final FactType locationType = kbase.getFactType(TestConstants.PACKAGE_FUNCTIONAL, "Location");
final KieSession ksession = kbase.newKieSession();
final TrackingAgendaEventListener listener = new TrackingAgendaEventListener();
ksession.addEventListener(listener);
final Person peter = new Person("Peter");
peter.setLikes("steak");
final Object steakLocation = locationType.newInstance();
locationType.set(steakLocation, "thing", "steak");
locationType.set(steakLocation, "location", "table");
final Object tableLocation = locationType.newInstance();
locationType.set(tableLocation, "thing", "table");
locationType.set(tableLocation, "location", "office");
ksession.insert(peter);
final FactHandle steakHandle = ksession.insert(steakLocation);
final FactHandle tableHandle = ksession.insert(tableLocation);
ksession.insert("push");
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
listener.clear();
// when location is changed of what Peter likes, push query should fire
// rule
final Object steakLocation2 = locationType.newInstance();
locationType.set(steakLocation2, "thing", "steak");
locationType.set(steakLocation2, "location", "desk");
final Object deskLocation = locationType.newInstance();
locationType.set(deskLocation, "thing", "desk");
locationType.set(deskLocation, "location", "office");
ksession.insert(steakLocation2);
ksession.insert(deskLocation);
ksession.delete(steakHandle);
ksession.delete(tableHandle);
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
listener.clear();
final Person paul = new Person("Paul");
paul.setLikes("steak");
ksession.insert(paul);
ksession.fireAllRules();
Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
listener.clear();
ksession.dispose();
}
use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.
the class GuidedDecisionTableTest method setUp.
@Before
public void setUp() throws Exception {
barcelonaCityCenter = new Address("City Center", 1, "Barcelona");
cottageInMountains = new Address("Mountains", 999, "Small Village");
cottageInDesert = new Address("Sand Street", 1, "Desert Town");
johnFromBarcelona = new Person("John", 18);
peter70Years = new Person("Peter", 70);
mary33Years = new Person("Mary", 33);
johnFromBarcelona.setAddress(barcelonaCityCenter);
elizabeth35Years = new Person("Elizabeth", 35);
william25Years = new Person("William", 25);
}
use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.
the class GuidedDecisionTableTest method testOptimizeAddressesMovePeopleToUnusedAddressOrBrno.
@Test
public void testOptimizeAddressesMovePeopleToUnusedAddressOrBrno() throws Exception {
initKieSession("optimizeAddresses.gdst");
final FactHandle mountainsCottage = kSession.insert(cottageInMountains);
final FactHandle elizabeth = kSession.insert(elizabeth35Years);
final FactHandle william = kSession.insert(william25Years);
final FactHandle john = kSession.insert(johnFromBarcelona);
kSession.fireAllRules();
Assertions.assertThat(kSession.getObject(mountainsCottage)).isNotNull();
Assertions.assertThat(kSession.getObject(elizabeth)).isNotNull();
Assertions.assertThat(kSession.getObject(william)).isNotNull();
Assertions.assertThat(((Person) kSession.getObject(elizabeth)).getAddress()).isEqualTo(cottageInMountains);
Assertions.assertThat(((Person) kSession.getObject(william)).getAddress().getCity()).isEqualTo("Brno");
Assertions.assertThat(kSession.getObject(john)).isNotNull();
kSession.dispose();
}
use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.
the class LiveQueriesBadResultTest method testOfBadParameters.
@Ignore("TODO - check correct exception in this test when DROOLS-2187 is fixed.")
@Test
public void testOfBadParameters() {
ViewChangedEventListener listener = new ViewChangedEventListener() {
@Override
public void rowUpdated(Row row) {
updated.add(row.get("person"));
}
@Override
public void rowInserted(Row row) {
inserted.add(row.get("person"));
}
@Override
public void rowDeleted(Row row) {
deleted.add(row.get("person"));
}
};
final KieBase kieBase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "query.drl");
KieSession ksession = kieBase.newKieSession();
ksession.insert(new Person("Petr", 25));
ksession.openLiveQuery("queryWithParamWithoutType", (Object[]) null, listener);
}
Aggregations