Skip to content

Commit 10e194b

Browse files
Unit test refactoring (#674)
* Refactored unit tests: * Moved all unit tests into either common/ v16/ or v201/ * separated message_queue unit tests between v16 and v201 * only building unit tests for v16 or v201 if LIBOCPP_ENABLE_VXX is set Signed-off-by: pietfried <pietgoempel@gmail.com> * bump version to 0.13.1 Signed-off-by: pietfried <pietgoempel@gmail.com> --------- Signed-off-by: pietfried <pietgoempel@gmail.com> Co-authored-by: Marc Emmers <m.emmers@alfen.com>
1 parent 6587cd4 commit 10e194b

15 files changed

+138
-137
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.14)
22

33
project(ocpp
4-
VERSION 0.13.0
4+
VERSION 0.13.1
55
DESCRIPTION "A C++ implementation of the Open Charge Point Protocol"
66
LANGUAGES CXX
77
)

tests/CMakeLists.txt

+10-45
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,8 @@ set(MIGRATION_FILES_LOCATION_V16 "${CMAKE_CURRENT_BINARY_DIR}/resources/v16/migr
22
set(MIGRATION_FILES_LOCATION_V201 "${CMAKE_CURRENT_BINARY_DIR}/resources/v201/migration_files")
33
set(DEVICE_MODEL_DB_LOCATION_V201 "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201/device_model_storage.db")
44

5-
add_executable(database_tests database_tests.cpp)
6-
7-
target_link_libraries(database_tests PRIVATE
8-
ocpp
9-
date::date
10-
nlohmann_json::nlohmann_json
11-
nlohmann_json_schema_validator
12-
GTest::gtest_main
13-
pthread
14-
)
15-
16-
17-
add_test(database_tests database_tests)
18-
195
add_executable(libocpp_unit_tests)
206

21-
target_compile_definitions(database_tests
22-
PRIVATE
23-
MIGRATION_FILES_LOCATION_V16="${MIGRATION_FILES_LOCATION_V16}"
24-
MIGRATION_FILES_LOCATION_V201="${MIGRATION_FILES_LOCATION_V201}"
25-
MIGRATION_FILE_VERSION_V16=${MIGRATION_FILE_VERSION_V16}
26-
MIGRATION_FILE_VERSION_V201=${MIGRATION_FILE_VERSION_V201}
27-
)
28-
297
target_compile_definitions(libocpp_unit_tests
308
PRIVATE
319
MIGRATION_FILES_LOCATION_V16="${MIGRATION_FILES_LOCATION_V16}"
@@ -46,35 +24,22 @@ add_custom_command(TARGET libocpp_unit_tests POST_BUILD
4624

4725
add_test(libocpp_unit_tests libocpp_unit_tests)
4826

49-
target_include_directories(libocpp_unit_tests PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
27+
target_include_directories(libocpp_unit_tests PUBLIC
28+
${CMAKE_CURRENT_SOURCE_DIR}
29+
${CMAKE_CURRENT_SOURCE_DIR}/lib/ocpp/common
30+
)
5031
target_link_libraries(libocpp_unit_tests PRIVATE
5132
ocpp
5233
GTest::gmock_main
5334
GTest::gtest_main
5435
)
55-
target_sources(libocpp_unit_tests PRIVATE
56-
comparators.cpp)
5736

58-
add_subdirectory(lib/ocpp/v16)
59-
add_subdirectory(lib/ocpp/v201)
6037
add_subdirectory(lib/ocpp/common)
6138

39+
if(LIBOCPP_ENABLE_V16)
40+
add_subdirectory(lib/ocpp/v16)
41+
endif()
6242

63-
add_executable(utils_tests utils_tests.cpp)
64-
65-
target_link_libraries(utils_tests PRIVATE
66-
ocpp
67-
GTest::gtest_main
68-
)
69-
70-
add_test(utils_tests utils_tests)
71-
72-
set(TEST_TARGET_NAME ${PROJECT_NAME}_v201_utils_tests)
73-
add_executable(${TEST_TARGET_NAME} v201_utils_tests.cpp)
74-
75-
target_link_libraries(${TEST_TARGET_NAME} PRIVATE
76-
ocpp
77-
GTest::gtest_main
78-
)
79-
80-
add_test(${TEST_TARGET_NAME} ${TEST_TARGET_NAME})
43+
if(LIBOCPP_ENABLE_V201)
44+
add_subdirectory(lib/ocpp/v201)
45+
endif()

tests/lib/ocpp/common/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ target_sources(libocpp_unit_tests PRIVATE
33
test_database_migration_files.cpp
44
test_database_schema_updater.cpp
55
test_message_queue.cpp
6+
utils_tests.cpp
67
)
File renamed without changes.

tests/lib/ocpp/common/test_message_queue.cpp

-88
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
#include <gtest/gtest.h>
55
#include <nlohmann/json.hpp>
66
#include <ocpp/common/message_queue.hpp>
7-
#include <ocpp/v16/messages/Authorize.hpp>
8-
#include <ocpp/v16/messages/MeterValues.hpp>
9-
#include <ocpp/v16/messages/SecurityEventNotification.hpp>
10-
#include <ocpp/v16/messages/StartTransaction.hpp>
11-
#include <ocpp/v201/messages/Authorize.hpp>
127

138
namespace ocpp {
149

@@ -136,89 +131,6 @@ bool is_boot_notification_message(const TestMessageType message_type) {
136131
return message_type == TestMessageType::BootNotification;
137132
}
138133

139-
/************************************************************************************************
140-
* ControlMessage
141-
*
142-
* Test implementations of ControlMessage template
143-
*/
144-
class ControlMessageV16Test : public ::testing::Test {
145-
146-
protected:
147-
};
148-
149-
TEST_F(ControlMessageV16Test, test_is_transactional) {
150-
151-
EXPECT_TRUE(is_transaction_message(
152-
ControlMessage<v16::MessageType>{Call<v16::StartTransactionRequest>{v16::StartTransactionRequest{}, "0"}}
153-
.messageType));
154-
EXPECT_TRUE(is_transaction_message(
155-
ControlMessage<v16::MessageType>{Call<v16::StopTransactionRequest>{v16::StopTransactionRequest{}, "0"}}
156-
.messageType));
157-
EXPECT_TRUE(is_transaction_message(ControlMessage<v16::MessageType>{
158-
Call<v16::SecurityEventNotificationRequest>{v16::SecurityEventNotificationRequest{}, "0"}}
159-
.messageType));
160-
EXPECT_TRUE(is_transaction_message(
161-
ControlMessage<v16::MessageType>{Call<v16::MeterValuesRequest>{v16::MeterValuesRequest{}, "0"}}.messageType));
162-
163-
EXPECT_TRUE(!is_transaction_message(
164-
ControlMessage<v16::MessageType>{Call<v16::AuthorizeRequest>{v16::AuthorizeRequest{}, "0"}}.messageType));
165-
}
166-
167-
TEST_F(ControlMessageV16Test, test_is_transactional_update) {
168-
169-
EXPECT_TRUE(
170-
!(ControlMessage<v16::MessageType>{Call<v16::StartTransactionRequest>{v16::StartTransactionRequest{}, "0"}})
171-
.is_transaction_update_message());
172-
EXPECT_TRUE(
173-
!(ControlMessage<v16::MessageType>{Call<v16::StopTransactionRequest>{v16::StopTransactionRequest{}, "0"}})
174-
.is_transaction_update_message());
175-
EXPECT_TRUE(!(ControlMessage<v16::MessageType>{
176-
Call<v16::SecurityEventNotificationRequest>{v16::SecurityEventNotificationRequest{}, "0"}})
177-
.is_transaction_update_message());
178-
EXPECT_TRUE((ControlMessage<v16::MessageType>{Call<v16::MeterValuesRequest>{v16::MeterValuesRequest{}, "0"}})
179-
.is_transaction_update_message());
180-
181-
EXPECT_TRUE(!(ControlMessage<v16::MessageType>{Call<v16::AuthorizeRequest>{v16::AuthorizeRequest{}, "0"}})
182-
.is_transaction_update_message());
183-
}
184-
185-
class ControlMessageV201Test : public ::testing::Test {
186-
187-
protected:
188-
};
189-
190-
TEST_F(ControlMessageV201Test, test_is_transactional) {
191-
192-
EXPECT_TRUE(is_transaction_message(
193-
ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{v201::TransactionEventRequest{}, "0"}}
194-
.messageType));
195-
196-
EXPECT_TRUE(!is_transaction_message(
197-
ControlMessage<v201::MessageType>{Call<v201::AuthorizeRequest>{v201::AuthorizeRequest{}, "0"}}.messageType));
198-
}
199-
200-
TEST_F(ControlMessageV201Test, test_is_transactional_update) {
201-
202-
v201::TransactionEventRequest transaction_event_request{};
203-
transaction_event_request.eventType = v201::TransactionEventEnum::Updated;
204-
205-
EXPECT_TRUE((ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}})
206-
.is_transaction_update_message());
207-
208-
transaction_event_request.eventType = v201::TransactionEventEnum::Started;
209-
EXPECT_TRUE(
210-
!(ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}})
211-
.is_transaction_update_message());
212-
213-
transaction_event_request.eventType = v201::TransactionEventEnum::Ended;
214-
EXPECT_TRUE(
215-
!(ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}})
216-
.is_transaction_update_message());
217-
218-
EXPECT_TRUE(!(ControlMessage<v201::MessageType>{Call<v201::AuthorizeRequest>{v201::AuthorizeRequest{}, "0"}})
219-
.is_transaction_update_message());
220-
}
221-
222134
/************************************************************************************************
223135
* MessageQueueTest
224136
*/
File renamed without changes.

