// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include #include "agents/settings/Settings.hpp" #include #include #include #include // for Message_t, ResponseMessage, DataMessage, Message #include #include #include #include #include "test-service-db-settings-testmsgs.hpp" #include "test-service-db-settings-testservices.hpp" #include "test-service-db-settings-testapps.hpp" struct vfs_initializer { vfs_initializer() { vfs.Init(); } } vfs_init; TEST_CASE("SettingsApi") { SECTION("variable/profile/mode register/set/get/unregister") { std::shared_ptr manager = std::make_shared(5000); std::shared_ptr varWritter; std::shared_ptr varReader; std::shared_ptr testVar; std::shared_ptr profWritter; std::shared_ptr profReader; std::shared_ptr testProf; std::shared_ptr testStart; std::shared_ptr modeWritter; std::shared_ptr modeReader; std::shared_ptr testMode; manager->StartSystem([manager, &varWritter, &varReader, &testVar, &profWritter, &profReader, &testProf, &modeWritter, &modeReader, &testMode, &testStart]() { // preliminary testStart = std::make_shared(); testStart->lock(); std::cout << "start thr_id: " << std::this_thread::get_id() << std::endl << std::flush; auto ret = sys::SystemManager::CreateService(std::make_shared(service::name::evt_manager), manager.get()); ret &= sys::SystemManager::CreateService(std::make_shared(), manager.get()); varWritter = std::make_shared("writterVar"); varReader = std::make_shared("readerVar"); ret &= sys::SystemManager::CreateService(varWritter, manager.get()); ret &= sys::SystemManager::CreateService(varReader, manager.get()); testVar = std::make_shared("appTest", varWritter, varReader, testStart); ret &= sys::SystemManager::CreateService(testVar, manager.get()); profWritter = std::make_shared("writterProf"); profReader = std::make_shared("readerProf"); ret &= sys::SystemManager::CreateService(profWritter, manager.get()); ret &= sys::SystemManager::CreateService(profReader, manager.get()); testProf = std::make_shared("appTestProfile", profWritter, profReader, testStart); ret &= sys::SystemManager::CreateService(testProf, manager.get()); modeWritter = std::make_shared("writterMode"); modeReader = std::make_shared("readerMode"); ret &= sys::SystemManager::CreateService(modeWritter, manager.get()); ret &= sys::SystemManager::CreateService(modeReader, manager.get()); testMode = std::make_shared("appTestMode", modeWritter, modeReader, testStart); ret &= sys::SystemManager::CreateService(testMode, manager.get()); std::cout << "koniec start thr_id: " << std::this_thread::get_id() << std::endl << std::flush; testStart->unlock(); auto msgStart = std::make_shared(); sys::Bus::SendUnicast(std::move(msgStart), "appTest", manager.get()); msgStart = std::make_shared(); sys::Bus::SendUnicast(std::move(msgStart), "appTestProfile", manager.get()); msgStart = std::make_shared(); sys::Bus::SendUnicast(std::move(msgStart), "appTestMode", manager.get()); return ret; }); // start application cpp_freertos::Thread::StartScheduler(); // check the results std::cout << "testVar values:" << std::endl << std::flush; for (auto s : testVar->v) std::cout << s << std::endl << std::flush; REQUIRE(testVar->v.size() == 3); REQUIRE(testVar->v[1] == testVar->v[0] + "1"); REQUIRE(testVar->v[2] == testVar->v[1] + "2"); // check the result std::cout << "testProf values:" << std::endl << std::flush; for (auto s : testProf->v) std::cout << s << std::endl << std::flush; REQUIRE(testProf->v[1] == testProf->v[0] + "1"); REQUIRE(testProf->v[2] == testProf->v[0] + "12"); REQUIRE(testProf->v[3] == "other"); REQUIRE(testProf->v[4] == "other"); std::cout << "testMode values:" << std::endl << std::flush; for (auto s : testMode->v) std::cout << s << std::endl << std::flush; REQUIRE(testMode->v[1] == testMode->v[0] + "1"); REQUIRE(testMode->v[2] == testMode->v[0] + "12"); REQUIRE(testMode->v[3] == "other"); REQUIRE(testMode->v[4] == "other"); } }