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 */,