use of org.jeasy.rules.api.Facts in project easy-rules by j-easy.
the class FactInjectionTest method whenFactTypeDoesNotMatchParameterType_thenShouldThrowRuntimeException.
@Test(expected = RuntimeException.class)
public void whenFactTypeDoesNotMatchParameterType_thenShouldThrowRuntimeException() throws Exception {
// Given
Facts facts = new Facts();
facts.put("age", "foo");
Rules rules = new Rules(new AgeRule());
RulesEngine rulesEngine = new DefaultRulesEngine();
// When
rulesEngine.fire(rules, facts);
// Then
// expected exception
}
use of org.jeasy.rules.api.Facts in project easy-rules by j-easy.
the class FactInjectionTest method whenADeclaredFactIsMissingInEvaluateMethod_thenTheRuleShouldNotBeExecuted.
@Test
public void whenADeclaredFactIsMissingInEvaluateMethod_thenTheRuleShouldNotBeExecuted() throws Exception {
// Given
Facts facts = new Facts();
AgeRule ageRule = new AgeRule();
Rules rules = new Rules(ageRule);
RulesEngine rulesEngine = new DefaultRulesEngine();
// When
rulesEngine.fire(rules, facts);
// Then
assertThat(ageRule.isExecuted()).isFalse();
}
use of org.jeasy.rules.api.Facts in project easy-rules by j-easy.
the class FactInjectionTest method rulesShouldBeExecutedWhenFactsAreCorrectlyInjected.
@Test
public void rulesShouldBeExecutedWhenFactsAreCorrectlyInjected() throws Exception {
// Given
Facts facts = new Facts();
facts.put("rain", true);
facts.put("age", 18);
WeatherRule weatherRule = new WeatherRule();
AgeRule ageRule = new AgeRule();
Rules rules = new Rules(weatherRule, ageRule);
// When
RulesEngine rulesEngine = new DefaultRulesEngine();
rulesEngine.fire(rules, facts);
// Then
assertThat(ageRule.isExecuted()).isTrue();
assertThat(weatherRule.isExecuted()).isTrue();
}
use of org.jeasy.rules.api.Facts in project easy-rules by j-easy.
the class NullFactAnnotationParameterTest method testNullFact.
@Test
public void testNullFact() {
Rules rules = new Rules();
rules.register(new AnnotatedParametersRule());
Facts facts = new Facts();
facts.put("fact1", new Object());
facts.put("fact2", null);
Map<org.jeasy.rules.api.Rule, Boolean> results = rulesEngine.check(rules, facts);
for (boolean b : results.values()) {
Assert.assertTrue(b);
}
}
use of org.jeasy.rules.api.Facts in project easy-rules by j-easy.
the class NullFactAnnotationParameterTest method testMissingFact.
@Test
public void testMissingFact() {
Rules rules = new Rules();
rules.register(new AnnotatedParametersRule());
Facts facts = new Facts();
facts.put("fact1", new Object());
Map<org.jeasy.rules.api.Rule, Boolean> results = rulesEngine.check(rules, facts);
for (boolean b : results.values()) {
Assert.assertFalse(b);
}
}
Aggregations