# TestRunner

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

# TestRunner

```cpp
#include <icy/test.h>

class TestRunner
```

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

[Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) manager queue.

The [`TestRunner`](#testrunner-1) is a queue in charge of running one or many tests.

When [`run()`](#run-10) the [`TestRunner`](#testrunner-1) loops through each test in the list calling the test's [`run()`](#run-10) method.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`TestRunner`](#testrunner-2)  |  |
|  | [`~TestRunner`](#testrunner-3) `virtual` |  |
| `void` | [`add`](#add-8)  | Adds a test to the runner and prints its name to stdout. |
| [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * | [`get`](#get-16) `const` | Return a pointer to the test matching the given name, or nullptr if no matching test exists. |
| `void` | [`run`](#run-10)  | Runs all registered tests sequentially, printing results to stdout. |
| `void` | [`clear`](#clear-8)  | Destroy and clears all managed tests. |
| [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * | [`current`](#current-3) `const` | Return the currently active [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) or nullptr. |
| [`TestList`](https://auscaster.com/icey/docs/api-reference/icy-test.md#testlist) | [`tests`](#tests) `const` | Return the list of tests. |
| [`ErrorMap`](https://auscaster.com/icey/docs/api-reference/icy-test.md#errormap) | [`errors`](#errors-1) `const` | Return a map of tests and errors. |
| `bool` | [`passed`](#passed-2) `const` | Return true if all tests passed. |

---

<a id="testrunner-2"></a>

### TestRunner

```cpp
TestRunner()
```

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

---

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

### ~TestRunner

`virtual`

```cpp
virtual ~TestRunner()
```

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

---

<a id="add-8"></a>

### add

```cpp
void add(Test * test)
```

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

Adds a test to the runner and prints its name to stdout.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `test` | [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * | Non-null pointer to the test; the runner takes ownership. |

---

<a id="get-16"></a>

### get

`const`

```cpp
Test * get(std::string_view name) const
```

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

Return a pointer to the test matching the given name, or nullptr if no matching test exists. 
#### Returns
Matching test pointer or nullptr.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `std::string_view` | [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) name to search for. |

---

<a id="run-10"></a>

### run

```cpp
void run()
```

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

Runs all registered tests sequentially, printing results to stdout.

---

<a id="clear-8"></a>

### clear

```cpp
void clear()
```

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

Destroy and clears all managed tests.

---

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

### current

`const`

```cpp
Test * current() const
```

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

Return the currently active [Test](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) or nullptr.

---

<a id="tests"></a>

### tests

`const`

```cpp
TestList tests() const
```

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

Return the list of tests.

---

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

### errors

`const`

```cpp
ErrorMap errors() const
```

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

Return a map of tests and errors.

---

<a id="passed-2"></a>

### passed

`const`

```cpp
bool passed() const
```

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

Return true if all tests passed.

## Public Static Methods

| Return | Name | Description |
|--------|------|-------------|
| [`TestRunner`](#testrunner-1) & | [`getDefault`](#getdefault-4) `static` | Return the default [`TestRunner`](#testrunner-1) singleton, although [`TestRunner`](#testrunner-1) instances may also be initialized individually. |

---

<a id="getdefault-4"></a>

### getDefault

`static`

```cpp
static TestRunner & getDefault()
```

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

Return the default [`TestRunner`](#testrunner-1) singleton, although [`TestRunner`](#testrunner-1) instances may also be initialized individually.

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::mutex` | [`_mutex`](#_mutex-15)  |  |
| [`TestList`](https://auscaster.com/icey/docs/api-reference/icy-test.md#testlist) | [`_tests`](#_tests)  |  |
| [`Test`](https://auscaster.com/icey/docs/api-reference/icy-test-Test.md#test-1) * | [`_current`](#_current-1)  |  |

---

<a id="_mutex-15"></a>

### _mutex

```cpp
std::mutex _mutex
```

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

---

<a id="_tests"></a>

### _tests

```cpp
TestList _tests
```

Type: [`TestList`](https://auscaster.com/icey/docs/api-reference/icy-test.md#testlist)

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

---

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

### _current

```cpp
Test * _current
```

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

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