Fix decode_signed32(); Add unit/bacnet/bacint tests (#392)
Fix decode_signed32() length for -8388608 and NULL apdu handling.
Add comprehensive unit tests for bacint.c functionality.
Verified by:
1. (Pass) From $bacnet-stack/test:
make clean test
2. (Pass) From $workspace (above $bacnet-stack):
west build -p always -b unit_testing \
bacnet-stack/zephyr/tests/unit/bacnet/bacint/ && \
./build/testbinary
3. (Pass) From $workspace (above $bacnet-stack):
./zephyr/scripts/twister -p unit_testing \
-T bacnet-stack/zephyr/tests/unit/bacnet/bacint/
Signed-off-by: Gregory Shue <gregory.shue@legrand.com>
Co-authored-by: Gregory Shue <gregory.shue@legrand.com>
This commit is contained in:
+2
-2
@@ -424,7 +424,7 @@ int encode_signed32(uint8_t *apdu, int32_t value)
|
|||||||
|
|
||||||
int decode_signed32(uint8_t *apdu, int32_t *value)
|
int decode_signed32(uint8_t *apdu, int32_t *value)
|
||||||
{
|
{
|
||||||
if (value) {
|
if (apdu && value) {
|
||||||
*value = ((int32_t)((((int32_t)apdu[0]) << 24) & 0xff000000));
|
*value = ((int32_t)((((int32_t)apdu[0]) << 24) & 0xff000000));
|
||||||
*value |= ((int32_t)((((int32_t)apdu[1]) << 16) & 0x00ff0000));
|
*value |= ((int32_t)((((int32_t)apdu[1]) << 16) & 0x00ff0000));
|
||||||
*value |= ((int32_t)((((int32_t)apdu[2]) << 8) & 0x0000ff00));
|
*value |= ((int32_t)((((int32_t)apdu[2]) << 8) & 0x0000ff00));
|
||||||
@@ -448,7 +448,7 @@ int bacnet_signed_length(int32_t value)
|
|||||||
len = 1;
|
len = 1;
|
||||||
} else if ((value >= -32768) && (value < 32768)) {
|
} else if ((value >= -32768) && (value < 32768)) {
|
||||||
len = 2;
|
len = 2;
|
||||||
} else if ((value > -8388608) && (value < 8388608)) {
|
} else if ((value >= -8388608) && (value < 8388608)) {
|
||||||
len = 3;
|
len = 3;
|
||||||
} else {
|
} else {
|
||||||
len = 4;
|
len = 4;
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
||||||
|
|
||||||
|
get_filename_component(basename ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
||||||
|
project(test_${basename}
|
||||||
|
VERSION 1.0.0
|
||||||
|
LANGUAGES C)
|
||||||
|
|
||||||
|
|
||||||
|
string(REGEX REPLACE
|
||||||
|
"/test/unit/bacnet/[a-zA-Z_/-]*$"
|
||||||
|
"/src"
|
||||||
|
SRC_DIR
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
string(REGEX REPLACE
|
||||||
|
"/test/unit/bacnet/[a-zA-Z_/-]*$"
|
||||||
|
"/test"
|
||||||
|
TST_DIR
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
set(ZTST_DIR "${TST_DIR}/ztest/src")
|
||||||
|
|
||||||
|
add_compile_definitions(
|
||||||
|
BIG_ENDIAN=0
|
||||||
|
CONFIG_ZTEST=1
|
||||||
|
)
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
${SRC_DIR}
|
||||||
|
${TST_DIR}/ztest/include
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME}
|
||||||
|
# File(s) under test
|
||||||
|
# NOTE: bits.h contains the complete implementation of the API.
|
||||||
|
# Support files and stubs (pathname alphabetical)
|
||||||
|
# Test and test library files
|
||||||
|
./src/main.c
|
||||||
|
${ZTST_DIR}/ztest_mock.c
|
||||||
|
${ZTST_DIR}/ztest.c
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,26 @@
|
|||||||
|
# Copyright (c) 2022 Legrand North America, LLC.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.20.0)
|
||||||
|
|
||||||
|
if(NOT ZEPHYR_CURRENT_MODULE_DIR)
|
||||||
|
string(REGEX REPLACE "/zephyr/tests/[a-zA-Z_/-]*$" ""
|
||||||
|
ZEPHYR_CURRENT_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(SOURCES
|
||||||
|
${ZEPHYR_CURRENT_MODULE_DIR}/test/unit/bacnet/bacint/src/main.c
|
||||||
|
)
|
||||||
|
|
||||||
|
project(bacnet_bacint)
|
||||||
|
find_package(Zephyr COMPONENTS unittest REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||||
|
|
||||||
|
# NOTE for Zephyr >= v3.2.0:
|
||||||
|
# - Zephyr unittest builds for target 'testbinary' instead of 'app'.
|
||||||
|
# - Zephyr unittest does not generate ZEPHYR_<modulename>_MODULE_DIR.
|
||||||
|
# So we have to use relative paths to get to the source.
|
||||||
|
|
||||||
|
target_include_directories(testbinary PRIVATE
|
||||||
|
${ZEPHYR_CURRENT_MODULE_DIR}/src
|
||||||
|
)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# This file is intentionally empty
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
tests:
|
||||||
|
bacnet.bacint.unit:
|
||||||
|
type: unit
|
||||||
Reference in New Issue
Block a user