diff --git a/generator/generator_tests/intermediate_data_test.cpp b/generator/generator_tests/intermediate_data_test.cpp index 7bf0305..8a4d2cc 100644 --- a/generator/generator_tests/intermediate_data_test.cpp +++ b/generator/generator_tests/intermediate_data_test.cpp @@ -208,3 +208,32 @@ UNIT_TEST(IntermediateData_WaysGenerationTest) TEST_EQUAL(intermediateWay.nodes.size(), ways[0].Nodes().size(), ()); }); } + +UNIT_TEST(IntermediateData_RelationsGenerationTest) +{ + auto const osmSamples = std::map{ + {"xml", relation_xml_data}, + {"o5m", {std::begin(relation_o5m_data), std::end(relation_o5m_data)}}}; + + TestIntermediateDataGeneration( + osmSamples, [](auto && osmElements, auto && intermediateData) + { + auto relations = std::vector{}; + std::copy_if( + osmElements.begin(), osmElements.end(), std::back_inserter(relations), [](auto && e) + { + return e.m_type == OsmElement::EntityType::Relation; + }); + TEST_EQUAL(relations.size(), 1, ()); + TEST_EQUAL(relations[0].m_id, 273177, ()); + + auto intermediateWay = WayElement{273163}; + TEST(intermediateData.GetWay(273163, intermediateWay), ()); + + auto relationTesting = [](auto && relationId, auto && /* reader */) { + TEST_EQUAL(relationId, 273177, ()); + return base::ControlFlow::Continue; + }; + intermediateData.ForEachRelationByWayCached(273163, relationTesting); + }); +} diff --git a/generator/generator_tests/source_data.cpp b/generator/generator_tests/source_data.cpp index e55e841..4df52c2 100644 --- a/generator/generator_tests/source_data.cpp +++ b/generator/generator_tests/source_data.cpp @@ -68,7 +68,8 @@ char const way_xml_data[] = R"#( -)#"; + +)#"; // binary data: way.o5m @@ -87,56 +88,56 @@ unsigned char const way_o5m_data[/* 175 */] = { static_assert(sizeof(way_o5m_data) == 175, "Size check failed"); -char const relation_xml_data[] = "\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -\ -"; +char const relation_xml_data[] = R"#( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +)#"; // binary data: relation.o5m -unsigned char const relation_o5m_data[] = /* 224 */ -{0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x2B, 0xD7, 0xAC, 0x21, 0x00, 0xAD, - 0xCF, 0xFC, 0x87, 0x0A, 0xA6, 0xCE, 0x88, 0xC3, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, 0x00, 0x70, 0x6C, 0x61, - 0x63, 0x65, 0x00, 0x74, 0x6F, 0x77, 0x6E, 0x00, 0x10, 0x07, 0x2C, 0x00, 0x9A, 0x90, 0x24, - 0xD9, 0x68, 0x10, 0x08, 0x04, 0x00, 0xDE, 0xCD, 0x1E, 0xF7, 0xF6, 0x15, 0x10, 0x08, 0x04, - 0x00, 0x91, 0xD3, 0x2A, 0xFB, 0xCC, 0x11, 0x10, 0x08, 0x04, 0x00, 0xE7, 0x95, 0x60, 0xFE, - 0x9A, 0x02, 0x10, 0x08, 0x04, 0x00, 0x97, 0xDE, 0x13, 0xC0, 0xA7, 0x0F, 0x10, 0x08, 0x04, - 0x00, 0xB6, 0x9E, 0x14, 0xD2, 0xC3, 0x19, 0x10, 0x08, 0x04, 0x00, 0xA6, 0x8F, 0x22, 0xE0, - 0xDD, 0x16, 0x10, 0x07, 0x02, 0x00, 0xA6, 0xF6, 0x19, 0x9F, 0x49, 0xFF, 0x11, 0x10, 0x95, - 0xAC, 0x21, 0x00, 0x0B, 0x91, 0xAC, 0x21, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x1A, - 0xFF, 0x12, 0x46, 0xB1, 0xAC, 0x21, 0x00, 0x11, 0x95, 0xAC, 0x21, 0x00, 0x31, 0x6F, 0x75, - 0x74, 0x65, 0x72, 0x00, 0xD7, 0xAC, 0x21, 0x00, 0x30, 0x00, 0x00, 0x6E, 0x61, 0x6D, 0x65, - 0x00, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, 0x00, 0x70, 0x6C, - 0x61, 0x63, 0x65, 0x00, 0x74, 0x6F, 0x77, 0x6E, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x00, - 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6F, 0x6C, 0x79, 0x67, 0x6F, 0x6E, 0x00, 0xFE}; +unsigned char const relation_o5m_data[/* 224 */] = { + 0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x0E, 0x92, 0xAC, 0x21, 0x00, 0xC6, 0x94, + 0x88, 0x88, 0x0A, 0xA8, 0xBC, 0xA1, 0xC3, 0x04, 0x10, 0x07, 0x02, 0x00, 0xA6, 0xF6, 0x19, 0xA0, + 0x49, 0x10, 0x08, 0x04, 0x00, 0xA6, 0x8F, 0x22, 0xDF, 0xDD, 0x16, 0x10, 0x08, 0x04, 0x00, 0xB6, + 0x9E, 0x14, 0xD1, 0xC3, 0x19, 0x10, 0x08, 0x04, 0x00, 0x97, 0xDE, 0x13, 0xBF, 0xA7, 0x0F, 0x10, + 0x08, 0x04, 0x00, 0xE7, 0x95, 0x60, 0xFD, 0x9A, 0x02, 0x10, 0x08, 0x04, 0x00, 0x91, 0xD3, 0x2A, + 0xFC, 0xCC, 0x11, 0x10, 0x08, 0x04, 0x00, 0xDE, 0xCD, 0x1E, 0xF8, 0xF6, 0x15, 0x10, 0x24, 0x2C, + 0x00, 0x9A, 0x90, 0x24, 0xDA, 0x68, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, 0x00, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x00, 0x74, 0x6F, + 0x77, 0x6E, 0x00, 0xFF, 0x11, 0x10, 0x96, 0xAC, 0x21, 0x00, 0x0B, 0x92, 0xAC, 0x21, 0x02, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x19, 0xFF, 0x12, 0x46, 0xB2, 0xAC, 0x21, 0x00, 0x11, 0x96, 0xAC, + 0x21, 0x00, 0x31, 0x6F, 0x75, 0x74, 0x65, 0x72, 0x00, 0xD8, 0xAC, 0x21, 0x00, 0x30, 0x00, 0x00, + 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, + 0x00, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x00, 0x74, 0x6F, 0x77, 0x6E, 0x00, 0x00, 0x74, 0x79, 0x70, + 0x65, 0x00, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6F, 0x6C, 0x79, 0x67, 0x6F, 0x6E, 0x00, 0xFE}; static_assert(sizeof(relation_o5m_data) == 224, "Size check failed");