tests/lib/ocpp/v16/CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1+
target_include_directories(libocpp_unit_tests PUBLIC
2+
${CMAKE_CURRENT_SOURCE_DIR}
3+
)
4+
15
target_sources(libocpp_unit_tests PRIVATE
26
profile_tests_common.cpp
37
profile_testsA.cpp
48
profile_testsB.cpp
59
profile_testsC.cpp
610
test_database_migration_files.cpp
711
test_smart_charging_handler.cpp
8-
)
12+
database_tests.cpp
13+
test_message_queue.cpp
14+
)
File renamed without changes.
File renamed without changes.
+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// Copyright 2020 - 2024 Pionix GmbH and Contributors to EVerest
3+
4+
#include <gmock/gmock.h>
5+
#include <gtest/gtest.h>
6+
7+
#include <ocpp/common/message_queue.hpp>
8+
#include <ocpp/v16/messages/Authorize.hpp>
9+
#include <ocpp/v16/messages/MeterValues.hpp>
10+
#include <ocpp/v16/messages/SecurityEventNotification.hpp>
11+
#include <ocpp/v16/messages/StartTransaction.hpp>
12+
13+
namespace ocpp {
14+
15+
namespace v16 {
16+
17+
/************************************************************************************************
18+
* ControlMessage
19+
*
20+
* Test implementations of ControlMessage template
21+
*/
22+
class ControlMessageV16Test : public ::testing::Test {
23+
24+
protected:
25+
};
26+
27+
TEST_F(ControlMessageV16Test, test_is_transactional) {
28+
29+
EXPECT_TRUE(is_transaction_message(
30+
(ControlMessage<v16::MessageType>{Call<v16::StartTransactionRequest>{v16::StartTransactionRequest{}, "0"}}
31+
.messageType)));
32+
EXPECT_TRUE(is_transaction_message(
33+
(ControlMessage<v16::MessageType>{Call<v16::StopTransactionRequest>{v16::StopTransactionRequest{}, "0"}}
34+
.messageType)));
35+
EXPECT_TRUE(is_transaction_message(ControlMessage<v16::MessageType>{
36+
Call<v16::SecurityEventNotificationRequest>{v16::SecurityEventNotificationRequest{}, "0"}}
37+
.messageType));
38+
EXPECT_TRUE(is_transaction_message(
39+
ControlMessage<v16::MessageType>{Call<v16::MeterValuesRequest>{v16::MeterValuesRequest{}, "0"}}.messageType));
40+
EXPECT_TRUE(!is_transaction_message(
41+
ControlMessage<v16::MessageType>{Call<v16::AuthorizeRequest>{v16::AuthorizeRequest{}, "0"}}.messageType));
42+
}
43+
44+
TEST_F(ControlMessageV16Test, test_is_transactional_update) {
45+
46+
EXPECT_TRUE(
47+
!(ControlMessage<v16::MessageType>{Call<v16::StartTransactionRequest>{v16::StartTransactionRequest{}, "0"}})
48+
.is_transaction_update_message());
49+
EXPECT_TRUE(
50+
!(ControlMessage<v16::MessageType>{Call<v16::StopTransactionRequest>{v16::StopTransactionRequest{}, "0"}})
51+
.is_transaction_update_message());
52+
EXPECT_TRUE(!(ControlMessage<v16::MessageType>{
53+
Call<v16::SecurityEventNotificationRequest>{v16::SecurityEventNotificationRequest{}, "0"}})
54+
.is_transaction_update_message());
55+
EXPECT_TRUE((ControlMessage<v16::MessageType>{Call<v16::MeterValuesRequest>{v16::MeterValuesRequest{}, "0"}})
56+
.is_transaction_update_message());
57+
58+
EXPECT_TRUE(!(ControlMessage<v16::MessageType>{Call<v16::AuthorizeRequest>{v16::AuthorizeRequest{}, "0"}})
59+
.is_transaction_update_message());
60+
}
61+
62+
} // namespace v16
63+
} // namespace ocpp

