package com.processpuzzle.rule.domain; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.processpuzzle.rule.domain.Rule; import com.processpuzzle.rule.domain.RuleContext; import com.processpuzzle.rule.domain.RuleElement; public class RuleTest { private RuleContext context1 = new RuleContext("SuiteableForUpgrade"); private Rule rule1 = new Rule("SuiteableForUpgrade"); @Before public void setUp() throws Exception { context1.addProposition("passengerIsEconomy", true); context1.addProposition("passengerIsGoldCardHolder", true); context1.addProposition("passengerIsSilverCardHolder", false); context1.addVariable("passengerCarryOnBaggageWeight", 10.0); context1.addVariable("passengerCarryOnBaggageAllowance", 15.0); rule1.addProposition("passengerIsEconomy"); rule1.addProposition("passengerIsGoldCardHolder"); rule1.addProposition("passengerIsSilverCardHolder"); rule1.addOperator("OR"); rule1.addOperator("AND"); rule1.addVariable("passengerCarryOnBaggageAllowance"); rule1.addVariable("passengerCarryOnBaggageWeight"); rule1.addOperator("LESSTHANOREQUALTO"); rule1.addOperator("AND"); } @After public void tearDown() throws Exception { context1 = null; rule1 = null; } @Test public void testRuleEvulation() { RuleElement result = rule1.evaluate(context1); String expected = "Proposition statement = ((passengerCarryOnBaggageWeight <= passengerCarryOnBaggageAllowance) AND ((passengerIsSilverCardHolder OR passengerIsGoldCardHolder) AND passengerIsEconomy)), value = true"; assertEquals( expected, result.toString()); } }