mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-02-05 15:18:45 +00:00
update vss_util tool (#2)
This commit is contained in:
59
framework_tests/test_vss_formula/CMakeLists.txt
Normal file
59
framework_tests/test_vss_formula/CMakeLists.txt
Normal file
@@ -0,0 +1,59 @@
|
||||
# Define project
|
||||
project (VSSComponentsFormulaTests VERSION 1.0 LANGUAGES CXX)
|
||||
|
||||
# Use new policy for project version settings and default warning level
|
||||
cmake_policy(SET CMP0048 NEW) # requires CMake 3.14
|
||||
cmake_policy(SET CMP0092 NEW) # requires CMake 3.15
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
# Libary symbols are hidden by default
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
|
||||
# Include directory to the core framework
|
||||
include_directories(${SDV_FRAMEWORK_DEV_INCLUDE})
|
||||
file (COPY ${PROJECT_SOURCE_DIR}/config/rxformulatypeint32.toml DESTINATION ${CMAKE_BINARY_DIR}/bin/config/)
|
||||
file (COPY ${PROJECT_SOURCE_DIR}/config/rxformulatypestring.toml DESTINATION ${CMAKE_BINARY_DIR}/bin/config/)
|
||||
|
||||
# VSS util component formula test executable
|
||||
add_executable(ComponentFormulaTest_VSSComponents load_components_test.cpp)
|
||||
|
||||
include_directories(${CMAKE_CURRENT_LIST_DIR}/../vss_util/generated/with_formula/vss_files/)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
target_link_libraries(ComponentFormulaTest_VSSComponents ${CMAKE_THREAD_LIBS_INIT} GTest::GTest)
|
||||
if (WIN32)
|
||||
target_link_libraries(ComponentFormulaTest_VSSComponents Ws2_32 Winmm Rpcrt4.lib)
|
||||
else()
|
||||
target_link_libraries(ComponentFormulaTest_VSSComponents ${CMAKE_DL_LIBS} rt)
|
||||
endif()
|
||||
else()
|
||||
target_link_libraries(ComponentFormulaTest_VSSComponents GTest::GTest Rpcrt4.lib)
|
||||
endif()
|
||||
|
||||
# Add the VSS utility component formula test
|
||||
add_test(NAME ComponentFormulaTest_VSSComponents COMMAND ComponentFormulaTest_VSSComponents WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||
|
||||
# Execute the test
|
||||
add_custom_command(TARGET ComponentFormulaTest_VSSComponents POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E env TEST_EXECUTION_MODE=CMake "$<TARGET_FILE:ComponentFormulaTest_VSSComponents>" --gtest_output=xml:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ComponentFormulaTest_VSSComponents.xml
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
# Build dependencies
|
||||
add_dependencies(ComponentFormulaTest_VSSComponents
|
||||
testcase5_vd_rxclassforint32_rx testcase5_vd_rxclassforint32_rx
|
||||
testcase5_vd_rxclassforstring_rx testcase5_vd_rxclassforstring_rx)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
[Configuration]
|
||||
Version = 100
|
||||
|
||||
[[Component]]
|
||||
Path = "data_dispatch_service.sdv"
|
||||
Class = "DataDispatchService"
|
||||
@@ -0,0 +1,11 @@
|
||||
[Configuration]
|
||||
Version = 100
|
||||
|
||||
[[Component]]
|
||||
Path = "testcase5_vd_rxclassforint32_rx.sdv"
|
||||
Class = "Vehicle.Chassis.Body.Int32_Device"
|
||||
|
||||
[[Component]]
|
||||
Path = "testcase5_bs_rxclassforint32_rx.sdv"
|
||||
Class = "Vehicle.Chassis.Body.Int32_Service"
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
[Configuration]
|
||||
Version = 100
|
||||
|
||||
[[Component]]
|
||||
Path = "testcase5_vd_rxclassforstring_rx.sdv"
|
||||
Class = "Vehicle.Chassis.Body.String_Device"
|
||||
|
||||
[[Component]]
|
||||
Path = "testcase5_bs_rxclassforstring_rx.sdv"
|
||||
Class = "Vehicle.Chassis.Body.String_Service"
|
||||
|
||||
104
framework_tests/test_vss_formula/load_components_test.cpp
Normal file
104
framework_tests/test_vss_formula/load_components_test.cpp
Normal file
@@ -0,0 +1,104 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
|
||||
#include <support/signal_support.h>
|
||||
#include <interfaces/dispatch.h>
|
||||
#include <support/app_control.h>
|
||||
#include <signal_identifier.h>
|
||||
#include <vss_vehiclechassisbodyint32_vd_rx.h>
|
||||
#include <vss_vehiclechassisbodystring_vd_rx.h>
|
||||
#include <vss_vehiclechassisbodyint32_bs_rx.h>
|
||||
#include <vss_vehiclechassisbodystring_bs_rx.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
bool InitializeAppControl(sdv::app::CAppControl* appControl, const std::string& configFileName)
|
||||
{
|
||||
auto bResult = appControl->AddModuleSearchDir("../../bin");
|
||||
bResult &= appControl->Startup("");
|
||||
appControl->SetConfigMode();
|
||||
bResult &= appControl->AddConfigSearchDir("../../tests/bin/config");
|
||||
|
||||
if (!configFileName.empty())
|
||||
{
|
||||
bResult &= appControl->LoadConfig(configFileName.c_str()) == sdv::core::EConfigProcessResult::successful;
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
TEST(VSSComponentTest, RXInt32)
|
||||
{
|
||||
sdv::app::CAppControl appControl;
|
||||
|
||||
auto bResult = InitializeAppControl(&appControl, "data_dispatch_service.toml");
|
||||
ASSERT_EQ(bResult, true);
|
||||
|
||||
sdv::core::CDispatchService dispatch;
|
||||
sdv::core::CSignal signalRx;
|
||||
signalRx = dispatch.RegisterRxSignal(testcase5::dsSignalInt32);
|
||||
ASSERT_TRUE(signalRx);
|
||||
|
||||
bResult &= appControl.LoadConfig("rxformulatypeint32.toml") == sdv::core::EConfigProcessResult::successful;
|
||||
ASSERT_EQ(bResult, true);
|
||||
|
||||
auto basicService = sdv::core::GetObject("Vehicle.Chassis.Body.Int32_Service").GetInterface<vss::Vehicle::Chassis::Body::Int32Service::IVSS_GetSignalTypeInt32>();
|
||||
ASSERT_TRUE(basicService);
|
||||
|
||||
appControl.SetRunningMode();
|
||||
const int32_t expected = 123;
|
||||
signalRx.Write(expected);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
||||
ASSERT_EQ(expected * 2, basicService->GetSignalTypeInt32());
|
||||
|
||||
signalRx.Reset();
|
||||
appControl.Shutdown();
|
||||
}
|
||||
|
||||
TEST(VSSComponentTest, RXString)
|
||||
{
|
||||
sdv::app::CAppControl appControl;
|
||||
|
||||
auto bResult = InitializeAppControl(&appControl, "data_dispatch_service.toml");
|
||||
ASSERT_EQ(bResult, true);
|
||||
|
||||
sdv::core::CDispatchService dispatch;
|
||||
sdv::core::CSignal signalRx;
|
||||
signalRx = dispatch.RegisterRxSignal(testcase5::dsSignalString);
|
||||
ASSERT_TRUE(signalRx);
|
||||
|
||||
bResult &= appControl.LoadConfig("rxformulatypestring.toml") == sdv::core::EConfigProcessResult::successful;
|
||||
ASSERT_EQ(bResult, true);
|
||||
|
||||
auto basicService = sdv::core::GetObject("Vehicle.Chassis.Body.String_Service").GetInterface<vss::Vehicle::Chassis::Body::StringService::IVSS_GetSignalTypeString>();
|
||||
ASSERT_TRUE(basicService);
|
||||
|
||||
appControl.SetRunningMode();
|
||||
std::string expected = "some text written";
|
||||
signalRx.Write(expected);
|
||||
expected.append("_string_added");
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
||||
ASSERT_EQ(expected, basicService->GetSignalTypeString());
|
||||
|
||||
signalRx.Reset();
|
||||
appControl.Shutdown();
|
||||
}
|
||||
|
||||
extern "C" int main(int argc, char* argv[])
|
||||
{
|
||||
|
||||
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
int result = RUN_ALL_TESTS();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
Reference in New Issue
Block a user