@Test public void testBoxedFieldInit() throws Exception { KieSession ksession = genSession("test_ExtFieldInit.drl"); FactType test = ksession.getKieBase().getFactType("org.drools.compiler","MyBoxBean"); Object x = test.newInstance(); assertNotNull(x); assertEquals(12,test.get(x,"fieldint")); assertEquals(3.23,test.get(x,"fielddbl")); assertEquals(1.2f,test.get(x,"fieldflt")); short sht = 2; assertEquals(sht,test.get(x,"fieldsht")); byte byt = 1; assertEquals(byt,test.get(x,"fieldbyt")); assertEquals(true,test.get(x,"fieldbln")); assertEquals('x',test.get(x,"fieldchr")); assertEquals(9999L,test.get(x,"fieldlng")); System.out.println(x); }
@Test(timeout=10000) public void testTraitWrapGetAndSet() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; assertEquals( 4, wrapper.size() ); assertEquals( 2, virtualFields.size() ); assertEquals( "john", wrapper.get( "name" ) ); assertEquals( "xyz", assertEquals( "john", impClass.get( imp, "name" ) );
@Test public void testUnknownField() throws InstantiationException, IllegalAccessException { // DROOLS-546 String drl = "package org.test; " + "declare Pet" + " " + "end \n"; KieBuilder kieBuilder = build(drl); assertFalse( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); KieBase kieBase = KieServices.Factory.get().newKieContainer( kieBuilder.getKieModule().getReleaseId() ).getKieBase(); FactType factType = kieBase.getFactType("org.test", "Pet"); Object instance = factType.newInstance(); factType.get(instance, "unknownField"); factType.set(instance, "unknownField", "myValue"); }
@Test public void testDeclare() throws InstantiationException, IllegalAccessException { .getDescr(); assertEquals( 1, pkg.getTypeDeclarations().size() ); assertEquals( 1, pkg.getEnumDeclarations().size() ); assertEquals( "org.beans", kpkg.getName() ); assertEquals( "RHT", stType.get( st, "symbol" ) );
protected void checkFirstDataFieldOfTypeStatus(FactType type, boolean valid, boolean missing, String ctx, Object... target) { Class<?> klass = type.getFactClass(); Iterator iter = getKSession().getObjects(new ClassObjectFilter(klass)).iterator(); assertTrue(iter.hasNext()); Object obj = iter.next(); if (ctx == null) { while (type.get(obj, "context") != null && iter.hasNext()) { obj = iter.next(); } } else { while ((!ctx.equals(type.get(obj, "context"))) && iter.hasNext()) { obj = iter.next(); } } Object tgt = type.get(obj, "value"); if (tgt instanceof Double) { assert (target[0] instanceof Double); assertEquals((Double) target[0], (Double) tgt, 1e-6); } else { assertEquals(target[0], tgt); } assertEquals(valid, type.get(obj, "valid")); assertEquals(missing, type.get(obj, "missing")); }
@Test public void testExecutionNodeLookup() throws Exception { String str = ""; org.kie.api.definition.type.FactType fT = ksession.getKieBase().getFactType("org.drools.camel.testdomain","Cheese1"); int price = (Integer)fT.get(result.getValue( "outStilton" ), "price"); assertEquals( 30, price ); int price2 = (Integer)fT2.get(result2.getValue( "outStilton" ), "price"); assertEquals( 35, price2 );
@Test public void testExtendsLegacy() throws Exception { KieSession ksession = genSession("test_ExtLegacy.drl",0); FactType leg = ksession.getKieBase().getFactType("org.drools.compiler","BetterLegacy"); assertNotNull(leg); Object b = leg.newInstance(); assertEquals(3.3,leg.get(b,"doubleField")); assertNull(leg.get(b,"objField")); assertEquals(245,leg.get(b,"intField")); assertEquals("XX",leg.get(b,"strField")); assertEquals(true,leg.get(b,"prop")); assertEquals("Hello",leg.get(b,"oneMoreField")); System.out.println(b); }
@Test @Ignore("declared types not found") public void testExecutionNodeLookup() throws Exception { org.kie.api.definition.type.FactType fT = ksession.getKieBase().getFactType("org.kie.camel.testdomain", "Cheese1"); int price = (Integer)fT.get(result.getValue("outStilton"), "price"); assertEquals(30, price); ExecutionResults result2 = template.requestBody("direct:unmarshal", outXml2, ExecutionResults.class); org.kie.api.definition.type.FactType fT2 = ksession2.getKieBase().getFactType("org.kie.camel.testdomain", "Cheese2"); int price2 = (Integer)fT2.get(result2.getValue("outStilton"), "price"); assertEquals(35, price2);
protected void checkFirstDataFieldOfTypeStatus(FactType type, boolean valid, boolean missing, String ctx, Object... target) { Class<?> klass = type.getFactClass(); Iterator iter = getKSession().getObjects( new ClassObjectFilter( klass ) ).iterator(); assertTrue( iter.hasNext() ); Object obj = iter.next(); if (ctx == null) { while ( type.get( obj, "context" ) != null && iter.hasNext() ) obj = iter.next(); } else { while ( ( ! ctx.equals( type.get( obj, "context" ) ) ) && iter.hasNext() ) obj = iter.next(); } Object tgt = type.get( obj, "value" ); if ( tgt instanceof Double ) { assert( target[0] instanceof Double ); assertEquals( (Double) target[0], (Double) tgt, 1e-6 ); } else { assertEquals( target[0], tgt ); } assertEquals( valid, type.get( obj, "valid" ) ); assertEquals( missing, type.get( obj, "missing" ) ); }
@Test public void testFieldInit() throws Exception { KieSession ksession = genSession("test_ExtFieldInit.drl"); FactType test = ksession.getKieBase().getFactType("org.drools.compiler", "MyBean3"); Object x = test.newInstance(); assertNotNull(x); assertEquals(12,test.get(x,"fieldint")); assertEquals("xyz",test.get(x,"fieldstr")); assertEquals(3.23,test.get(x,"fielddbl")); assertEquals(0,test.get(x,"field0")); assertEquals(0.0f,test.get(x,"field1")); assertEquals(1.2f,test.get(x,"fieldflt")); short sht = 2; assertEquals(sht,test.get(x,"fieldsht")); assertEquals(0,test.get(x,"field2")); byte byt = 1; assertEquals(byt,test.get(x,"fieldbyt")); assertEquals(true,test.get(x,"fieldbln")); assertEquals('x',test.get(x,"fieldchr")); assertEquals(9999L,test.get(x,"fieldlng")); System.out.println(x); }
assertEquals("foobar",test.get(x,"f0")); assertEquals(-32,test.get(x,"fieldint")); assertEquals(4.0,test.get(x,"fielddbl")); assertEquals(0.5f,test.get(x,"fieldflt")); short sht = 6; assertEquals(sht,test.get(x,"fieldsht")); byte byt = 2; assertEquals(byt,test.get(x,"fieldbyt")); assertEquals(true,test.get(x,"fieldbln")); assertEquals('x',test.get(x,"fieldchr")); assertEquals(9999L,test.get(x,"fieldlng")); FactType test2 = ksession.getKieBase().getFactType("org.drools.compiler","MySimpleExpressionBean"); assertEquals("foobar",test2.get(x,"f0")); assertEquals(-32,test2.get(x,"fieldint")); assertEquals(4.0,test2.get(x,"fielddbl")); assertEquals(0.5f,test2.get(x,"fieldflt")); sht = 6; assertEquals(sht,test2.get(x,"fieldsht")); byt = 2; assertEquals(byt,test2.get(x,"fieldbyt")); assertEquals(true,test2.get(x,"fieldbln")); assertEquals('x',test2.get(x,"fieldchr")); assertEquals(9999L,test2.get(x,"fieldlng"));
@Test public void testAbductiveLogicWithSelectiveConstructorArgs() { String droolsSource = session.setGlobal( "list", list ); session.fireAllRules(); FactType type = session.getKieBase().getFactType( "org.drools.abductive.test", "Foo" ); for ( Object o : session.getObjects() ) { if ( type.getFactClass().isInstance( o ) ) { assertEquals( "id_0", type.get( o, "id" ) ); assertEquals( "name_test", type.get( o, "name" ) ); assertEquals( 0.0, type.get( o, "value" ) );
@Test public void testDataStructs() { String drl = "package org.drools.test; \n" + knowledgeSession.fireAllRules(); FactType X = knowledgeBase.getFactType( "org.drools.test", "X" ); switch ( (Integer) X.get( o, "id" ) ) { case 1 : assertEquals( "a", X.get( o, "hardString" ) ); assertEquals( 12, X.get( o, "hardInt" ) ); assertEquals( -11.2, X.get( o, "hardDouble" ) ); assertEquals( 8.42f, X.get( o, "hardFloat" ) ); break; case 2 : assertEquals( "b", X.get( o, "hardString" ) ); assertEquals( -1, X.get( o, "hardInt" ) ); assertEquals( 44.0, X.get( o, "hardDouble" ) ); assertEquals( 16.5f, X.get( o, "hardFloat" ) ); break; default:
@Test public void testRedefineDefaults() throws Exception { //Test Base Fact Type KieSession ksession = genSession("test_Extends.drl"); FactType person = ksession.getKieBase().getFactType("defaultpkg","Person"); FactType student = ksession.getKieBase().getFactType("defaultpkg","Student"); Object p = person.newInstance(); Object s = student.newInstance(); assertNotNull(p); assertNotNull(s); assertEquals( 99, person.get(p,"age") ); assertEquals( 18, person.get(s,"age") ); ksession.dispose(); }
@Test public void testGeneratedBeans1() throws Exception { final KieBase kbase = loadKnowledgeBase("test_GeneratedBeans.drl"); final FactType cheeseFact = kbase.getFactType("org.drools.generatedbeans", "Cheese"); final Object cheese = cheeseFact.newInstance(); cheeseFact.set(cheese, "type", "stilton"); assertEquals("stilton", cheeseFact.get(cheese, "type")); assertEquals(43, personType.get(ps, "age")); assertEquals("stilton", cheeseFact.getField("type").get(cheese)); ksession.fireAllRules(); assertEquals(1, result.size()); assertEquals(5, result.get(0)); final FactType personFact = kbase.getFactType("org.drools.generatedbeans", "Person"); final Object person = personFact.newInstance(); personFact.getField("likes").set(person, cheese); ksession.fireAllRules(); assertEquals(2, result.size()); assertEquals(person, result.get(1));
@Test public void testAbducedReturnBinding() { String droolsSource = session.insert( 11 ); session.fireAllRules(); FactType foo = session.getKieBase().getFactType( "org.drools.abductive.test", "Foo" ); for ( Object k : map.keySet() ) { Object val = map.get( k ); assertSame( foo.getFactClass(), val.getClass() ); assertEquals( k, foo.get( val, "id" ) );
@Test public void testExtendsAcrossFiles() throws Exception { KieSession ksession = new KieHelper() .addResource( ResourceFactory.newClassPathResource( "test_Ext1.drl", getClass() ), ResourceType.DRL ) .addResource( ResourceFactory.newClassPathResource( "test_Ext2.drl", getClass() ), ResourceType.DRL ) .addResource( ResourceFactory.newClassPathResource( "test_Ext3.drl", getClass() ), ResourceType.DRL ) .addResource( ResourceFactory.newClassPathResource( "test_Ext4.drl", getClass() ), ResourceType.DRL ) .build().newKieSession(); FactType person = ksession.getKieBase().getFactType("org.drools.compiler.ext.test","Person"); assertNotNull(person); FactType student = ksession.getKieBase().getFactType("org.drools.compiler.ext.test","Student"); assertNotNull(student); FactType worker = ksession.getKieBase().getFactType("org.drools.compiler.anothertest","Worker"); assertNotNull(worker); FactType ltss = ksession.getKieBase().getFactType("defaultpkg","SubLTStudent"); assertNotNull(ltss); Constructor ctor = worker.getFactClass().getConstructor(String.class,int.class,String.class, double.class, int.class); assertNotNull(ctor); Object w = ctor.newInstance("Adam",20,"Carpenter",150.0,40); System.out.println(w); assertEquals("Adam",worker.get(w,"name")); ksession.fireAllRules(); }
@Test public void testWatchNothing() throws Exception { String rule = "package org.drools.compiler.integrationtests\n" + KieSession ksession = kbase.newKieSession(); FactType factTypeA = kbase.getFactType( "org.drools.compiler.integrationtests", "A" ); Object factA = factTypeA.newInstance(); factTypeA.set( factA, "s", "y" ); ksession.insert(factA); FactType factTypeB = kbase.getFactType( "org.drools.compiler.integrationtests", "B" ); Object factB = factTypeB.newInstance(); factTypeB.set( factB, "on", false ); ksession.insert(factB); int rules = ksession.fireAllRules(); assertEquals(2, rules); assertEquals(true, factTypeB.get(factB, "on")); assertEquals("y", factTypeB.get(factB, "s")); ksession.dispose();