use of com.tngtech.archunit.lang.EvaluationResult in project ArchUnit by TNG.
the class CodeUnitsShouldTest method restricted_code_units_calls_by_constructors_predicate.
@Test
@UseDataProvider("restricted_code_unit_calls_by_constructors_rules")
public void restricted_code_units_calls_by_constructors_predicate(ArchRule rule) {
EvaluationResult result = rule.evaluate(importClasses(ClassWithMethodAndConstructor.class, ClassCorrectlyCallingMethodAndConstructor.class, ClassWronglyCallingMethodAndConstructor.class));
assertThat(singleLineFailureReportOf(result)).contains("Rule 'code units should only be called by constructors that").containsPattern(String.format("Method <%s.%s> calls method <%s.%s>", quote(ClassWronglyCallingMethodAndConstructor.class.getName()), quote(METHOD_CALL_WRONGLY), quote(ClassWithMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG))).containsPattern(String.format("Method <%s.%s> calls constructor <%s.%s>", quote(ClassWronglyCallingMethodAndConstructor.class.getName()), quote(METHOD_CALL_WRONGLY), quote(ClassWithMethodAndConstructor.class.getName()), quote(CONSTRUCTOR_ONE_ARG))).containsPattern(String.format("Method <%s.%s> calls constructor <%s.%s>", quote(ClassCorrectlyCallingMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG), quote(ClassWithMethodAndConstructor.class.getName()), quote(CONSTRUCTOR_ONE_ARG))).containsPattern(String.format("Method <%s.%s> calls method <%s.%s>", quote(ClassCorrectlyCallingMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG), quote(ClassWithMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG)));
}
use of com.tngtech.archunit.lang.EvaluationResult in project ArchUnit by TNG.
the class CodeUnitsShouldTest method parameter_types_predicates.
@Test
@UseDataProvider("restricted_parameter_types_rules")
public void parameter_types_predicates(ArchRule rule, Collection<String> expectedMembers) {
EvaluationResult result = rule.evaluate(importClasses(ClassWithVariousMembers.class));
Set<String> actualMembers = parseMembers(ClassWithVariousMembers.class, result.getFailureReport().getDetails());
assertThat(actualMembers).containsOnlyElementsOf(expectedMembers);
}
use of com.tngtech.archunit.lang.EvaluationResult in project ArchUnit by TNG.
the class CodeUnitsShouldTest method restricted_methods_calls_by_code_units_predicate.
@Test
@UseDataProvider("restricted_methods_calls_by_code_units_rules")
public void restricted_methods_calls_by_code_units_predicate(ArchRule rule) {
EvaluationResult result = rule.evaluate(importClasses(ClassWithMethodAndConstructor.class, ClassCorrectlyCallingMethodAndConstructor.class, ClassWronglyCallingMethodAndConstructor.class));
assertThat(singleLineFailureReportOf(result)).contains("Rule 'methods should only be called by code units that").containsPattern(String.format("Method <%s.%s> calls method <%s.%s>", quote(ClassWronglyCallingMethodAndConstructor.class.getName()), quote(METHOD_CALL_WRONGLY), quote(ClassWithMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG)));
}
use of com.tngtech.archunit.lang.EvaluationResult in project ArchUnit by TNG.
the class CodeUnitsShouldTest method restricted_constructors_calls_by_constructors_predicate.
@Test
@UseDataProvider("restricted_constructors_calls_by_constructors_rules")
public void restricted_constructors_calls_by_constructors_predicate(ArchRule rule) {
EvaluationResult result = rule.evaluate(importClasses(ClassWithMethodAndConstructor.class, ClassCorrectlyCallingMethodAndConstructor.class, ClassWronglyCallingMethodAndConstructor.class));
assertThat(singleLineFailureReportOf(result)).contains("Rule 'constructors should only be called by constructors that").containsPattern(String.format("Method <%s.%s> calls constructor <%s.%s>", quote(ClassWronglyCallingMethodAndConstructor.class.getName()), quote(METHOD_CALL_WRONGLY), quote(ClassWithMethodAndConstructor.class.getName()), quote(CONSTRUCTOR_ONE_ARG))).containsPattern(String.format("Method <%s.%s> calls constructor <%s.%s>", quote(ClassCorrectlyCallingMethodAndConstructor.class.getName()), quote(METHOD_ONE_ARG), quote(ClassWithMethodAndConstructor.class.getName()), quote(CONSTRUCTOR_ONE_ARG)));
}
use of com.tngtech.archunit.lang.EvaluationResult in project ArchUnit by TNG.
the class CodeUnitsShouldTest method complex_code_unit_syntax.
@Test
public void complex_code_unit_syntax() {
EvaluationResult result = codeUnits().that(doNotHaveParametersOfType(List.class)).should().beAnnotatedWith(A.class).andShould().beProtected().orShould().haveRawReturnType(String.class).evaluate(importClasses(ClassWithVariousMembers.class));
assertViolation(result);
String failure = getOnlyElement(result.getFailureReport().getDetails());
assertThat(failure).matches(String.format(".*Constructor .*%s.* does not have modifier PROTECTED.*", quote(CONSTRUCTOR_ONE_ARG))).contains("and Constructor").matches(String.format(".*Constructor .*%s.* is not annotated with @A.*", quote(CONSTRUCTOR_ONE_ARG))).matches(String.format(".*Constructor .*%s.* does not have raw return type %s.*", quote(CONSTRUCTOR_ONE_ARG), String.class.getName()));
}
Aggregations