tests/lib/ocpp/v201/CMakeLists.txt

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
target_include_directories(libocpp_unit_tests PUBLIC mocks)
1+
target_include_directories(libocpp_unit_tests PUBLIC
2+
mocks
3+
${CMAKE_CURRENT_SOURCE_DIR})
24

35
target_sources(libocpp_unit_tests PRIVATE
46
test_database_migration_files.cpp
@@ -7,4 +9,7 @@ target_sources(libocpp_unit_tests PRIVATE
79
test_ocsp_updater.cpp
810
test_component_state_manager.cpp
911
test_device_model.cpp
10-
test_smart_charging_handler.cpp)
12+
test_smart_charging_handler.cpp
13+
utils_tests.cpp
14+
comparators.cpp
15+
test_message_queue.cpp)
File renamed without changes.
File renamed without changes.
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// Copyright 2020 - 2023 Pionix GmbH and Contributors to EVerest
3+
4+
#include <gtest/gtest.h>
5+
6+
#include <ocpp/common/message_queue.hpp>
7+
#include <ocpp/v201/messages/Authorize.hpp>
8+
9+
namespace ocpp {
10+
11+
namespace v201 {
12+
13+
class ControlMessageV201Test : public ::testing::Test {
14+
15+
protected:
16+
};
17+
18+
TEST_F(ControlMessageV201Test, test_is_transactional) {
19+
20+
EXPECT_TRUE(is_transaction_message(
21+
(ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{v201::TransactionEventRequest{}, "0"}}
22+
.messageType)));
23+
24+
EXPECT_TRUE(!is_transaction_message(
25+
ControlMessage<v201::MessageType>{Call<v201::AuthorizeRequest>{v201::AuthorizeRequest{}, "0"}}.messageType));
26+
}
27+
28+
TEST_F(ControlMessageV201Test, test_is_transactional_update) {
29+
30+
v201::TransactionEventRequest transaction_event_request{};
31+
transaction_event_request.eventType = v201::TransactionEventEnum::Updated;
32+
33+
EXPECT_TRUE((ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}}
34+
.is_transaction_update_message()));
35+
36+
transaction_event_request.eventType = v201::TransactionEventEnum::Started;
37+
EXPECT_TRUE(!(ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}}
38+
.is_transaction_update_message()));
39+
40+
transaction_event_request.eventType = v201::TransactionEventEnum::Ended;
41+
EXPECT_TRUE(!(ControlMessage<v201::MessageType>{Call<v201::TransactionEventRequest>{transaction_event_request, "0"}}
42+
.is_transaction_update_message()));
43+
44+
EXPECT_TRUE(!(ControlMessage<v201::MessageType>{Call<v201::AuthorizeRequest>{v201::AuthorizeRequest{}, "0"}}
45+
.is_transaction_update_message()));
46+
}
47+
48+
} // namespace v201
49+
} // namespace ocpp
File renamed without changes.

0 commit comments

Comments
 (0)