From 1ab23a4b6442e15471897471f60c64d2ee0775a0 Mon Sep 17 00:00:00 2001 From: vng Date: Sat, 1 Sep 2012 17:04:20 +0300 Subject: [PATCH] Add some type tests. --- generator/generator_tests/osm_type_test.cpp | 64 +++++++++++++++++---- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/generator/generator_tests/osm_type_test.cpp b/generator/generator_tests/osm_type_test.cpp index 932e229553..02aed9cf9b 100644 --- a/generator/generator_tests/osm_type_test.cpp +++ b/generator/generator_tests/osm_type_test.cpp @@ -24,11 +24,9 @@ namespace } } - uint32_t GetType(char const * arr[2]) + template uint32_t GetType(char const * (&arr)[N]) { - vector path; - path.push_back(arr[0]); - path.push_back(arr[1]); + vector path(arr, arr + N); return classif().GetTypeByPath(path); } } @@ -129,9 +127,9 @@ UNIT_TEST(OsmType_Combined) FeatureParams params; ftype::GetNameAndType(&e, params); - Classificator & c = classif(); - TEST(params.IsTypeExist(c.GetTypeByPath(vector(arr[3], arr[3] + 2))), ()); - TEST(params.IsTypeExist(c.GetTypeByPath(vector(arr[4], arr[4] + 1))), ()); + TEST(params.IsTypeExist(GetType(arr[3])), ()); + char const * arrT[] = { "building" }; + TEST(params.IsTypeExist(GetType(arrT)), ()); string s; params.name.GetString(0, s); @@ -158,9 +156,8 @@ UNIT_TEST(OsmType_Address) FeatureParams params; ftype::GetNameAndType(&e, params); - Classificator & c = classif(); char const * arrT[] = { "building", "address" }; - TEST(params.IsTypeExist(c.GetTypeByPath(vector(arrT, arrT + 2))), ()); + TEST(params.IsTypeExist(GetType(arrT)), ()); TEST_EQUAL(params.house.Get(), "223/5", ()); } @@ -185,12 +182,57 @@ UNIT_TEST(OsmType_PlaceState) FeatureParams params; ftype::GetNameAndType(&e, params); - Classificator & c = classif(); char const * arrT[] = { "place", "state", "USA" }; - TEST(params.IsTypeExist(c.GetTypeByPath(vector(arrT, arrT + 3))), ()); + TEST(params.IsTypeExist(GetType(arrT)), ()); string s; TEST(params.name.GetString(0, s), ()); TEST_EQUAL(s, "California", ()); TEST_GREATER(params.rank, 1, ()); } + +UNIT_TEST(OsmType_AlabamaRiver) +{ + char const * arr1[][2] = { + { "NHD:FCode", "55800" }, + { "NHD:FType", "558" }, + { "NHD:RESOLUTION", "2" }, + { "NHD:way_id", "139286586;139286577;139286596;139286565;139286574;139286508;139286600;139286591;139286507;139286505;139286611;139286602;139286594;139286604;139286615;139286616;139286608;139286514;139286511;139286564;139286576;139286521;139286554" }, + { "attribution", "NHD" }, + { "boat", "yes" }, + { "deep_draft", "no" }, + { "gnis:feature_id", "00517033" }, + { "name", "Tennessee River" }, + { "ship", "yes" }, + { "source", "NHD_import_v0.4_20100913205417" }, + { "source:deep_draft", "National Transportation Atlas Database 2011" }, + { "waterway", "river" } + }; + + char const * arr2[][2] = { + { "destination", "Ohio River" }, + { "name", "Tennessee River" }, + { "type", "waterway" }, + { "waterway", "river" } + }; + + char const * arr3[][2] = { + { "name", "Tennessee River" }, + { "network", "inland waterways" }, + { "route", "boat" }, + { "ship", "yes" }, + { "type", "route" } + }; + + XMLElement e; + FillXmlElement(arr1, ARRAY_SIZE(arr1), &e); + FillXmlElement(arr2, ARRAY_SIZE(arr2), &e); + FillXmlElement(arr3, ARRAY_SIZE(arr3), &e); + + FeatureParams params; + ftype::GetNameAndType(&e, params); + + char const * arrT[] = { "waterway", "river" }; + TEST(params.IsTypeExist(GetType(arrT)), ()); + TEST_EQUAL(params.m_Types.size(), 1, ()); +}