# test

<a id="test"></a>

# test

Modern unit testing framework.

## Classes

| Name | Description |
|------|-------------|
| [`FunctionTest`](https://auscaster.com/icey/docs/api-reference/icy-test-FunctionTest.md#functiontest) | [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) wrapper for standalone test functions. |
| [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) | [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) wrapper class. |
| [`TestRunner`](https://auscaster.com/icey/docs/api-reference/icy-test-TestRunner.md#testrunner-1) | [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) manager queue. |

## Typedefs

| Return | Name | Description |
|--------|------|-------------|
| std::list< [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * > | [`TestList`](#testlist)  |  |
| `std::list< std::string >` | [`SErrorist`](#serrorist)  |  |
| std::map< [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) *, [`SErrorist`](#serrorist) > | [`ErrorMap`](#errormap)  |  |

---

<a id="testlist"></a>

### TestList

```cpp
using TestList = std::list< Test * >
```

Type: std::list< [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * >

[Defined in src/base/include/icy/test.h:34](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L34)

---

<a id="serrorist"></a>

### SErrorist

```cpp
using SErrorist = std::list< std::string >
```

[Defined in src/base/include/icy/test.h:35](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L35)

---

<a id="errormap"></a>

### ErrorMap

```cpp
using ErrorMap = std::map< Test *, SErrorist >
```

Type: std::map< [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) *, [`SErrorist`](#serrorist) >

[Defined in src/base/include/icy/test.h:36](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L36)

## Functions

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`init`](#init-13)  | Initialize the test environment. |
| `int` | [`finalize`](#finalize-3)  | Finalize the test environment. |
| `void` | [`runAll`](#runall)  | Run all tests. |
| `void` | [`describe`](#describe)  | Describe a test environment implemented by the given lambda function. |
| `void` | [`describe`](#describe-1)  | Describe a test environment implemented by the given test instance. |
| `void` | [`expectImpl`](#expectimpl)  | Expect asserts that a condition is true (use [expect()](https://auscaster.com/icey/docs/api-reference/base.md#expect) as defined below). |
| `bool` | [`waitFor`](#waitfor)  | Run the event loop until a condition is met or timeout expires. Returns true if the condition was satisfied, false on timeout. Useful for testing async operations that complete via libuv callbacks. |

---

<a id="init-13"></a>

### init

```cpp
void init()
```

[Defined in src/base/include/icy/test.h:39](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L39)

Initialize the test environment.

---

<a id="finalize-3"></a>

### finalize

```cpp
int finalize()
```

[Defined in src/base/include/icy/test.h:44](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L44)

Finalize the test environment.

Destroy the [TestRunner](https://auscaster.com/icey/docs/api-reference/icy-test-TestRunner.md#testrunner-1) singleton instance and return the exit code.

---

<a id="runall"></a>

### runAll

```cpp
void runAll()
```

[Defined in src/base/include/icy/test.h:47](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L47)

Run all tests.

---

<a id="describe"></a>

### describe

```cpp
void describe(const std::string & name, std::function< void()> target)
```

[Defined in src/base/include/icy/test.h:50](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L50)

Describe a test environment implemented by the given lambda function.

---

<a id="describe-1"></a>

### describe

```cpp
void describe(const std::string & name, Test * test)
```

[Defined in src/base/include/icy/test.h:53](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L53)

Describe a test environment implemented by the given test instance.

---

<a id="expectimpl"></a>

### expectImpl

```cpp
void expectImpl(bool passed, const char * assert, const char * file, long line)
```

[Defined in src/base/include/icy/test.h:56](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L56)

Expect asserts that a condition is true (use [expect()](https://auscaster.com/icey/docs/api-reference/base.md#expect) as defined below).

---

<a id="waitfor"></a>

### waitFor

```cpp
bool waitFor(std::function< bool()> condition, int timeoutMs = 3000)
```

[Defined in src/base/include/icy/test.h:61](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L61)

Run the event loop until a condition is met or timeout expires. Returns true if the condition was satisfied, false on timeout. Useful for testing async operations that complete via libuv callbacks.
