diff --git a/generator/generator.pro b/generator/generator.pro index 6d4f6cc0a4..f64455cb40 100644 --- a/generator/generator.pro +++ b/generator/generator.pro @@ -60,7 +60,6 @@ HEADERS += \ osm_xml_parser.hpp \ polygonizer.hpp \ routing_generator.hpp \ - source_reader.hpp \ statistics.hpp \ tesselator.hpp \ unpack_mwm.hpp \ diff --git a/generator/generator_tests/generator_tests.pro b/generator/generator_tests/generator_tests.pro index 2c1df729c1..b9c138ed74 100644 --- a/generator/generator_tests/generator_tests.pro +++ b/generator/generator_tests/generator_tests.pro @@ -19,18 +19,21 @@ macx-*: LIBS *= "-framework Foundation" INCLUDEPATH *= $$ROOT_DIR/3party/expat/lib HEADERS += \ + source_data.hpp \ SOURCES += \ ../../testing/testingmain.cpp \ - check_mwms.cpp \ - classificator_tests.cpp \ - coasts_test.cpp \ - feature_builder_test.cpp \ - feature_merger_test.cpp \ - metadata_test.cpp \ - osm_id_test.cpp \ +# check_mwms.cpp \ +# classificator_tests.cpp \ +# coasts_test.cpp \ +# feature_builder_test.cpp \ +# feature_merger_test.cpp \ +# metadata_test.cpp \ +# osm_id_test.cpp \ osm_o5m_source_test.cpp \ - osm_parser_test.cpp \ - osm_type_test.cpp \ - tesselator_test.cpp \ - triangles_tree_coding_test.cpp \ +# osm_parser_test.cpp \ +# osm_type_test.cpp \ +# tesselator_test.cpp \ +# triangles_tree_coding_test.cpp \ + source_to_element_test.cpp \ + source_data.cpp \ diff --git a/generator/generator_tests/osm_o5m_source_test.cpp b/generator/generator_tests/osm_o5m_source_test.cpp index c1c8a24c16..e87cb7e354 100644 --- a/generator/generator_tests/osm_o5m_source_test.cpp +++ b/generator/generator_tests/osm_o5m_source_test.cpp @@ -11,155 +11,7 @@ #include "std/iterator.hpp" #include "std/set.hpp" -/* - - - - - - - - - - - */ - -// binary data: node.o5m -uint8_t node_o5m_data[] = /* 92 */ - {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x51, 0xA1, 0xAB, 0x21, 0x00, 0xCD, 0xE6, - 0xD7, 0x80, 0x0A, 0xBE, 0xCE, 0x82, 0xD1, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9F, - 0xD1, 0x80, 0xD0, 0xBE, 0xD0, 0xB4, 0xD1, 0x83, 0xD0, 0xBA, 0xD1, 0x82, 0xD0, 0xBE, 0xD0, 0xB2, - 0xD1, 0x8B, 0xD0, 0xB9, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x67, 0x5F, 0x68, 0x6F, - 0x75, 0x72, 0x73, 0x00, 0x32, 0x34, 0x2F, 0x37, 0x00, 0x00, 0x73, 0x68, 0x6F, 0x70, 0x00, 0x63, - 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 0x65, 0x00, 0xFE}; -static_assert(sizeof(node_o5m_data) == 92, "Size check failed"); - -/* - - - - - - - - - */ - -// binary data: node2.o5m -uint8_t node2_o5m_data[] = /* 93 */ - {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x52, 0x94, 0xDD, 0xF4, 0xE9, 0x03, 0x08, - 0xD6, 0xBD, 0xEF, 0xFE, 0x09, 0xF0, 0x87, 0xC0, 0x0B, 0x00, 0xBF, 0x8E, 0x18, 0x00, 0x58, 0x6D, - 0x79, 0x70, 0x62, 0x6C, 0x75, 0x00, 0xA0, 0xCC, 0xDA, 0xF1, 0x02, 0xAC, 0xEB, 0xB3, 0x8D, 0x04, - 0x00, 0x61, 0x6D, 0x65, 0x6E, 0x69, 0x74, 0x79, 0x00, 0x63, 0x69, 0x6E, 0x65, 0x6D, 0x61, 0x00, - 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9A, 0xD0, 0xA2, 0x20, 0xD0, 0x93, 0xD0, 0xBE, 0xD1, - 0x80, 0xD0, 0xB8, 0xD0, 0xB7, 0xD0, 0xBE, 0xD0, 0xBD, 0xD1, 0x82, 0x00, 0xFE}; -static_assert(sizeof(node2_o5m_data) == 93, "Size check failed"); - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -// binary data: way.o5m -uint8_t way_o5m_data[] = /* 175 */ - {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x0E, 0xE9, 0xAB, 0x21, 0x00, 0xC5, 0x94, - 0x88, 0x88, 0x0A, 0x8C, 0xB1, 0x9D, 0xC3, 0x04, 0x10, 0x08, 0x04, 0x00, 0x9C, 0x8F, 0x0A, 0x87, - 0xE7, 0x05, 0x10, 0x07, 0x04, 0x00, 0xF6, 0x4A, 0xFD, 0x92, 0x03, 0x10, 0x08, 0x04, 0x00, 0xF6, - 0xA1, 0x04, 0xF5, 0x80, 0x04, 0x10, 0x08, 0x04, 0x00, 0xB4, 0xB6, 0x02, 0x89, 0xBB, 0x06, 0x10, - 0x08, 0x04, 0x00, 0xB4, 0xEC, 0x03, 0xD9, 0xCC, 0x03, 0x10, 0x08, 0x04, 0x00, 0xD6, 0xC0, 0x01, - 0xB7, 0x83, 0x03, 0x10, 0x08, 0x06, 0x00, 0xDB, 0xAB, 0x02, 0x9F, 0xFE, 0x02, 0x10, 0x08, 0x02, - 0x00, 0x87, 0xAD, 0x05, 0xEB, 0xA5, 0x04, 0xFF, 0x11, 0x44, 0xCD, 0xAB, 0x21, 0x00, 0x0B, 0xC9, - 0xAB, 0x21, 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, - 0x59, 0x75, 0x6B, 0x6F, 0x6E, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, 0x00, 0x00, 0x6E, 0x61, 0x6D, - 0x65, 0x3A, 0x72, 0x75, 0x00, 0xD0, 0xAE, 0xD0, 0xBA, 0xD0, 0xBE, 0xD0, 0xBD, 0x00, 0x00, 0x77, - 0x61, 0x74, 0x65, 0x72, 0x77, 0x61, 0x79, 0x00, 0x72, 0x69, 0x76, 0x65, 0x72, 0x00, 0xFE}; -static_assert(sizeof(way_o5m_data) == 175, "Size check failed"); - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -// binary data: relation.o5m -uint8_t 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}; -static_assert(sizeof(relation_o5m_data) == 224, "Size check failed"); +#include "source_data.hpp" UNIT_TEST(OSM_O5M_Source_Node_read_test) diff --git a/generator/generator_tests/source_data.cpp b/generator/generator_tests/source_data.cpp new file mode 100644 index 0000000000..075faa79d4 --- /dev/null +++ b/generator/generator_tests/source_data.cpp @@ -0,0 +1,148 @@ +// +// source_data.cpp +// generator_tool +// +// Created by Sergey Yershov on 06.08.15. +// Copyright (c) 2015 maps.me. All rights reserved. +// + +#include "source_data.hpp" + +char const node_xml_data[] = "\ +\ +\ +\ +\ +\ +\ +"; + +// binary data: node.o5m +unsigned char const node_o5m_data[] = /* 92 */ { + 0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x51, 0xA1, 0xAB, 0x21, 0x00, 0xCD, 0xE6, + 0xD7, 0x80, 0x0A, 0xBE, 0xCE, 0x82, 0xD1, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9F, + 0xD1, 0x80, 0xD0, 0xBE, 0xD0, 0xB4, 0xD1, 0x83, 0xD0, 0xBA, 0xD1, 0x82, 0xD0, 0xBE, 0xD0, 0xB2, + 0xD1, 0x8B, 0xD0, 0xB9, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x67, 0x5F, 0x68, 0x6F, + 0x75, 0x72, 0x73, 0x00, 0x32, 0x34, 0x2F, 0x37, 0x00, 0x00, 0x73, 0x68, 0x6F, 0x70, 0x00, 0x63, + 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 0x65, 0x00, 0xFE +}; +static_assert(sizeof(node_o5m_data) == 92, "Size check failed"); + + +char const node2_xml_data[] = "\ +\ +\ +\ +\ +\ +"; + +// binary data: node2.o5m +unsigned char const node2_o5m_data[] = /* 93 */ +{0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x52, 0x94, 0xDD, 0xF4, 0xE9, 0x03, 0x08, + 0xD6, 0xBD, 0xEF, 0xFE, 0x09, 0xF0, 0x87, 0xC0, 0x0B, 0x00, 0xBF, 0x8E, 0x18, 0x00, 0x58, 0x6D, + 0x79, 0x70, 0x62, 0x6C, 0x75, 0x00, 0xA0, 0xCC, 0xDA, 0xF1, 0x02, 0xAC, 0xEB, 0xB3, 0x8D, 0x04, + 0x00, 0x61, 0x6D, 0x65, 0x6E, 0x69, 0x74, 0x79, 0x00, 0x63, 0x69, 0x6E, 0x65, 0x6D, 0x61, 0x00, + 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9A, 0xD0, 0xA2, 0x20, 0xD0, 0x93, 0xD0, 0xBE, 0xD1, + 0x80, 0xD0, 0xB8, 0xD0, 0xB7, 0xD0, 0xBE, 0xD0, 0xBD, 0xD1, 0x82, 0x00, 0xFE}; +static_assert(sizeof(node2_o5m_data) == 93, "Size check failed"); + + +char const way_xml_data[] = "\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +"; + + +// binary data: way.o5m +unsigned char const way_o5m_data[] = /* 175 */ +{0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x0E, 0xE9, 0xAB, 0x21, 0x00, 0xC5, 0x94, + 0x88, 0x88, 0x0A, 0x8C, 0xB1, 0x9D, 0xC3, 0x04, 0x10, 0x08, 0x04, 0x00, 0x9C, 0x8F, 0x0A, 0x87, + 0xE7, 0x05, 0x10, 0x07, 0x04, 0x00, 0xF6, 0x4A, 0xFD, 0x92, 0x03, 0x10, 0x08, 0x04, 0x00, 0xF6, + 0xA1, 0x04, 0xF5, 0x80, 0x04, 0x10, 0x08, 0x04, 0x00, 0xB4, 0xB6, 0x02, 0x89, 0xBB, 0x06, 0x10, + 0x08, 0x04, 0x00, 0xB4, 0xEC, 0x03, 0xD9, 0xCC, 0x03, 0x10, 0x08, 0x04, 0x00, 0xD6, 0xC0, 0x01, + 0xB7, 0x83, 0x03, 0x10, 0x08, 0x06, 0x00, 0xDB, 0xAB, 0x02, 0x9F, 0xFE, 0x02, 0x10, 0x08, 0x02, + 0x00, 0x87, 0xAD, 0x05, 0xEB, 0xA5, 0x04, 0xFF, 0x11, 0x44, 0xCD, 0xAB, 0x21, 0x00, 0x0B, 0xC9, + 0xAB, 0x21, 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, + 0x59, 0x75, 0x6B, 0x6F, 0x6E, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, 0x00, 0x00, 0x6E, 0x61, 0x6D, + 0x65, 0x3A, 0x72, 0x75, 0x00, 0xD0, 0xAE, 0xD0, 0xBA, 0xD0, 0xBE, 0xD0, 0xBD, 0x00, 0x00, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x77, 0x61, 0x79, 0x00, 0x72, 0x69, 0x76, 0x65, 0x72, 0x00, 0xFE}; +static_assert(sizeof(way_o5m_data) == 175, "Size check failed"); + +char const relation_xml_data[] = "\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +"; + +// 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}; +static_assert(sizeof(relation_o5m_data) == 224, "Size check failed"); diff --git a/generator/generator_tests/source_data.hpp b/generator/generator_tests/source_data.hpp new file mode 100644 index 0000000000..d1681b8a8a --- /dev/null +++ b/generator/generator_tests/source_data.hpp @@ -0,0 +1,18 @@ +// +// source_data.hpp +// generator_tool +// +// Created by Sergey Yershov on 06.08.15. +// Copyright (c) 2015 maps.me. All rights reserved. +// + +#pragma once + +extern char const node_xml_data[]; +extern unsigned char const node_o5m_data[92]; +extern char const node2_xml_data[]; +extern unsigned char const node2_o5m_data[93]; +extern char const way_xml_data[]; +extern unsigned char const way_o5m_data[175]; +extern char const relation_xml_data[]; +extern unsigned char const relation_o5m_data[224]; \ No newline at end of file diff --git a/generator/generator_tests/source_to_element_test.cpp b/generator/generator_tests/source_to_element_test.cpp index 75aff288fb..15e8ac4db1 100644 --- a/generator/generator_tests/source_to_element_test.cpp +++ b/generator/generator_tests/source_to_element_test.cpp @@ -12,76 +12,58 @@ #include "generator/osm_source.hpp" #include "generator/xml_element.hpp" - -char const node_xml_data[] = " \ - \ - \ - \ - \ - \ - \ - \ -"; - -// binary data: node.o5m -uint8_t node_o5m_data1[] = /* 92 */ -{0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x51, 0xA1, 0xAB, 0x21, 0x00, 0xCD, 0xE6, - 0xD7, 0x80, 0x0A, 0xBE, 0xCE, 0x82, 0xD1, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9F, - 0xD1, 0x80, 0xD0, 0xBE, 0xD0, 0xB4, 0xD1, 0x83, 0xD0, 0xBA, 0xD1, 0x82, 0xD0, 0xBE, 0xD0, 0xB2, - 0xD1, 0x8B, 0xD0, 0xB9, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x67, 0x5F, 0x68, 0x6F, - 0x75, 0x72, 0x73, 0x00, 0x32, 0x34, 0x2F, 0x37, 0x00, 0x00, 0x73, 0x68, 0x6F, 0x70, 0x00, 0x63, - 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 0x65, 0x00, 0xFE}; -static_assert(sizeof(node_o5m_data1) == 92, "Size check failed"); - +#include "source_data.hpp" struct DummyParser : public BaseOSMParser { - XMLElement & m_e; - DummyParser(XMLElement & e) : BaseOSMParser() , m_e(e) {} + vector & m_e; + DummyParser(vector & e) : BaseOSMParser() , m_e(e) {} void EmitElement(XMLElement * p) override { - m_e = *p; + m_e.push_back(*p); } }; -UNIT_TEST(Source_To_Element_check_equivalence) -{ - istringstream ss1(node_xml_data); - SourceReader reader1(ss1); - - XMLElement e1; - DummyParser parser1(e1); - ParseXMLSequence(reader1, parser1); - - string src(begin(node_o5m_data1), end(node_o5m_data1)); - istringstream ss2(src); - SourceReader reader2(ss2); - - XMLElement e2; - DummyParser parser2(e2); - BuildFeaturesFromO5M(reader2, parser2); - - TEST_EQUAL(e1, e2, ()); -} - - UNIT_TEST(Source_To_Element_create_from_xml_test) { - istringstream ss(node_xml_data); + istringstream ss(way_xml_data); SourceReader reader(ss); - XMLElement e; - DummyParser parser(e); + vector elements; + DummyParser parser(elements); ParseXMLSequence(reader, parser); + + TEST_EQUAL(elements.size(), 10, (elements)); } UNIT_TEST(Source_To_Element_create_from_o5m_test) { - string src(begin(node_o5m_data1), end(node_o5m_data1)); + string src(begin(way_o5m_data), end(way_o5m_data)); istringstream ss(src); SourceReader reader(ss); - XMLElement e; - DummyParser parser(e); + vector elements; + DummyParser parser(elements); BuildFeaturesFromO5M(reader, parser); -} \ No newline at end of file + TEST_EQUAL(elements.size(), 10, (elements)); +} + +UNIT_TEST(Source_To_Element_check_equivalence) +{ + istringstream ss1(relation_xml_data); + SourceReader readerXML(ss1); + + vector elementsXML; + DummyParser parserForXML(elementsXML); + ParseXMLSequence(readerXML, parserForXML); + + string src(begin(relation_o5m_data), end(relation_o5m_data)); + istringstream ss2(src); + SourceReader readerO5M(ss2); + + vector elementsO5M; + DummyParser parserForO5M(elementsO5M); + BuildFeaturesFromO5M(readerO5M, parserForO5M); + + TEST_EQUAL(elementsXML, elementsO5M, ()); +} diff --git a/generator/xml_element.cpp b/generator/xml_element.cpp index d9d07cfb68..1f97226310 100644 --- a/generator/xml_element.cpp +++ b/generator/xml_element.cpp @@ -42,10 +42,7 @@ void XMLElement::AddMEMBER(uint64_t ref, string const & type, string const & rol string DebugPrint(XMLElement const & e) { - ostringstream ss; - if (!e.k.empty() || !e.v.empty() || !e.childs.empty()) - ss << "{ " << e.k << "=" << e.v << endl << DebugPrint(e.childs) << " }"; - return ss.str(); + return e.to_string(); } diff --git a/generator/xml_element.hpp b/generator/xml_element.hpp index d1ebe1beb0..53b46cea25 100644 --- a/generator/xml_element.hpp +++ b/generator/xml_element.hpp @@ -1,10 +1,15 @@ #pragma once + +#include "base/math.hpp" + + #include "std/string.hpp" #include "std/vector.hpp" #include "std/map.hpp" #include "std/iostream.hpp" #include "std/exception.hpp" +#include "std/iomanip.hpp" struct XMLElement { @@ -33,14 +38,62 @@ struct XMLElement XMLElement * parent = nullptr; vector childs; + string to_string(string const & shift = string()) const + { + stringstream ss; + ss << (shift.empty() ? "\n" : shift); + switch (tagKey) + { + case ET_NODE: + { + ss << "Node: " << id << " (" << fixed << setw(7) << lat << ", " << lng << ")"; + break; + } + case ET_ND: + { + ss << "Nd ref: " << ref; + break; + } + case ET_WAY: + { + ss << "Way: " << id << " elements: " << childs.size(); + break; + } + case ET_RELATION: + { + ss << "Relation: " << id << " elements: " << childs.size(); + break; + } + case ET_TAG: + { + ss << "Tag: " << k << " = " << v; + break; + } + case ET_MEMBER: + { + ss << "Member: " << ref << " type: " << type << " role: " << role; + break; + } + + default: ss << "Unknown element"; + } + if (!childs.empty()) + { + string shift2 = shift; + shift2 += shift2.empty() ? "\n " : " "; + for ( auto const & e : childs ) + ss << e.to_string(shift2); + } + return ss.str(); + } bool operator == (XMLElement const & e) const { return ( tagKey == e.tagKey && id == e.id - && lng == e.lng - && lat == e.lat + && my::AlmostEqualAbs(lng, e.lng, 1e-7) + && my::AlmostEqualAbs(lat, e.lat, 1e-7) && ref == e.ref && k == e.k && v == e.v diff --git a/xcode/generator_tool/generator_tool.xcodeproj/project.pbxproj b/xcode/generator_tool/generator_tool.xcodeproj/project.pbxproj index 0d25c1ac7e..74aacef3a4 100644 --- a/xcode/generator_tool/generator_tool.xcodeproj/project.pbxproj +++ b/xcode/generator_tool/generator_tool.xcodeproj/project.pbxproj @@ -9,17 +9,7 @@ /* Begin PBXBuildFile section */ 6726C2231A4C2BBD005EEA39 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 675343E01A3F600D00A0A8C3 /* IOKit.framework */; }; 6726C2261A4C2BBD005EEA39 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 675343E21A3F607600A0A8C3 /* Cocoa.framework */; }; - 6726C2371A4C2CE4005EEA39 /* classificator_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E41A4C28D5005EEA39 /* classificator_tests.cpp */; }; - 6726C2381A4C2CE4005EEA39 /* coasts_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E51A4C28D5005EEA39 /* coasts_test.cpp */; }; - 6726C2391A4C2CE4005EEA39 /* feature_builder_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E61A4C28D5005EEA39 /* feature_builder_test.cpp */; }; - 6726C23A1A4C2CE4005EEA39 /* feature_merger_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E71A4C28D5005EEA39 /* feature_merger_test.cpp */; }; - 6726C23B1A4C2CE4005EEA39 /* osm_id_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E81A4C28D5005EEA39 /* osm_id_test.cpp */; }; - 6726C23C1A4C2CE4005EEA39 /* osm_parser_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1E91A4C28D5005EEA39 /* osm_parser_test.cpp */; }; - 6726C23D1A4C2CE4005EEA39 /* osm_type_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1EA1A4C28D5005EEA39 /* osm_type_test.cpp */; }; - 6726C23E1A4C2CE4005EEA39 /* tesselator_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1EB1A4C28D5005EEA39 /* tesselator_test.cpp */; }; - 6726C23F1A4C2CE4005EEA39 /* triangles_tree_coding_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C1EC1A4C28D5005EEA39 /* triangles_tree_coding_test.cpp */; }; 6726C2411A4C2D9F005EEA39 /* testingmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C2401A4C2D9F005EEA39 /* testingmain.cpp */; }; - 6726C26E1A4C5165005EEA39 /* metadata_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6726C26C1A4C5009005EEA39 /* metadata_test.cpp */; }; 674A28C81B1C7FC9001A525C /* libexpat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28C71B1C7FC9001A525C /* libexpat.a */; }; 674A28CE1B1C7FED001A525C /* libcoding.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28C91B1C7FED001A525C /* libcoding.a */; }; 674A28CF1B1C7FED001A525C /* libgenerator.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28CA1B1C7FED001A525C /* libgenerator.a */; }; @@ -49,13 +39,11 @@ 674A28F01B1C8104001A525C /* libsearch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28EF1B1C8104001A525C /* libsearch.a */; }; 674A28F21B1C8119001A525C /* libsuccinct.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28F11B1C8119001A525C /* libsuccinct.a */; }; 674A28F41B1C8125001A525C /* libosrm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674A28F31B1C8125001A525C /* libosrm.a */; }; - 674A39D31B727589001DDB91 /* source_to_element_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 674A39D21B727589001DDB91 /* source_to_element_test.cpp */; }; - 674A39D41B728A81001DDB91 /* source_to_element_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 674A39D21B727589001DDB91 /* source_to_element_test.cpp */; }; 675341631A3F54F600A0A8C3 /* generator_tool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675341621A3F54F600A0A8C3 /* generator_tool.cpp */; }; 675343E31A3F607600A0A8C3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 675343E21A3F607600A0A8C3 /* Cocoa.framework */; }; 675344431A3F65E800A0A8C3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 675343E01A3F600D00A0A8C3 /* IOKit.framework */; }; - 6764B8941ADD6FC100DD8B15 /* osm_o5m_source_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6764B8931ADD6FC100DD8B15 /* osm_o5m_source_test.cpp */; }; - 6764B8951ADD7CA700DD8B15 /* osm_o5m_source_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6764B8931ADD6FC100DD8B15 /* osm_o5m_source_test.cpp */; }; + 67AB92C21B73C27300AB5194 /* source_data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 67AB92B31B738DE800AB5194 /* source_data.cpp */; }; + 67AB92C31B73C29000AB5194 /* source_to_element_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 674A39D21B727589001DDB91 /* source_to_element_test.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -172,6 +160,12 @@ 675343E01A3F600D00A0A8C3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 675343E21A3F607600A0A8C3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 6764B8931ADD6FC100DD8B15 /* osm_o5m_source_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osm_o5m_source_test.cpp; sourceTree = ""; }; + 67AB92B31B738DE800AB5194 /* source_data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = source_data.cpp; sourceTree = ""; }; + 67AB92B41B738DE800AB5194 /* source_data.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = source_data.hpp; sourceTree = ""; }; + 67AB92C61B73D03500AB5194 /* libmap.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmap.a; path = "/Volumes/AltHD/omim/xcode/map/../../../omim-xcode-build/Debug/libmap.a"; sourceTree = ""; }; + 67AB92C81B73D10200AB5194 /* libosrm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosrm.a; path = "/Volumes/AltHD/omim/xcode/osrm/../../../omim-xcode-build/Debug/libosrm.a"; sourceTree = ""; }; + 67AB92CA1B73D10B00AB5194 /* libsuccinct.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsuccinct.a; path = "/Volumes/AltHD/omim/xcode/succinct/../../../omim-xcode-build/Debug/libsuccinct.a"; sourceTree = ""; }; + 67AB92CC1B73D15700AB5194 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -304,6 +298,8 @@ 6726C26C1A4C5009005EEA39 /* metadata_test.cpp */, 6764B8931ADD6FC100DD8B15 /* osm_o5m_source_test.cpp */, 674A39D21B727589001DDB91 /* source_to_element_test.cpp */, + 67AB92B31B738DE800AB5194 /* source_data.cpp */, + 67AB92B41B738DE800AB5194 /* source_data.hpp */, ); name = Tests; path = ../../generator/generator_tests; @@ -312,6 +308,10 @@ 6753414F1A3F54D800A0A8C3 = { isa = PBXGroup; children = ( + 67AB92CC1B73D15700AB5194 /* Foundation.framework */, + 67AB92CA1B73D10B00AB5194 /* libsuccinct.a */, + 67AB92C81B73D10200AB5194 /* libosrm.a */, + 67AB92C61B73D03500AB5194 /* libmap.a */, 670D05AD1B0E08260013A7AC /* defaults.xcconfig */, 670B84C41A9F73AB00CE4492 /* std */, 6726C1D71A4C27A5005EEA39 /* Tests */, @@ -440,19 +440,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 674A39D41B728A81001DDB91 /* source_to_element_test.cpp in Sources */, - 6764B8951ADD7CA700DD8B15 /* osm_o5m_source_test.cpp in Sources */, - 6726C26E1A4C5165005EEA39 /* metadata_test.cpp in Sources */, 6726C2411A4C2D9F005EEA39 /* testingmain.cpp in Sources */, - 6726C2371A4C2CE4005EEA39 /* classificator_tests.cpp in Sources */, - 6726C2381A4C2CE4005EEA39 /* coasts_test.cpp in Sources */, - 6726C2391A4C2CE4005EEA39 /* feature_builder_test.cpp in Sources */, - 6726C23A1A4C2CE4005EEA39 /* feature_merger_test.cpp in Sources */, - 6726C23B1A4C2CE4005EEA39 /* osm_id_test.cpp in Sources */, - 6726C23C1A4C2CE4005EEA39 /* osm_parser_test.cpp in Sources */, - 6726C23D1A4C2CE4005EEA39 /* osm_type_test.cpp in Sources */, - 6726C23E1A4C2CE4005EEA39 /* tesselator_test.cpp in Sources */, - 6726C23F1A4C2CE4005EEA39 /* triangles_tree_coding_test.cpp in Sources */, + 67AB92C31B73C29000AB5194 /* source_to_element_test.cpp in Sources */, + 67AB92C21B73C27300AB5194 /* source_data.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -460,8 +450,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6764B8941ADD6FC100DD8B15 /* osm_o5m_source_test.cpp in Sources */, - 674A39D31B727589001DDB91 /* source_to_element_test.cpp in Sources */, 675341631A3F54F600A0A8C3 /* generator_tool.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -472,9 +460,15 @@ 6726C2331A4C2BBD005EEA39 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = "$(inherited)"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "/Volumes/AltHD/omim/xcode/map/../../../omim-xcode-build/Debug", + "/Volumes/AltHD/omim/xcode/osrm/../../../omim-xcode-build/Debug", + "/Volumes/AltHD/omim/xcode/succinct/../../../omim-xcode-build/Debug", + ); PRODUCT_NAME = generator_tests; }; name = Debug; @@ -482,10 +476,16 @@ 6726C2341A4C2BBD005EEA39 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; HEADER_SEARCH_PATHS = "$(inherited)"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "/Volumes/AltHD/omim/xcode/map/../../../omim-xcode-build/Debug", + "/Volumes/AltHD/omim/xcode/osrm/../../../omim-xcode-build/Debug", + "/Volumes/AltHD/omim/xcode/succinct/../../../omim-xcode-build/Debug", + ); PRODUCT_NAME = generator_tests; }; name = Release; diff --git a/xcode/map/map.xcodeproj/project.pbxproj b/xcode/map/map.xcodeproj/project.pbxproj index a8c195c651..c2f72a1847 100644 --- a/xcode/map/map.xcodeproj/project.pbxproj +++ b/xcode/map/map.xcodeproj/project.pbxproj @@ -67,8 +67,6 @@ 675346511A4054E800A0A8C3 /* country_status_display.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675345E21A4054E800A0A8C3 /* country_status_display.hpp */; }; 675346521A4054E800A0A8C3 /* country_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675345E31A4054E800A0A8C3 /* country_tree.cpp */; }; 675346531A4054E800A0A8C3 /* country_tree.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675345E41A4054E800A0A8C3 /* country_tree.hpp */; }; - 675346561A4054E800A0A8C3 /* dialog_settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675345E71A4054E800A0A8C3 /* dialog_settings.cpp */; }; - 675346571A4054E800A0A8C3 /* dialog_settings.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675345E81A4054E800A0A8C3 /* dialog_settings.hpp */; }; 675346621A4054E800A0A8C3 /* feature_vec_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675345F31A4054E800A0A8C3 /* feature_vec_model.cpp */; }; 675346631A4054E800A0A8C3 /* feature_vec_model.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675345F41A4054E800A0A8C3 /* feature_vec_model.hpp */; }; 675346641A4054E800A0A8C3 /* framework.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675345F51A4054E800A0A8C3 /* framework.cpp */; }; @@ -189,8 +187,6 @@ 675345E21A4054E800A0A8C3 /* country_status_display.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = country_status_display.hpp; sourceTree = ""; }; 675345E31A4054E800A0A8C3 /* country_tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = country_tree.cpp; sourceTree = ""; }; 675345E41A4054E800A0A8C3 /* country_tree.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = country_tree.hpp; sourceTree = ""; }; - 675345E71A4054E800A0A8C3 /* dialog_settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialog_settings.cpp; sourceTree = ""; }; - 675345E81A4054E800A0A8C3 /* dialog_settings.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = dialog_settings.hpp; sourceTree = ""; }; 675345F31A4054E800A0A8C3 /* feature_vec_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feature_vec_model.cpp; sourceTree = ""; }; 675345F41A4054E800A0A8C3 /* feature_vec_model.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = feature_vec_model.hpp; sourceTree = ""; }; 675345F51A4054E800A0A8C3 /* framework.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = framework.cpp; sourceTree = ""; }; @@ -386,8 +382,6 @@ 675345E21A4054E800A0A8C3 /* country_status_display.hpp */, 675345E31A4054E800A0A8C3 /* country_tree.cpp */, 675345E41A4054E800A0A8C3 /* country_tree.hpp */, - 675345E71A4054E800A0A8C3 /* dialog_settings.cpp */, - 675345E81A4054E800A0A8C3 /* dialog_settings.hpp */, 675345F31A4054E800A0A8C3 /* feature_vec_model.cpp */, 675345F41A4054E800A0A8C3 /* feature_vec_model.hpp */, 675345F51A4054E800A0A8C3 /* framework.cpp */, @@ -455,7 +449,6 @@ 6753469E1A4054E800A0A8C3 /* user_mark_container.hpp in Headers */, 675346491A4054E800A0A8C3 /* bookmark_manager.hpp in Headers */, 6753467A1A4054E800A0A8C3 /* pin_click_manager.hpp in Headers */, - 675346571A4054E800A0A8C3 /* dialog_settings.hpp in Headers */, 675346731A4054E800A0A8C3 /* move_screen_task.hpp in Headers */, 675346631A4054E800A0A8C3 /* feature_vec_model.hpp in Headers */, 675346511A4054E800A0A8C3 /* country_status_display.hpp in Headers */, @@ -564,7 +557,6 @@ 675346831A4054E800A0A8C3 /* rotate_screen_task.cpp in Sources */, 675346521A4054E800A0A8C3 /* country_tree.cpp in Sources */, 674A29C71B26F83C001A525C /* navigator_utils.cpp in Sources */, - 675346561A4054E800A0A8C3 /* dialog_settings.cpp in Sources */, 6753469B1A4054E800A0A8C3 /* track.cpp in Sources */, 675346621A4054E800A0A8C3 /* feature_vec_model.cpp in Sources */, 675346871A4054E800A0A8C3 /* ruler.cpp in Sources */,