//This product is provided under the terms of EPL (Eclipse Public License) //version 1.0. // //The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.core.ruleanalysis; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.HashSet; import java.util.Set; import org.dtangler.core.configuration.Group; import org.dtangler.core.dependencies.Dependable; import org.dtangler.core.dependencies.TestDependable; import org.junit.Before; import org.junit.Test; public class RuleTest { Dependable fooA = new TestDependable("eg.foo.a"); Dependable fooB = new TestDependable("eg.foo.b"); Dependable barA = new TestDependable("eg.bar.a"); Dependable barB = new TestDependable("eg.bar.b"); SingleRuleMember ruleMemberFooA = new SingleRuleMember(fooA .getDisplayName()); SingleRuleMember ruleMemberFooB = new SingleRuleMember(fooB .getDisplayName()); SingleRuleMember ruleMemberBarA = new SingleRuleMember(barA .getDisplayName()); SingleRuleMember ruleMemberBarB = new SingleRuleMember(barB .getDisplayName()); GroupRuleMember groupFoo; GroupRuleMember groupBar; @Before public void setUp() { groupFoo = createGroup("Group Foo", "eg.foo.*"); groupBar = createGroup("Group Bar", "eg.bar.*"); } @Test public void testDependable() { Rule rule = createRule(Rule.Type.cannotDepend, ruleMemberFooA, ruleMemberFooB, ruleMemberBarA); assertTrue(rule.appliesToLeftSide(fooA)); assertFalse(rule.appliesToLeftSide(fooB)); assertFalse(rule.appliesToLeftSide(barA)); assertFalse(rule.appliesToLeftSide(barB)); assertTrue(rule.appliesToRightSide(fooB)); assertTrue(rule.appliesToRightSide(barA)); assertFalse(rule.appliesToRightSide(fooA)); assertFalse(rule.appliesToRightSide(barB)); } @Test public void testGroupInLeftSide() { Rule rule = createRule(Rule.Type.cannotDepend, groupFoo, ruleMemberBarA, ruleMemberBarB); assertTrue(rule.appliesToLeftSide(fooA)); assertTrue(rule.appliesToLeftSide(fooB)); assertFalse(rule.appliesToLeftSide(barA)); assertFalse(rule.appliesToLeftSide(barB)); } @Test public void testGroupInRightSide() { Rule rule = createRule(Rule.Type.cannotDepend, ruleMemberFooA, groupBar, ruleMemberFooB); assertTrue(rule.appliesToRightSide(barA)); assertTrue(rule.appliesToRightSide(barB)); assertTrue(rule.appliesToRightSide(fooB)); assertFalse(rule.appliesToRightSide(fooA)); } private GroupRuleMember createGroup(String name, String... items) { Set<String> itemList = new HashSet(); for (String item : items) itemList.add(item); return new GroupRuleMember(new Group(name, itemList)); } private Rule createRule(Rule.Type type, RuleMember left, RuleMember... rights) { Set<RuleMember> right = new HashSet(); for (RuleMember rightItem : rights) right.add(rightItem); return new Rule(type, left, right); } }