75 lines
3.2 KiB
Markdown
75 lines
3.2 KiB
Markdown
# QtTest regression tests
|
|
|
|
Open the repository's root `dbc.pro` in Qt Creator. It contains `core` (a static
|
|
C++17 library) and `tests` (the `dbc_tests` QtTest executable). Core is built first;
|
|
tests link its archive rather than compiling its implementation again.
|
|
Qt Core and Qt Test development packages are required for tests only.
|
|
|
|
Build from the repository root with Qt 6 (use `qmake` for Qt 5):
|
|
|
|
```sh
|
|
mkdir build
|
|
cd build
|
|
qmake6 ../dbc.pro
|
|
make -j
|
|
make check
|
|
```
|
|
|
|
Or run `./tests/dbc_tests` directly. Both parser and decoder suites run, and the
|
|
executable returns nonzero when either suite fails. Decoder cases appear as
|
|
individual QtTest data rows; parser checks are grouped into named test slots.
|
|
Checks also run in release builds.
|
|
|
|
To build tests separately against an existing core build:
|
|
|
|
```sh
|
|
mkdir /tmp/dbc-tests-build
|
|
cd /tmp/dbc-tests-build
|
|
qmake6 /absolute/path/to/dbc/tests/tests.pro \
|
|
DBC_CORE_BUILD_DIR=/absolute/path/to/build/core
|
|
make
|
|
make check
|
|
```
|
|
|
|
`parser_tests.pri` and `decoder_tests.pri` include the test sources.
|
|
`../core/core.pri` supplies the library include path and linkage.
|
|
|
|
## Decoder coverage
|
|
|
|
Coverage includes Motorola bit numbering within and across bytes, unaligned
|
|
signals, signed values, scaling, 64-bit extraction, signed/unsigned boundary values
|
|
(including `INT64_MIN`, `INT64_MAX`, and `UINT64_MAX`), numeric output, invalid lengths, insufficient
|
|
payloads, and Intel regression cases. Frame validity means the definition was
|
|
found; insufficient payloads are checked through signal validity.
|
|
|
|
## Parser coverage
|
|
|
|
Parser tests cover standard and extended CAN IDs, whitespace, payload storage
|
|
boundaries, missing fields, malformed and overflowing numbers, reserved ID bits,
|
|
error paths and line numbers, and integration with signals and comments.
|
|
Signal tests cover complete syntax and numeric validation, scientific notation,
|
|
finite physical parameters and ordered ranges, spaces and tabs, receiver lists,
|
|
unsupported multiplexing, and Intel/Motorola declared-payload boundaries.
|
|
Value-description tests cover full `VAL_` syntax, whitespace, escaped quotes,
|
|
empty text, exact integer boundaries, duplicate keys within and across statements,
|
|
deferred and normalized frame references, missing targets, error locations,
|
|
raw lookup with scaling, unknown/invalid values, and both database builders.
|
|
Temporary DBC fixtures are created in the system temporary directory and removed
|
|
automatically.
|
|
|
|
Dispatch tests also verify exact keyword matching, handler construction and reuse,
|
|
unknown statements, and independent parsing sessions, including recovery after errors.
|
|
|
|
## Tree and optional model tests
|
|
|
|
`tree_node_test.cpp` is a standalone C++17 executable without Qt; see the root
|
|
README for its compiler command. It checks parents, sibling positions, null
|
|
children, bounds, and unique_ptr transfer.
|
|
|
|
Enable `CONFIG+=dbc_qt` in the root qmake invocation to build `dbc_qt` and
|
|
`dbc_model_tests` alongside existing tests. Qt 5.11+ or Qt 6 is required.
|
|
`make check` runs all suites. Model tests parse a temporary DBC fixture and use
|
|
QAbstractItemModelTester, verify navigation across columns, invalid/foreign
|
|
indexes, metadata and exact VAL_ integers, and persistent-index invalidation
|
|
when reloading or clearing the tree. No GUI/display server is needed.
|