blob: 1d041e6236b089ef0ac67287633ea7b53bc82cb5 [file] [log] [blame] [view]
# Chip-Level Test Libraries
# Overview
This subtree contains _test library code_ that could aid in the writing of [chip-level tests](../../tests/README.md).
Test library code consists of two components:
1. `testutils` libraries, and
2. the [on-device test framework](./test_framework/README.md).
Functions in `testutils` libraries are designed to wrap several DIF invocations that are commonly used together across many chip-level tests.
They are _not_ designed to wrap a single DIF call.
The [on-device test framework](./test_framework/README.md) provides a generic platform for writing chip-level tests.
# Style Guide
- All `testutils` libraries should be placed in `sw/device/lib/testing/*`
- The [on-device test framework](./test_framework/README.md)
code will live in: `sw/device/lib/testing/test\_framework`.
- `testutils` libraries will be named: `<IP or functionality name>_testutils.<h,c>`
- All `testutils` function names should take on the following format: `<IP or functionality name>_testutils_<function name>()`.
This corresponds to the format: `<filename>_<function name>()`.
- There is no strict return typing required, though ideally most `testutils` functions should return **void** or **bool**.
This is because test errors should be checked in `testutils` functions themselves using the `CHECK()` macros defined in `sw/device/lib/testing/check.h`.
- Functions that return **bool** to represent an error should be marked with **OT_WARN_UNUSED_RESULT** to avoid mistakenly ignoring errors.
Return **false** to represent an error.
- Try to keep `testutils` libraries toplevel agnostic (e.g., dont include `hw/top_earlgrey/sw/autogen/top_earlgrey.h` if you can avoid it).
This means `dif_<ip>_init()` DIFs should be invoked in chip-level tests, *not* `testutils`, and the DIF handles should be passed in as parameters to `testutils` functions.
- Pass-through `sw/device/lib/dif_base.h` types where appropriate.
This allows testutils functions to easily mix with DIFs within chip-level tests.
- Avoid defining testutils that call a single DIF, and use the DIF directly.
If a DIF does not exist for your needs, create one by following the [DIF development guide](../dif/README.md).
{{% sectionContent %}}