diff --git a/easy-rules-core/src/main/java/org/jeasy/rules/api/Rules.java b/easy-rules-core/src/main/java/org/jeasy/rules/api/Rules.java index 7623793..b7dfd38 100644 --- a/easy-rules-core/src/main/java/org/jeasy/rules/api/Rules.java +++ b/easy-rules-core/src/main/java/org/jeasy/rules/api/Rules.java @@ -65,29 +65,43 @@ public class Rules implements Iterable { * @param rules to register */ public Rules(Object... rules) { - for (Object rule : rules) { - this.register(rule); - } + this.register(rules); } /** * 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) { - Objects.requireNonNull(rule); - rules.add(RuleProxy.asRule(rule)); + public void register(Object... rules) { + Objects.requireNonNull(rules); + for (Object rule : rules) { + Objects.requireNonNull(rule); + this.rules.add(RuleProxy.asRule(rule)); + } } /** * Unregister a rule. * - * @param rule to unregister, must not be null + * @param rules to unregister, must not be null + */ + public void unregister(Object... rules) { + Objects.requireNonNull(rules); + for (Object rule : rules) { + Objects.requireNonNull(rule); + this.rules.remove(RuleProxy.asRule(rule)); + } + } + + /** + * Unregister a set of rules. + * + * @param rulesSet set to unregister, must not be null */ - public void unregister(Object rule) { - Objects.requireNonNull(rule); - rules.remove(RuleProxy.asRule(rule)); + public void unregisterAll(Set rulesSet) { + Objects.requireNonNull(rulesSet); + rulesSet.forEach(this::unregister); } /** diff --git a/easy-rules-core/src/test/java/org/jeasy/rules/api/RulesTest.java b/easy-rules-core/src/test/java/org/jeasy/rules/api/RulesTest.java index 0571c0a..297a1bc 100644 --- a/easy-rules-core/src/test/java/org/jeasy/rules/api/RulesTest.java +++ b/easy-rules-core/src/test/java/org/jeasy/rules/api/RulesTest.java @@ -129,14 +129,33 @@ public class RulesTest { assertThat(rules.size()).isEqualTo(0); } - @Test(expected = NullPointerException.class) - public void whenRegisterNullRule_thenShouldThrowNullPointerException() { - rules.register(null); + @Test + public void register_multiple() { + 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) - public void whenUnregisterNullRule_thenShouldThrowNullPointerException() { - rules.unregister(null); + public void whenRegisterNullRule_thenShouldThrowNullPointerException() { + rules.register(null); } @org.jeasy.rules.annotation.Rule @@ -147,5 +166,4 @@ public class RulesTest { @Action public void then() { } } - }