Files
Steve Karg ca9836b099 Added BACnetRecipient and BACnetAddressBinding codecs for EPICS application (#1163)
* Added BACnetRecipient and BACnetAddressBinding encoding, decoding, ASCII conversion, comparison, and copy functions.

*  Added library specific string manipulation utilities including strcmp, strncmp, stptok, and snprintf with offset functions.

* Added test/README about verification and validation testing.
2025-11-27 23:12:39 -06:00

48 lines
2.1 KiB
Markdown

# BACnet Stack Verification and Validation Testing
CMake and C99 are used for the verification and validation testing.
## Testing in the Github workflow pipeline with Makefile
The Makefile 'test' recipe is used for the CMake recipe used in the pipeline.
The 'retest' can be used to re-build the test.
Changing to the test/build folder and running 'make test' can show
more details about a failing build or failing test. Running the actual
test by running ./test/build/bacnet/.../test_xyz has more detailed
results of running the test.
## Testing with VS Code with CMake extension and C/C++ build tools
* Open the test/ folder as a workspace.
* The folder structure follows the src/bacnet folder structure.
* Configure the CMake extension to use the C/C++ build tools kit.
* Configure the CMake extension to use the Debug build type.
* Build each or 'all' project using the CMake extension.
* Each unit or verification test can be build individually.
* The LCOV Cmake recipe will create Line-of-Code Coverage that
can be viewed in a browser starting at test/build/lcoverage/index.html
* The CTest extension can also be used to run the tests.
## Validation and Unit testing with ctest or ztest
* The ctest suite is used from cmake managing the tests. Add new test
files following the src/bacnet folder structure into the CMakeLists.txt
file. Copy and existing test folder at the same folder depth to start.
* The ztest framework (from Zephyr) has been ported to use in the tests
and includes the fff mocking macros. The zassert_x() macros include a
formatted print as the last argument so that print style debug can be
used to show values that fail which aids in writing a test.
* Tests can also be written without the zassert_x() macros by including
assert.h and using the assert() macro.
## Use pre-commit tools for changes and additions
* This library uses 'pre-commit' tools to format the files.
* Run pre-commit after staging a file and before committing
to avoid pipeline build failures.
* If a file fails pre-commit checking, the file will be re-formated
correctly by the pre-commit tool. Add the fixed file to the staged
files and run pre-commit again.