Update register/unregister methods to take varargs

Issue #288
pull/292/head
des 5 years ago committed by Mahmoud Ben Hassine
parent 4dab695deb
commit d50bc39fbe
No known key found for this signature in database
GPG Key ID: 2B4156D07E8A1737

@ -65,29 +65,43 @@ public class Rules implements Iterable<Rule> {
* @param rules to register * @param rules to register
*/ */
public Rules(Object... rules) { public Rules(Object... rules) {
for (Object rule : rules) { this.register(rules);
this.register(rule);
}
} }
/** /**
* Register a new rule. * Register a new rule.
* *
* @param rule to register, must not be null * @param rules to register, must not be null
*/ */
public void register(Object rule) { public void register(Object... rules) {
Objects.requireNonNull(rules);
for (Object rule : rules) {
Objects.requireNonNull(rule); Objects.requireNonNull(rule);
rules.add(RuleProxy.asRule(rule)); this.rules.add(RuleProxy.asRule(rule));
}
} }
/** /**
* Unregister a rule. * Unregister a rule.
* *
* @param rule to unregister, must not be null * @param rules to unregister, must not be null
*/ */
public void unregister(Object rule) { public void unregister(Object... rules) {
Objects.requireNonNull(rules);
for (Object rule : rules) {
Objects.requireNonNull(rule); Objects.requireNonNull(rule);
rules.remove(RuleProxy.asRule(rule)); this.rules.remove(RuleProxy.asRule(rule));
}
}
/**
* Unregister a set of rules.
*
* @param rulesSet set to unregister, must not be null
*/
public void unregisterAll(Set<?> rulesSet) {
Objects.requireNonNull(rulesSet);
rulesSet.forEach(this::unregister);
} }
/** /**

@ -129,14 +129,33 @@ public class RulesTest {
assertThat(rules.size()).isEqualTo(0); assertThat(rules.size()).isEqualTo(0);
} }
@Test(expected = NullPointerException.class) @Test
public void whenRegisterNullRule_thenShouldThrowNullPointerException() { public void register_multiple() {
rules.register(null); rules.register(new BasicRule("ruleA"), new BasicRule("ruleB"));
assertThat(rules.size()).isEqualTo(2);
}
@Test
public void unregister_noneLeft() {
rules.register(new BasicRule("ruleA"), new BasicRule("ruleB"));
assertThat(rules.size()).isEqualTo(2);
rules.unregister(new BasicRule("ruleA"), new BasicRule("ruleB"));
assertThat(rules.size()).isEqualTo(0);
}
@Test
public void unregisterAll_oneLeft() {
rules.register(new BasicRule("ruleA"), new BasicRule("ruleB"));
assertThat(rules.size()).isEqualTo(2);
rules.unregister(new BasicRule("ruleA"));
assertThat(rules.size()).isEqualTo(1);
} }
@Test(expected = NullPointerException.class) @Test(expected = NullPointerException.class)
public void whenUnregisterNullRule_thenShouldThrowNullPointerException() { public void whenRegisterNullRule_thenShouldThrowNullPointerException() {
rules.unregister(null); rules.register(null);
} }
@org.jeasy.rules.annotation.Rule @org.jeasy.rules.annotation.Rule
@ -147,5 +166,4 @@ public class RulesTest {
@Action @Action
public void then() { } public void then() { }
} }
} }

Loading…
Cancel
Save