ThrowableAnyCauseMatcher.java

1
package fr.sii.ogham.testing.assertion.hamcrest;
2
3
import org.hamcrest.Description;
4
import org.hamcrest.Matcher;
5
import org.hamcrest.TypeSafeMatcher;
6
7
/**
8
 * A matcher that applies a delegate matcher to the cause of the current
9
 * Throwable, returning the result of that match.
10
 *
11
 * @param <T>
12
 *            the type of the throwable being matched
13
 */
14
public class ThrowableAnyCauseMatcher<T extends Throwable> extends TypeSafeMatcher<T> {
15
	private final Matcher<? extends Throwable> causeFinder;
16
	private final Matcher<? extends Throwable> causeMatcher;
17
18
	public ThrowableAnyCauseMatcher(Matcher<? extends Throwable> causeFinder, Matcher<? extends Throwable> causeMatcher) {
19
		this.causeFinder = causeFinder;
20
		this.causeMatcher = causeMatcher;
21
	}
22
23
	public void describeTo(Description description) {
24
		description.appendText("exception with cause matching ");
25
		description.appendDescriptionOf(causeFinder);
26
		description.appendText(" and matched cause ");
27
		description.appendDescriptionOf(causeMatcher);
28
	}
29
30
	@Override
31
	protected boolean matchesSafely(T item) {
32
		Throwable cause = item;
33 9 1. matchesSafely : negated conditional → NO_COVERAGE
2. matchesSafely : negated conditional → TIMED_OUT
3. matchesSafely : negated conditional → KILLED
4. matchesSafely : negated conditional → KILLED
5. matchesSafely : negated conditional → KILLED
6. matchesSafely : negated conditional → KILLED
7. matchesSafely : negated conditional → KILLED
8. matchesSafely : negated conditional → KILLED
9. matchesSafely : negated conditional → KILLED
		while (cause != null) {
34 9 1. matchesSafely : negated conditional → NO_COVERAGE
2. matchesSafely : negated conditional → TIMED_OUT
3. matchesSafely : negated conditional → KILLED
4. matchesSafely : negated conditional → KILLED
5. matchesSafely : negated conditional → KILLED
6. matchesSafely : negated conditional → KILLED
7. matchesSafely : negated conditional → KILLED
8. matchesSafely : negated conditional → KILLED
9. matchesSafely : negated conditional → KILLED
			if (causeFinder.matches(cause)) {
35 13 1. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE
2. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE
3. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → SURVIVED
4. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → TIMED_OUT
5. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → TIMED_OUT
6. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
7. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
8. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
9. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
10. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
11. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
12. matchesSafely : replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
13. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
				return causeMatcher.matches(cause);
36
			}
37
			cause = cause.getCause();
38
		}
39 2 1. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE
2. matchesSafely : replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED
		return false;
40
	}
41
42
	@Override
43
	protected void describeMismatchSafely(T item, Description description) {
44
		Throwable cause = item;
45 2 1. describeMismatchSafely : negated conditional → NO_COVERAGE
2. describeMismatchSafely : negated conditional → KILLED
		while (cause != null) {
46 2 1. describeMismatchSafely : negated conditional → NO_COVERAGE
2. describeMismatchSafely : negated conditional → KILLED
			if (causeFinder.matches(cause)) {
47
				break;
48
			}
49
			cause = cause.getCause();
50
		}
51 2 1. describeMismatchSafely : negated conditional → NO_COVERAGE
2. describeMismatchSafely : negated conditional → KILLED
		if (cause == null) {
52
			description.appendText("was not found in exception stack");
53
		} else {
54 2 1. describeMismatchSafely : removed call to org/hamcrest/Matcher::describeMismatch → NO_COVERAGE
2. describeMismatchSafely : removed call to org/hamcrest/Matcher::describeMismatch → KILLED
			causeMatcher.describeMismatch(cause, description);
55
		}
56
	}
57
58
}

Mutations

33

1.1
Location : matchesSafely
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : matchesSafely
Killed by : none
negated conditional → TIMED_OUT

