From 56a90b9b9462ddf44250bf6533171b9cae710144 Mon Sep 17 00:00:00 2001 From: kpetridis <petridkon@gmail.com> Date: Wed, 6 Apr 2022 12:10:19 +0300 Subject: [PATCH] Added all unit tests for testing each branch separately --- test/Services/RealTimeForwardingControl.cpp | 253 ++++++++++++++++++++ 1 file changed, 253 insertions(+) diff --git a/test/Services/RealTimeForwardingControl.cpp b/test/Services/RealTimeForwardingControl.cpp index fc81d9e1..e1cfb9c9 100644 --- a/test/Services/RealTimeForwardingControl.cpp +++ b/test/Services/RealTimeForwardingControl.cpp @@ -270,6 +270,120 @@ void messageNotInApplication(Message& request) { } } +void deleteValidReportTypes(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 2; + uint8_t numOfMessagesPerService = 1; + + request.appendUint8(numOfApplications); + + for (auto appID : applications) { + request.appendUint8(appID); + request.appendUint8(numOfServicesPerApp); + + for (uint8_t j = 0; j < numOfServicesPerApp; j++) { + uint8_t serviceType = services[j]; + request.appendUint8(serviceType); + request.appendUint8(numOfMessagesPerService); + + for (uint8_t k = 0; k < numOfMessagesPerService; k++) { + request.appendUint8(messages1[k]); + } + } + } +} + +void deleteReportEmptyService(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 1; + uint8_t numOfMessagesPerService = 2; + + request.appendUint8(numOfApplications); + + for (auto appID : applications) { + request.appendUint8(appID); + request.appendUint8(numOfServicesPerApp); + + for (uint8_t j = 0; j < numOfServicesPerApp; j++) { + uint8_t serviceType = services[j]; + request.appendUint8(serviceType); + request.appendUint8(numOfMessagesPerService); + + for (uint8_t k = 0; k < numOfMessagesPerService; k++) { + request.appendUint8(messages1[k]); + } + } + } +} + +void deleteReportEmptyApplication(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 2; + uint8_t numOfMessagesPerService = 2; + + request.appendUint8(numOfApplications); + + for (auto appID : applications) { + request.appendUint8(appID); + request.appendUint8(numOfServicesPerApp); + + for (uint8_t j = 0; j < numOfServicesPerApp; j++) { + uint8_t serviceType = services[j]; + request.appendUint8(serviceType); + request.appendUint8(numOfMessagesPerService); + + for (uint8_t k = 0; k < numOfMessagesPerService; k++) { + request.appendUint8(messages1[k]); + } + } + } +} + +void deleteApplicationProcess(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 0; + + request.appendUint8(numOfApplications); + request.appendUint8(applications[0]); + request.appendUint8(numOfServicesPerApp); +} + +void deleteService(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 1; + uint8_t numOfMessagesPerService = 0; + + request.appendUint8(numOfApplications); + for (auto appID : applications) { + request.appendUint8(appID); + request.appendUint8(numOfServicesPerApp); + + for (uint8_t j = 0; j < numOfServicesPerApp; j++) { + uint8_t serviceType = services[j]; + request.appendUint8(serviceType); + request.appendUint8(numOfMessagesPerService); + } + } +} + +void deleteServiceEmptyApplication(Message& request) { + uint8_t numOfApplications = 1; + uint8_t numOfServicesPerApp = 2; + uint8_t numOfMessagesPerService = 0; + + request.appendUint8(numOfApplications); + for (auto appID : applications) { + request.appendUint8(appID); + request.appendUint8(numOfServicesPerApp); + + for (uint8_t j = 0; j < numOfServicesPerApp; j++) { + uint8_t serviceType = services[j]; + request.appendUint8(serviceType); + request.appendUint8(numOfMessagesPerService); + } + } +} + void resetAppProcessConfiguration() { realTimeForwarding.applicationProcessConfiguration.definitions.clear(); REQUIRE(realTimeForwarding.applicationProcessConfiguration.definitions.empty()); @@ -738,4 +852,143 @@ TEST_CASE("Delete report types from the Application Process Configuration") { ServiceTests::reset(); Services.reset(); } + + SECTION("Valid deletion of report types from the application process configuration") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + uint8_t applicationID = 1; + deleteValidReportTypes(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses[applicationID].size() == 2); + REQUIRE(applicationProcesses[applicationID][services[0]].size() == 1); + REQUIRE(applicationProcesses[applicationID][services[1]].size() == 1); + REQUIRE(isNotEmpty[applicationID].size() == 2); + REQUIRE(isNotEmpty[applicationID][services[0]] == true); + REQUIRE(isNotEmpty[applicationID][services[1]] == true); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } + + SECTION("Report type deletion, results in empty service type") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + uint8_t applicationID = 1; + deleteReportEmptyService(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses[applicationID].size() == 1); + REQUIRE(isNotEmpty[applicationID].size() == 1); + REQUIRE(applicationProcesses[applicationID].find(services[1]) != applicationProcesses[applicationID].end()); + REQUIRE(isNotEmpty[applicationID].find(services[1]) != isNotEmpty[applicationID].end()); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } + + SECTION("Report type deletion, results in empty application process definition") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + uint8_t applicationID = 1; + deleteReportEmptyApplication(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses.empty()); + REQUIRE(isNotEmpty.empty()); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } + + SECTION("Delete an application process, from the application process configuration") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + deleteApplicationProcess(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses.empty()); + REQUIRE(isNotEmpty.empty()); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } + + SECTION("Delete a service type, from the application process configuration") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + uint8_t applicationID = 1; + deleteService(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses[applicationID].size() == 1); + REQUIRE(isNotEmpty[applicationID].size() == 1); + REQUIRE(applicationProcesses[applicationID].find(services[0]) == applicationProcesses[applicationID].end()); + REQUIRE(isNotEmpty[applicationID].find(services[0]) == isNotEmpty[applicationID].end()); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } + + SECTION("Service type deletion, results in empty application process") { + Message request(RealTimeForwardingControlService::ServiceType, + RealTimeForwardingControlService::MessageType::DeleteReportTypesFromAppProcessConfiguration, + Message::TC, 1); + uint8_t applicationID = 1; + deleteServiceEmptyApplication(request); + initializeAppProcessConfig(); + + MessageParser::execute(request); + + CHECK(ServiceTests::count() == 0); + auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; + auto& isNotEmpty = realTimeForwarding.applicationProcessConfiguration.notEmpty; + + REQUIRE(applicationProcesses.empty()); + REQUIRE(isNotEmpty.empty()); + + resetAppProcessConfiguration(); + ServiceTests::reset(); + Services.reset(); + } } -- GitLab