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.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user