# Test Library
The test library is an augmented standard library, it contains all definitions in the standard library plus some additional modules and functions which help testing packages and debug regressions.

It defines the following modules:
- `test`: a module with various testing helpers such as `catch` and additonal asserts.

The following items are re-exorted in the global scope as well:
- `assert-panic`: originally `test.assert-panic`
- `catch`: originally `test.catch`

## `test`
Contains the main testing utilities.

### `assert-panic`
Ensures that a function panics.

Fails with an error if the function does not panic. Does not produce any output in the document.

#### Example
```typst
#assert-panic(() => {},      message: "I panic!")
#assert-panic(() => panic(), message: "I don't!")
```

#### Parameters
```txt
assert-panic(
  function,
  message: str | auto,
)
```

> ##### `function: function`
> - `required`
> - `positional`
>
> The function to test.

> ##### `message: str | auto`
>
> The error message when the assertion fails.

### `catch`
Unwraps and returns the panics generated by a function, if there were any.

Does not produce any output in the document.

#### Example
```typst
#assert.eq(catch(() => {}), none)
#assert.eq(
  catch(panics).first(),
  "panicked with: Invalid arg, expected `int`, got `str`",
)
```

#### Parameters
```txt
catch(
  function,
)
```

> ##### `function: function`
> - `required`
> - `positional`
>
> The function to test.
