package org.dayatang.rule; import org.dayatang.rule.examples.Person; import org.drools.jsr94.rules.RuleServiceProviderImpl; import org.junit.After; import org.junit.Before; import org.junit.Test; import javax.rules.StatefulRuleSession; import java.io.InputStream; import static org.junit.Assert.assertEquals; public class StatefulRuleTemplateTest { private StatefulRuleTemplate instance; private String ruleDrl = "/rule/Gender.drl"; private Person chencao; private Person xishi; private Person yyang; @Before public void setUp() throws Exception { instance = createStatefulRuleTemplate(); chencao = new Person(1L, "chencao", "male"); xishi = new Person(2L, "xishi", "female"); yyang = new Person(3L, "yyang", "male"); } private StatefulRuleTemplate createStatefulRuleTemplate() { InputStream ruleSource = getClass().getResourceAsStream(ruleDrl); StatefulRuleTemplate result = new StatefulRuleTemplate(new RuleServiceProviderImpl()).ruleSource(ruleSource); return result; } @After public void tearDown() throws Exception { } @Test public void testExecute() throws Exception { instance.execute(new StatefulRuleCallback() { @Override public void doInRuleSession(StatefulRuleSession session) throws Exception { session.addObject(chencao); session.addObject(xishi); session.addObject(yyang); session.executeRules(); } }); // Validate assertEquals(60, chencao.getRetireAge()); assertEquals(55, xishi.getRetireAge()); assertEquals(60, yyang.getRetireAge()); } }