#include "CDModularBuildComponentTable.h" #include // ModularBuildComponent's xml, laid out as the cdclient has it (a car: root part 0; a rocket: root part 2) namespace { constexpr std::string_view CAR_XML = R"( )"; constexpr std::string_view ROCKET_XML = "\r\n \r\n" " \r\n\t\t\r\n\t\t\r\n \r\n" "\t\t\r\n\t\t\t \r\n\t\t\t \r\n\t\t\r\n" "\t\t\r\n\t\t\t \r\n\t\t\t \r\n\t\t\r\n"; } TEST(ModularBuildTableTests, ReadsPartsAndRootPartFromTheXml) { CDModularBuildComponent car; CDModularBuildComponentTable::ParseXml(CAR_XML, car); EXPECT_EQ(car.numberOfParts, 7u); EXPECT_EQ(car.rootPartExampleLOT, 8129); CDModularBuildComponent rocket; CDModularBuildComponentTable::ParseXml(ROCKET_XML, rocket); EXPECT_EQ(rocket.numberOfParts, 3u); EXPECT_EQ(rocket.rootPartExampleLOT, 4715); CDModularBuildComponent empty; CDModularBuildComponentTable::ParseXml("", empty); EXPECT_EQ(empty.numberOfParts, 0u); EXPECT_EQ(empty.rootPartExampleLOT, LOT_NULL); } TEST(ModularBuildTableTests, FindsTheBuildByItsNumberOfParts) { const std::vector builds = { { .id = 5, .buildType = 6, .createdLOT = 8092, .numberOfParts = 7, .rootPartExampleLOT = 8129 }, { .id = 6, .buildType = 3, .createdLOT = 6416, .numberOfParts = 3, .rootPartExampleLOT = 4715 }, { .id = 3, .buildType = 3, .createdLOT = 6416, .numberOfParts = 3, .rootPartExampleLOT = 4715 }, }; EXPECT_EQ(CDModularBuildComponentTable::FindByNumberOfParts(builds, 7)->createdLOT, 8092); EXPECT_EQ(CDModularBuildComponentTable::FindByNumberOfParts(builds, 3)->createdLOT, 6416); for (const uint32_t parts : { 0u, 4u, 5u, 6u, 8u }) { EXPECT_FALSE(CDModularBuildComponentTable::FindByNumberOfParts(builds, parts).has_value()); } }