package org.drools; import static org.junit.Assert.*; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderError; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.definition.type.FactType; import org.drools.io.Resource; import org.drools.io.ResourceFactory; import org.drools.runtime.StatefulKnowledgeSession; import org.junit.Ignore; import org.junit.Test; public class EvaluationTests { //@Ignore @Test public void test() throws Exception { Resource resource = ResourceFactory .newClassPathResource("org/drools/fibonacci.drl"); KnowledgeBuilder kbb = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbb.add(resource, ResourceType.DRL); if (kbb.hasErrors()) { for (KnowledgeBuilderError error : kbb.getErrors()) { System.out.println(error.getMessage()); } throw new RuntimeException(); } KnowledgeBase kb = KnowledgeBaseFactory.newKnowledgeBase(); kb.addKnowledgePackages(kbb.getKnowledgePackages()); FactType ft = kb.getFactType("org.drools.evaluation", "Fibonacci"); Object fbn = ft.newInstance(); ft.set(fbn, "value", -1L); ft.set(fbn, "sequence", 50); StatefulKnowledgeSession session = kb.newStatefulKnowledgeSession(); session.insert(fbn); assertEquals(new Long(-1L), ft.get(fbn, "value")); try { session.fireAllRules(); assertEquals(new Long(12586269025L), ft.get(fbn, "value")); } catch (NoClassDefFoundError e) { e.printStackTrace(); fail(); } finally { session.dispose(); } } }