@Test public void testURIsOnLegacyClasses() { Person p = new Person(); URI uri = MetadataContainer.getIdentifier( p ); assertEquals( URI.create( "urn:" + p.getClass().getPackage().getName() + "/" + p.getClass().getSimpleName() + "/" + System.identityHashCode( p ) ), uri ); }
@Test public void deleteUpdatedFactTest() { FactHandle person = ksession.insert(new Person("George", 18)); ksession.update(person, new Person("John", 21)); QueryResults results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(1L); ksession.delete(person); results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(0L); }
@Test public void deleteFactTest() { ksession.insert(new Person("Petr", 25)); FactHandle george = ksession.insert(new Person("George", 19)); QueryResults results = ksession.getQueryResults("informationAboutPersons"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$countOfPerson")).isEqualTo(2L); ksession.delete(george); results = ksession.getQueryResults("informationAboutPersons"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$countOfPerson")).isEqualTo(1L); }
@Test public void updateTheOnlyFactTest() { final Person person = new Person("George", 18); final FactHandle factPerson = ksession.insert(person); assertThat(ksession.getObjects()).hasSize(1); assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Person.class); Person personToBeVerified = (Person) ksession.getObjects().iterator().next(); verifyPerson(person, personToBeVerified, 18, "George", true); ksession.update(factPerson, new Person("Henry", 21)); verifyFactsPresentInSession(1, Person.class); personToBeVerified = (Person) ksession.getObjects().iterator().next(); verifyPerson(person, personToBeVerified, 21, "Henry", false); }
@Test public void updateWithDifferentClassGetObjectsTest() { final Person person = new Person("George", 18); final FactHandle factPerson = ksession.insert(person); final Person personToBeVerified = verifyFactsPresentInSession(1, Person.class).get(0); assertThat(personToBeVerified).isEqualTo(person); final Cheese cheese = new Cheese("Camembert", 50); ksession.update(factPerson, cheese); verifyFactsPresentInSession(1, Cheese.class); final Cheese cheeseToBeVerified = (Cheese) ksession.getObjects().iterator().next(); verifyCheese(cheeseToBeVerified, 50, "Camembert"); }
@Test public void deleteFactTwiceTest() { FactHandle george = ksession.insert(new Person("George", 19)); QueryResults results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(1L); ksession.delete(george); results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(0L); ksession.delete(george); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(0L); }
@Test public void deleteUpdatedFactDifferentClassTest() { FactHandle fact = ksession.insert(new Person("George", 18)); Assertions.assertThat(ksession.getObjects()).hasSize(1); Assertions.assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Person.class); ksession.update(fact, new Cheese("Cheddar", 50)); Assertions.assertThat(ksession.getObjects()).hasSize(1); Assertions.assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Cheese.class); ksession.delete(fact); Assertions.assertThat(ksession.getObjects()).isEmpty(); }
@Test public void updateFireRulesTest() { final Person george = new Person("George", 17); final Person henry = new Person("Henry", 25); final FactHandle georgeFact = ksession.insert(george); ksession.insert(henry); verifyFactsWithQuery(Person.class, "persons", george, henry); final List<Person> drivers = new ArrayList<>(); ksession.setGlobal("drivers", drivers); assertThat(ksession.fireAllRules()).isEqualTo(1); verifyList(drivers, george, henry); george.setAge(18); ksession.update(georgeFact, george); verifyFactsWithQuery(Person.class, "persons", george, henry); assertThat(ksession.fireAllRules()).isEqualTo(1); verifyList(drivers, null, george, henry); }
@Test(expected = NullPointerException.class) public void updateWithNullTest() { final Person person = new Person("George", 18); final FactHandle factPerson = ksession.insert(person); verifyFactsPresentInSession(1, Person.class); ksession.update(factPerson, null); }
@Test public void testObjectIterator() { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); KieSession ksession = kBase.newKieSession(); ksession.insert( new Person( "bob", 35) ); ksession.insert( new Cheese( "stilton", 35) ); ksession.insert( new Cheese( "brie", 35) ); ksession.insert( new Person( "steve", 55) ); ksession.insert( new Person( "tom", 100) ); int i = 0; for ( FactHandle fh : ksession.getFactHandles()) { if ( i++ > 5 ) { fail( "should not iterate for than 3 times" ); } } i = 0; for ( FactHandle fh : ksession.getFactHandles()) { if ( i++ > 5 ) { fail( "should not iterate for than 3 times" ); } } }
@Test public void updateWithDifferentClassGetQueryResultsTest() { final Person person = new Person("George", 18); final FactHandle fact = ksession.insert(person); verifyFactsWithQuery(Person.class, "persons", person); final Cheese cheese = new Cheese("Camembert", 2); ksession.update(fact, cheese); verifyWithQueryNoPersonsPresentInFacts(); verifyFactsPresentInSession(1, Cheese.class); Cheese cheeseToBeVerified = (Cheese) ksession.getObjects().iterator().next(); verifyCheese(cheeseToBeVerified, 2, "Camembert"); cheeseToBeVerified = verifyFactPresentInSession(fact, Cheese.class); verifyCheese(cheeseToBeVerified, 2, "Camembert"); }