Files
bacnet_stack/test/CMakeLists.txt
T
Steve Karg 4924a57ccc Add enumeration text lookup for BACnet types (#1209)
* Added enumeration text lookup for BACnetAuthenticationStatus, BACnetAuthorizationMode, BACnetAccessCredentialDisable, BACnetAccessCredentialDisableReason, BACnetAccessUserType, BACnetAccessZoneOccupancyState, BACnetWriteStatus, BACnetIPMode, BACnetDoorValue, BACnetMaintenance, BACnetEscalatorFault, BACnetEscalatorMode, BACnetEscalatorOperationDirection, BACnetBackupState, BACnetSecurityLevel, BACnetLiftCarDirection, BACnetLiftCarDoorCommand, BACnetLiftCarDriveStatus, BACnetLiftCarMode, BACnetLiftFault, BACnetLiftGroupMode, BACnetAuditLevel, BACnetAuditOperation, BACnetSCHubConnectorState, BACnetSCConnectionState, BACnetNodeRelationship, BACnetAction, BACnetFileAccessMethod, BACnetLockStatus, BACnetDoorAlarmState, BACnetDoorStatus, BACnetDoorSecuredStatus, and BACnetAccessEvent.

* Created BINARY_PV_MAX with the same semantic meaning as one more than the last valid enumeration, and deprecated MAX_BINARY_PV usage in the examples.

* Reduced code size by using bactext_property_states_strtoul() instead of individual API for each enumations.
2026-01-24 16:11:25 -06:00

281 lines
7.5 KiB
CMake

# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
# set the project name
project(Unit_Tests)
option(BACNET_STACK_DEPRECATED_DISABLE "Disable deprecation compile warnings" ON)
if(BACNET_STACK_DEPRECATED_DISABLE)
add_definitions(-DBACNET_STACK_DEPRECATED_DISABLE)
endif()
# In tests allow newer C standard than in the library.
set(CMAKE_C_STANDARD 99)
# Set the compiler options
if (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "GNU")
add_compile_options(-g -O0 -fprofile-arcs -ftest-coverage)
# enable all relevant warnings that find bugs
add_compile_options(-Wall -Wextra -pedantic)
add_compile_options(-Wfloat-equal -Wconversion)
add_compile_options(-Wfloat-conversion -Wdouble-promotion)
add_compile_options(-Wredundant-decls -Wmissing-declarations)
add_compile_options(-Wswitch-default)
add_compile_options(-Wunused-variable)
add_compile_options(-Wcast-qual)
add_compile_options(-Wwrite-strings)
# don't warn about conversion, sign, compares, long long and attributes
# since they are common in embedded
add_compile_options(-Wno-sign-conversion -Wno-conversion)
add_compile_options(-Wno-sign-compare)
add_compile_options(-Wno-implicit-fallthrough)
# Just noise from clang
if (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "AppleClang")
add_compile_options(-Wno-gnu-zero-variadic-macro-arguments)
endif()
# Should be fixed in the future
add_compile_options(-Wno-cast-qual)
add_compile_options(-Wno-double-promotion)
add_compile_options(-Wno-float-conversion)
add_compile_options(-Wno-missing-declarations)
add_compile_options(-Wno-unused-but-set-variable)
add_compile_options(-Wno-write-strings)
add_compile_options(-Wno-implicit-fallthrough)
# some consistent defines used for all builds - avoids inconsistent error
add_compile_definitions(
BIG_ENDIAN=0
PRINT_ENABLED=1
BACAPP_PRINT_ENABLED=1
)
add_link_options(-fprofile-arcs -ftest-coverage)
endif()
# Create the lcov target. Run result tests with 'make lcov'
add_custom_target(lcov
COMMAND mkdir -p lcoverage
)
add_custom_command(TARGET lcov
COMMAND echo "=================== LCOV ===================="
COMMAND echo "-- Passing lcov tool under code coverage"
COMMAND lcov --capture --directory ../ --output-file lcoverage/main_coverage.info
COMMAND echo "-- Generating HTML output files"
COMMAND genhtml lcoverage/main_coverage.info --output-directory lcoverage
)
#
# add tests
#
list(APPEND testdirs
# unit/bacnet/bacerror
unit/bacnet/bits
)
list(APPEND testdirs
bacnet/abort
bacnet/access_rule
bacnet/alarm_ack
bacnet/arf
bacnet/authentication_factor_format
bacnet/awf
bacnet/bacaddr
bacnet/bacapp
bacnet/bacaudit
bacnet/bacdcode
bacnet/bacdevobjpropref
bacnet/bacdest
bacnet/bacerror
bacnet/bacint
bacnet/baclog
bacnet/bacpropstates
bacnet/bacreal
bacnet/bacstr
bacnet/bactext
bacnet/bactimevalue
bacnet/channel_value
bacnet/cov
bacnet/create_object
bacnet/datetime
bacnet/dcc
bacnet/delete_object
bacnet/event
bacnet/getalarm
bacnet/getevent
bacnet/hostnport
bacnet/iam
bacnet/ihave
bacnet/indtext
bacnet/lighting
bacnet/list_element
bacnet/lso
bacnet/memcopy
bacnet/npdu
bacnet/property
bacnet/ptransfer
bacnet/rd
bacnet/readrange
bacnet/reject
bacnet/rp
bacnet/rpm
bacnet/secure_connect
bacnet/specialevent
bacnet/shed_level
bacnet/timer_value
bacnet/timestamp
bacnet/timesync
bacnet/weeklyschedule
bacnet/whoami
bacnet/whohas
bacnet/whois
bacnet/wp
bacnet/wpm
bacnet/write_group
bacnet/youare
)
# bacnet/basic/*
list(APPEND testdirs
bacnet/basic/binding/address
bacnet/basic/bbmd
bacnet/basic/bbmd6
bacnet/basic/bzll
# basic/object
bacnet/basic/object/acc
bacnet/basic/object/access_credential
bacnet/basic/object/access_door
bacnet/basic/object/access_point
bacnet/basic/object/access_rights
bacnet/basic/object/access_user
bacnet/basic/object/access_zone
bacnet/basic/object/ai
bacnet/basic/object/ao
bacnet/basic/object/av
bacnet/basic/object/auditlog
bacnet/basic/object/bacfile
bacnet/basic/object/bi
bacnet/basic/object/bitstring_value
bacnet/basic/object/blo
bacnet/basic/object/bo
bacnet/basic/object/bv
bacnet/basic/object/channel
bacnet/basic/object/calendar
bacnet/basic/object/color_object
bacnet/basic/object/color_temperature
bacnet/basic/object/command
bacnet/basic/object/credential_data_input
bacnet/basic/object/csv
bacnet/basic/object/device
bacnet/basic/object/iv
bacnet/basic/object/lc
bacnet/basic/object/lo
bacnet/basic/object/loop
bacnet/basic/object/lsp
bacnet/basic/object/lsz
bacnet/basic/object/ms-input
bacnet/basic/object/mso
bacnet/basic/object/msv
bacnet/basic/object/netport
bacnet/basic/object/program
bacnet/basic/object/nc
bacnet/basic/object/objects
bacnet/basic/object/osv
bacnet/basic/object/piv
bacnet/basic/object/schedule
bacnet/basic/object/structured_view
bacnet/basic/object/time_value
bacnet/basic/object/timer
bacnet/basic/object/trendlog
# basic/program
bacnet/basic/program/ubasic
# basic/server
bacnet/basic/server/bacnet_device
# basic/sys
bacnet/basic/sys/bramfs
bacnet/basic/sys/bsramfs
bacnet/basic/sys/color_rgb
bacnet/basic/sys/days
bacnet/basic/sys/dst
bacnet/basic/sys/lighting_command
bacnet/basic/sys/fifo
bacnet/basic/sys/filename
bacnet/basic/sys/keylist
bacnet/basic/sys/linear
bacnet/basic/sys/ringbuf
bacnet/basic/sys/sbuf
)
# bacnet/datalink/*
list(APPEND testdirs
bacnet/datalink/automac
bacnet/datalink/cobs
bacnet/datalink/crc
bacnet/datalink/bvlc
bacnet/datalink/mstp
bacnet/datalink/dlmstp
bacnet/datalink/bvlc-sc
)
if(BACDL_BSC)
message(STATUS "Added BACnet/SC websocket dependent tests")
list(APPEND testdirs
bacnet/datalink/bsc-datalink
bacnet/datalink/bsc-node
bacnet/datalink/bsc-socket
bacnet/datalink/hub-sc
bacnet/datalink/websockets
)
endif()
# ports tests
if(ZEPHYR_BASE)
message(FATAL_ERROR "ZEPHYR_BASE env variable defined.")
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
message(STATUS "Added ports specific tests for linux")
list(APPEND testdirs
ports/linux/bsc_event
ports/linux/bip_subnet
)
elseif(WIN32)
message(STATUS "Added ports specific tests for win32")
list(APPEND testdirs
ports/win32/bsc_event
)
elseif(APPLE)
message(STATUS "Added ports specific tests for APPLE")
list(APPEND testdirs
ports/bsd/bsc_event
)
endif()
enable_testing()
foreach(testdir IN ITEMS ${testdirs})
get_filename_component(basename ${testdir} NAME)
add_subdirectory(${testdir})
add_test(build_${basename}
"${CMAKE_COMMAND}"
--build "${CMAKE_BINARY_DIR}"
--config "$<CONFIG>"
--target test_${basename}
)
add_test(test_${basename} ${testdir}/test_${basename})
set_tests_properties(test_${basename} PROPERTIES FIXTURES_REQUIRED test_fixture)
set_tests_properties(build_${basename} PROPERTIES FIXTURES_SETUP test_fixture)
endforeach()
message(STATUS "BACNET: using cmake:....................\"${CMAKE_VERSION}\"")
message(STATUS "BACNET: CMAKE_C_COMPILER_ID:............\"${CMAKE_C_COMPILER_ID}\"")
message(STATUS "BACNET: CMAKE_C_COMPILER_VERSION:.......\"${CMAKE_C_COMPILER_VERSION}\"")
message(STATUS "BACNET: CMAKE_CXX_COMPILER_ID:..........\"${CMAKE_CXX_COMPILER_ID}\"")
message(STATUS "BACNET: CMAKE_CXX_COMPILER_VERSION:.....\"${CMAKE_CXX_COMPILER_VERSION}\"")
message(STATUS "BACNET: CMAKE_INSTALL_PREFIX:...........\"${CMAKE_INSTALL_PREFIX}\"")