// 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.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.dtangler.core.analysisresult.Violation;
import org.dtangler.core.dependencies.Dependency;
import org.dtangler.core.dependencies.TestDependable;
import org.dtangler.core.testutil.ruleanalysis.MockRule;
import org.junit.Test;
public class RuleViolationTest {
@Test
public void testGetRightRuleViolationText() {
TestDependable packageA = new TestDependable("a");
TestDependable packageB = new TestDependable("b");
Dependency packageDependency = new Dependency(packageA, packageB);
TestDependable classA = new TestDependable("a.A");
TestDependable classB = new TestDependable("b.B");
Dependency classDependency = new Dependency(classA, classB);
Rule rule = new Rule(Rule.Type.cannotDepend, new SingleRuleMember("a"),
createSet(new SingleRuleMember("b")));
Violation packageViolation = new RuleViolation(packageDependency, rule);
Violation classViolation = new RuleViolation(classDependency, rule);
String violationText = "Rule violation: a cannot depend on b";
assertEquals(violationText, packageViolation.asText());
assertEquals(violationText, classViolation.asText());
}
@Test
public void testAppliesTo() {
TestDependable depA = new TestDependable("a");
TestDependable depB = new TestDependable("b");
TestDependable depC = new TestDependable("c");
Violation v = new RuleViolation(new Dependency(depA, depB),
new MockRule());
assertTrue(v.appliesTo(new HashSet(Arrays.asList(depA, depB, depC))));
assertTrue(v.appliesTo(new HashSet(Arrays.asList(depA, depB))));
assertFalse(v.appliesTo(new HashSet(Arrays.asList(depA))));
assertFalse(v.appliesTo(new HashSet(Arrays.asList(depB))));
assertFalse(v.appliesTo(new HashSet(Arrays.asList(depC))));
}
protected Set<RuleMember> createSet(RuleMember... items) {
return new HashSet(Arrays.asList(items));
}
}