3.3
Location : matchesSafely
Killed by : oghamcloudhopper.it.ReuseSessionStrategyTest.reuseSessionButSendFailsDueToSessionClosedByServer(oghamcloudhopper.it.ReuseSessionStrategyTest)
negated conditional → KILLED

4.4
Location : matchesSafely
Killed by : oghamthymeleafv3.it.ExternalFileTest.fileUnreadable(oghamthymeleafv3.it.ExternalFileTest)
negated conditional → KILLED

5.5
Location : matchesSafely
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

6.6
Location : matchesSafely
Killed by : oghamcore.it.core.sender.AutoRetryTest.smsNotRetriedOnFirstExecutionDueToParsingError(oghamcore.it.core.sender.AutoRetryTest)
negated conditional → KILLED

7.7
Location : matchesSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
negated conditional → KILLED

8.8
Location : matchesSafely
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
negated conditional → KILLED

9.9
Location : matchesSafely
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

34

1.1
Location : matchesSafely
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

2.2
Location : matchesSafely
Killed by : oghamcore.it.core.sender.AutoRetryTest.smsNotRetriedOnFirstExecutionDueToParsingError(oghamcore.it.core.sender.AutoRetryTest)
negated conditional → KILLED

3.3
Location : matchesSafely
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : matchesSafely
Killed by : oghamthymeleafv3.it.ExternalFileTest.fileNotFound(oghamthymeleafv3.it.ExternalFileTest)
negated conditional → KILLED

5.5
Location : matchesSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
negated conditional → KILLED

6.6
Location : matchesSafely
Killed by : none
negated conditional → TIMED_OUT

7.7
Location : matchesSafely
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

8.8
Location : matchesSafely
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
negated conditional → KILLED

9.9
Location : matchesSafely
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

35

1.1
Location : matchesSafely
Killed by : oghamcore.it.core.sender.AutoRetryTest.smsNotRetriedOnFirstExecutionDueToParsingError(oghamcore.it.core.sender.AutoRetryTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

2.2
Location : matchesSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

3.3
Location : matchesSafely
Killed by : none
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE

4.4
Location : matchesSafely
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

5.5
Location : matchesSafely
Killed by : oghamcloudhopper.it.ReuseSessionStrategyTest.reuseSessionButSendFailsDueToSessionClosedByServer(oghamcloudhopper.it.ReuseSessionStrategyTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

6.6
Location : matchesSafely
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

7.7
Location : matchesSafely
Killed by : oghamthymeleafv3.it.ExternalFileTest.fileUnreadable(oghamthymeleafv3.it.ExternalFileTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

8.8
Location : matchesSafely
Killed by : none
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → TIMED_OUT

9.9
Location : matchesSafely
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced boolean return with false for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

10.10
Location : matchesSafely
Killed by : none
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE

11.11
Location : matchesSafely
Killed by : none
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → TIMED_OUT

12.12
Location : matchesSafely
Killed by : none
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → SURVIVED

13.13
Location : matchesSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

39

1.1
Location : matchesSafely
Killed by : none
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → NO_COVERAGE

2.2
Location : matchesSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
replaced boolean return with true for fr/sii/ogham/testing/assertion/hamcrest/ThrowableAnyCauseMatcher::matchesSafely → KILLED

45

1.1
Location : describeMismatchSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
negated conditional → KILLED

2.2
Location : describeMismatchSafely
Killed by : none
negated conditional → NO_COVERAGE

46

1.1
Location : describeMismatchSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
negated conditional → KILLED

2.2
Location : describeMismatchSafely
Killed by : none
negated conditional → NO_COVERAGE

51

1.1
Location : describeMismatchSafely
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : describeMismatchSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
negated conditional → KILLED

54

1.1
Location : describeMismatchSafely
Killed by : none
removed call to org/hamcrest/Matcher::describeMismatch → NO_COVERAGE

2.2
Location : describeMismatchSafely
Killed by : oghamtesting.it.assertion.hamcrest.ThrowableAnyCauseMatcherSpec
removed call to org/hamcrest/Matcher::describeMismatch → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM