// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net>
// This software is released under the Apache License 2.0.
// The license text is at http://www.apache.org/licenses/LICENSE-2.0
package fi.jumi.api.drivers;
public interface TestNotifier {
/**
* Notifies about a test failure.
* <p>
* The test will fail if this method is called at least once,<sup>[1]</sup> otherwise the test will
* pass.<sup>[2]</sup>
* <p>
* May be called multiple times.<sup>[3]</sup> Must be called on the current test,<sup>[4][5]</sup> i.e. the latest
* {@code TestNotifier} which is not yet finished.
*
* @reference [1]: <a href="https://github.com/orfjackal/jumi/blob/b84fa4449300ecb76e37fe8bb682bd053ae9b07c/jumi-core/src/test/java/fi/jumi/core/results/SuiteResultsSummaryTest.java#L31">
* failing_tests_are_tests_with_failures</a>
* @reference <br>[2]: <a href="https://github.com/orfjackal/jumi/blob/b84fa4449300ecb76e37fe8bb682bd053ae9b07c/jumi-core/src/test/java/fi/jumi/core/results/SuiteResultsSummaryTest.java#L22">
* passing_tests_are_tests_without_failures</a>
* @reference <br>[3]: <a href="https://github.com/orfjackal/jumi/blob/b84fa4449300ecb76e37fe8bb682bd053ae9b07c/jumi-core/src/test/java/fi/jumi/core/results/SuiteResultsSummaryTest.java#L41">
* a_test_with_multiple_failures_counts_as_just_one_failing_test</a>
* @reference <br>[4]: <a href="https://github.com/orfjackal/jumi/blob/1eddce9866f4bcc3e9b08b9b447ab6d19f4ec1fc/jumi-core/src/test/java/fi/jumi/core/runs/ThreadBoundSuiteNotifierTest.java#L93">
* fireFailure_must_be_called_on_the_current_test</a>
* @reference <br>[5]: <a href="https://github.com/orfjackal/jumi/blob/1eddce9866f4bcc3e9b08b9b447ab6d19f4ec1fc/jumi-core/src/test/java/fi/jumi/core/runs/ThreadBoundSuiteNotifierTest.java#L115">
* fireFailure_cannot_be_called_after_the_test_is_finished</a>
*/
void fireFailure(Throwable cause);
/**
* Notifies about the end of a test execution.
* <p>
* Must be called last, exactly once.<sup>[1]</sup> Must be called on the current test,<sup>[2]</sup> i.e. the
* latest {@code TestNotifier} which is not yet finished.
*
* @reference [1]: <a href="https://github.com/orfjackal/jumi/blob/1eddce9866f4bcc3e9b08b9b447ab6d19f4ec1fc/jumi-core/src/test/java/fi/jumi/core/runs/ThreadBoundSuiteNotifierTest.java#L175">
* fireTestFinished_cannot_be_called_after_the_test_is_finished</a>
* @reference <br>[2]: <a href="https://github.com/orfjackal/jumi/blob/1eddce9866f4bcc3e9b08b9b447ab6d19f4ec1fc/jumi-core/src/test/java/fi/jumi/core/runs/ThreadBoundSuiteNotifierTest.java#L153">
* fireTestFinished_must_be_called_on_the_current_test</a>
*/
/* TODO: add javadoc after implemented:
If the test started any threads, will wait for them to finish (except the AWT event thread and maybe some others).
It is an error (or at least a warning) for a test to start threads without stopping them.
*/
void fireTestFinished();
}