# Roadmap

### 0.4.0 features - Released 2021-05-09

* ~~Ability to disable a test, TestCase, or TestSuite~~ [#41](https://github.com/labrador-kennel/async-unit/issues/41)(Implemented with [#63](https://github.com/labrador-kennel/async-unit/pull/63))
* ~~Include more Assertions to those that come out-of-the-box.~~ [#42](https://github.com/labrador-kennel/async-unit/issues/42) (Implemented with [#69](https://github.com/labrador-kennel/async-unit/pull/69))
* ~~Randomize the order in which tests are ran.~~ [#43](https://github.com/labrador-kennel/async-unit/issues/43) (Implemented with [#68](https://github.com/labrador-kennel/async-unit/pull/68))
* ~~Show the time and memory required for running your tests in result output.~~ [#48](https://github.com/labrador-kennel/async-unit/issues/48) (Implemented with [#64](https://github.com/labrador-kennel/async-unit/pull/64))
* ~~Ensure tests that output anything are marked as failing.~~ [#44](https://github.com/labrador-kennel/async-unit/issues/44) (Implemented with [#67](https://github.com/labrador-kennel/async-unit/pull/67))
* ~~Allow for a TestCase to expect that an exception should be thrown.~~ [#45](https://github.com/labrador-kennel/async-unit/issues/45) (Implemented with [#70](https://github.com/labrador-kennel/async-unit/pull/70))

### 0.5.0 features - Released 2021-05-26

* ~~Introduce an Amp\ByteStream\OutputStream decorator for creating rich terminal output and improve the quality of the output for the default result printer.~~ [#78](https://github.com/labrador-kennel/async-unit/issues/78) (Implemented with [labrador-kennel/styled-byte-stream](https://github.com/labrador-kennel/styled-byte-stream))
* ~~Refactor Parser implementation to use asynchronous I/O.~~ [#62](https://github.com/labrador-kennel/async-unit/issues/62) (Implemented with [#88](https://github.com/labrador-kennel/async-unit/pull/88))
* ~~Introduce a comprehensive statistics API so appropriate events can provide detailed information about test processing.~~ [#79](https://github.com/labrador-kennel/async-unit/issues/79) (Implemented with [#91](https://github.com/labrador-kennel/async-unit/pull/91))
* ~~Allow for a TestCase to expect that a certain number of assertions should have been made.~~ [#81](https://github.com/labrador-kennel/async-unit/issues/81) (Implemented with [#95](https://github.com/labrador-kennel/async-unit/pull/95))
* ~~Allow for a TestCase to expect that a test finishes before a given timeout has reached.~~ [#82](https://github.com/labrador-kennel/async-unit/issues/82) (Implemented with [#96](https://github.com/labrador-kennel/async-unit/pull/96))

### 0.6.0 features - Active Sprint

* ~~Introduce the concept of a "mock bridge" that supports the ability to use a variety of mocking systems~~. [#83](https://github.com/labrador-kennel/async-unit/issues/83) (Implemented with [#100](https://github.com/labrador-kennel/async-unit/pull/100))
* ~~Allow hooks to define the order in which they should be ran.~~ [#84](https://github.com/labrador-kennel/async-unit/issues/84) (Implemented with [#103](https://github.com/labrador-kennel/async-unit/pull/103))
* ~~Allow TestSuite to define which TestCase should be associated by namespace.~~ [#85](https://github.com/labrador-kennel/async-unit/issues/85) (Implemented with [#104](https://github.com/labrador-kennel/async-unit/pull/104))
* Introduce a  `DisabledIf(string $method, ?string $reason = null)` attribute that will only disable the test, `TestCase`, or `TestSuite` if the `$method` returns true. [#86](https://github.com/labrador-kennel/async-unit/issues/86)
* ~~Better differentiate between a test failing with a TestFailedException and a test failing because of an error that was unexpected.~~ [#99](https://github.com/labrador-kennel/async-unit/issues/99) (Implemented with [#102](https://github.com/labrador-kennel/async-unit/pull/102))

### 0.7.0 features

* Allow ability to override which configuration file should be used on the command line.
* Implement ability to define your own plugins defined in `async-unit.json` that should be registered with the Application automatically. [#80](https://github.com/labrador-kennel/async-unit/issues/80)
* Allow filtering the tests that are run based on a `TestSuite`, `TestCase`, or test name. [#87](https://github.com/labrador-kennel/async-unit/issues/87)
* Show information about which data set was used when a `#[DataProvider]` test fails. [#98](https://github.com/labrador-kennel/async-unit/issues/98)

### 0.8.0 features

* Design a comprehensive CLI display for showing a variety of test information.
* Update the `AssertionFailedException` to not require custom methods to display appropriate data. All information that needs to be displayed for a given exception should be part of the `getMessage()`
* Introduce some functionality that allows showing the diff between things that are/should be diffable.
* Introduce a concrete logging implementation that can be defined by the `async-unit.json` configuration. [#11](https://github.com/labrador-kennel/async-unit/issues/11)

### 0.9.0 features

* Make expectations on active Loop watchers before and after a test is processed

### Unknown Version

These are features we'd like to support at some point but are not sure how they would be implemented or where they should fall within the timeline.

* Support code coverage
* Build artifacts for common test reporting formats
* Run each TestSuite in its own parallel Worker
* Cache the results of the parser step so we can skip it if possible
