---
sidebar_label: Test framework (EXPECT, TEST, ...)
---

# Test Framework

DCR has a built-in minimal test framework for C.

## Macros

### `EXPECT(expr)`

Asserts that an expression is true.

```c
EXPECT(1 + 1 == 2);
EXPECT(ptr != NULL);
```

### `SKIP(reason)`

Skips a test with a message.

```c
SKIP("not implemented on Windows");
```

### `TEST(name)`

Defines a test.

```c
TEST(addition) {
    EXPECT(1 + 1 == 2);
    EXPECT(2 + 2 == 4);
}
```

### `TEST_CASE(name)`

Registers a test case.

```c
TEST_CASE(math) {
    EXPECT(1 + 1 == 2);
}
```

## Initialization

```bash
dcr test --init
```

Creates:
- `tests/dcr_test.h` — framework header (do not edit)
- `tests/test.c` — template with example test

## Structure

```
tests/
├── dcr_test.h      # framework (do not edit)
├── test.c          # main tests
└── ...             # additional .c test files
```

Only `.c` files are compiled (`.cpp` is not supported).
