[generator][tests] Add OsmType_ComplexTypesSmoke test.

This commit is contained in:
tatiana-yan 2020-01-13 18:46:37 +03:00 committed by Maksim Andrianov
parent d411b5659b
commit 96404ff462

View file

@ -1560,3 +1560,363 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_SimpleTypesSmoke)
TEST(params.IsTypeExist(classif().GetTypeByPath({type.m_key, type.m_value})), (type, params));
}
}
UNIT_CLASS_TEST(TestWithClassificator, OsmType_ComplexTypesSmoke)
{
using Type = std::vector<std::string>;
std::vector<std::pair<Type, Tags>> const complexTypes = {
// Filtered out by MatchTypes filter because have no styles.
// {{"boundary", "administrative", "10"}, {{"boundary", "administrative"}, {"admin_level", "10"}}},
// {{"boundary", "administrative", "11"}, {{"boundary", "administrative"}, {"admin_level", "11"}}},
// {{"boundary", "administrative", "5"}, {{"boundary", "administrative"}, {"admin_level", "5"}}},
// {{"boundary", "administrative", "6"}, {{"boundary", "administrative"}, {"admin_level", "6"}}},
// {{"boundary", "administrative", "7"}, {{"boundary", "administrative"}, {"admin_level", "7"}}},
// {{"boundary", "administrative", "8"}, {{"boundary", "administrative"}, {"admin_level", "8"}}},
// {{"boundary", "administrative", "9"}, {{"boundary", "administrative"}, {"admin_level", "9"}}},
// {{"boundary", "administrative", "city"}, {{"boundary", "administrative"}, {"border_type", "city"}}},
// {{"boundary", "administrative", "country"}, {{"boundary", "administrative"}, {"border_type", "country"}}},
// {{"boundary", "administrative", "county"}, {{"boundary", "administrative"}, {"border_type", "county"}}},
// {{"boundary", "administrative", "municipality"}, {{"boundary", "administrative"}, {"border_type", "municipality"}}},
// {{"boundary", "administrative", "nation"}, {{"boundary", "administrative"}, {"border_type", "nation"}}},
// {{"boundary", "administrative", "region"}, {{"boundary", "administrative"}, {"border_type", "region"}}},
// {{"boundary", "administrative", "state"}, {{"boundary", "administrative"}, {"border_type", "state"}}},
// {{"boundary", "administrative", "suburb"}, {{"boundary", "administrative"}, {"border_type", "suburb"}}},
// {{"communication", "line", "underground"}, {{"communication", "line"}, {"location", "underground"}}},
// {{"landuse", "residential", "rural"}, {{"landuse", "residential"}, {"residential", "rural"}}},
// {{"landuse", "residential", "urban"}, {{"landuse", "residential"}, {"residential", "urban"}}},
// {{"man_made", "pipeline", "overground"}, {{"man_made", "pipeline"}, {"location", "overground"}}},
// {{"marking", "sport", "black"}, {{"marking", "sport"}, {"colour", "black"}}},
// {{"marking", "sport", "blue"}, {{"marking", "sport"}, {"colour", "blue"}}},
// {{"marking", "sport", "red"}, {{"marking", "sport"}, {"colour", "red"}}},
// {{"marking", "sport", "white"}, {{"marking", "sport"}, {"colour", "white"}}},
// {{"marking", "sport"}, {{"marking", "sport"}}},
// {{"railway", "incline", "bridge"}, {{"railway", "incline"}, {"bridge", "any_value"}}},
// {{"railway", "incline", "tunnel"}, {{"railway", "incline"}, {"tunnel", "any_value"}}},
// {{"railway", "siding", "bridge"}, {{"railway", "siding"}, {"bridge", "any_value"}}},
// {{"railway", "siding", "tunnel"}, {{"railway", "siding"}, {"tunnel", "any_value"}}},
// {{"railway", "spur", "bridge"}, {{"railway", "spur"}, {"bridge", "any_value"}}},
// {{"railway", "spur", "tunnel"}, {{"railway", "spur"}, {"tunnel", "any_value"}}},
// {{"railway", "subway", "blue"}, {{"railway", "subway"}, {"colour", "blue"}}},
// {{"railway", "subway", "bridge"}, {{"railway", "subway"}, {"bridge", "any_value"}}},
// {{"railway", "subway", "brown"}, {{"railway", "subway"}, {"colour", "brown"}}},
// {{"railway", "subway", "darkgreen"}, {{"railway", "subway"}, {"colour", "darkgreen"}}},
// {{"railway", "subway", "gray"}, {{"railway", "subway"}, {"colour", "gray"}}},
// {{"railway", "subway", "green"}, {{"railway", "subway"}, {"colour", "green"}}},
// {{"railway", "subway", "grey"}, {{"railway", "subway"}, {"colour", "grey"}}},
// {{"railway", "subway", "lightblue"}, {{"railway", "subway"}, {"colour", "lightblue"}}},
// {{"railway", "subway", "lightgreen"}, {{"railway", "subway"}, {"colour", "lightgreen"}}},
// {{"railway", "subway", "orange"}, {{"railway", "subway"}, {"colour", "orange"}}},
// {{"railway", "subway", "purple"}, {{"railway", "subway"}, {"colour", "purple"}}},
// {{"railway", "subway", "red"}, {{"railway", "subway"}, {"colour", "red"}}},
// {{"railway", "subway", "tunnel"}, {{"railway", "subway"}, {"tunnel", "any_value"}}},
// {{"railway", "subway", "violet"}, {{"railway", "subway"}, {"colour", "violet"}}},
// {{"railway", "subway", "yellow"}, {{"railway", "subway"}, {"colour", "yellow"}}},
// {{"waterway", "ditch", "tunnel"}, {{"waterway", "ditch"}, {"tunnel", "any_value"}}},
// {{"waterway", "drain", "tunnel"}, {{"waterway", "drain"}, {"tunnel", "any_value"}}},
// {{"waterway", "stream", "tunnel"}, {{"waterway", "stream"}, {"tunnel", "any_value"}}},
//
// two types (+hwtag yesbicycle) {{"highway", "path", "bicycle"}, {{"highway", "path"}, {"bicycle", "any_value"}}},
// two types (+hwtag yesfoot) {{"highway", "footway", "permissive"}, {{"highway", "footway"}, {"access", "permissive"}}},
// two types (+hwtag-private) {{"highway", "track", "no-access"}, {{"highway", "track"}, {"access", "no"}}},
// two types (+office) {{"tourism", "information", "office"}, {{"tourism", "information"}, {"office", "any_value"}}},
// two types (+sport-shooting) {{"leisure", "sports_centre", "shooting"}, {{"leisure", "sports_centre"}, {"sport", "shooting"}}},
// two types (+sport-swimming) {{"leisure", "sports_centre", "swimming"}, {{"leisure", "sports_centre"}, {"sport", "swimming"}}},
//
// Manually constructed type, not parsed from osm.
// {{"building", "address"}, {{"addr:housenumber", "any_value"}, {"addr:street", "any_value"}}},
{{"aeroway", "aerodrome", "international"}, {{"aeroway", "aerodrome"}, {"aerodrome", "international"}}},
{{"amenity", "grave_yard", "christian"}, {{"amenity", "grave_yard"}, {"religion", "christian"}}},
{{"amenity", "parking", "fee"}, {{"amenity", "parking"}, {"fee", "any_value"}}},
{{"amenity", "parking", "multi-storey"}, {{"amenity", "parking"}, {"parking", "multi-storey"}}},
{{"amenity", "parking", "no-access"}, {{"amenity", "parking"}, {"access", "no"}}},
{{"amenity", "parking", "park_and_ride"}, {{"amenity", "parking"}, {"parking", "park_and_ride"}}},
{{"amenity", "parking", "permissive"}, {{"amenity", "parking"}, {"access", "permissive"}}},
{{"amenity", "parking", "private"}, {{"amenity", "parking"}, {"access", "private"}}},
{{"amenity", "parking", "underground"}, {{"amenity", "parking"}, {"location", "underground"}}},
{{"amenity", "parking", "underground"}, {{"amenity", "parking"}, {"parking", "underground"}}},
{{"amenity", "parking_space", "permissive"}, {{"amenity", "parking_space"}, {"access", "permissive"}}},
{{"amenity", "parking_space", "private"}, {{"amenity", "parking_space"}, {"access", "private"}}},
{{"amenity", "parking_space", "underground"}, {{"amenity", "parking_space"}, {"parking", "underground"}}},
{{"amenity", "place_of_worship", "buddhist"}, {{"amenity", "place_of_worship"}, {"religion", "buddhist"}}},
{{"amenity", "place_of_worship", "christian"}, {{"amenity", "place_of_worship"}, {"religion", "christian"}}},
{{"amenity", "place_of_worship", "hindu"}, {{"amenity", "place_of_worship"}, {"religion", "hindu"}}},
{{"amenity", "place_of_worship", "jewish"}, {{"amenity", "place_of_worship"}, {"religion", "jewish"}}},
{{"amenity", "place_of_worship", "muslim"}, {{"amenity", "place_of_worship"}, {"religion", "muslim"}}},
{{"amenity", "place_of_worship", "shinto"}, {{"amenity", "place_of_worship"}, {"religion", "shinto"}}},
{{"amenity", "place_of_worship", "taoist"}, {{"amenity", "place_of_worship"}, {"religion", "taoist"}}},
{{"amenity", "vending_machine", "cigarettes"}, {{"amenity", "vending_machine"}, {"vending", "cigarettes"}}},
{{"amenity", "vending_machine", "drinks"}, {{"amenity", "vending_machine"}, {"vending", "drinks"}}},
{{"amenity", "vending_machine", "parking_tickets"}, {{"amenity", "vending_machine"}, {"vending", "parking_tickets"}}},
{{"amenity", "vending_machine", "public_transport_tickets"}, {{"amenity", "vending_machine"}, {"vending", "public_transport_tickets"}}},
{{"amenity"}, {{"amenity", "any_value"}}},
{{"boundary", "administrative", "2"}, {{"boundary", "administrative"}, {"admin_level", "2"}}},
{{"boundary", "administrative", "3"}, {{"boundary", "administrative"}, {"admin_level", "3"}}},
{{"boundary", "administrative", "4", "state"}, {{"boundary", "administrative"}, {"admin_level", "4"}, {"border_type", "state"}}},
{{"boundary", "administrative", "4"}, {{"boundary", "administrative"}, {"admin_level", "4"}}},
{{"building", "garage"}, {{"building", "garage"}}},
{{"building", "garage"}, {{"building", "yes"}, {"garage", "any_value"}}},
{{"building"}, {{"building", "any_value"}}},
{{"building:part"}, {{"building:part", "any_value"}}},
{{"entrance"}, {{"entrance", "any_value"}}},
{{"highway", "bridleway", "bridge"}, {{"highway", "bridleway"}, {"bridge", "any_value"}}},
{{"highway", "bridleway", "permissive"}, {{"highway", "bridleway"}, {"access", "permissive"}}},
{{"highway", "bridleway", "tunnel"}, {{"highway", "bridleway"}, {"tunnel", "any_value"}}},
{{"highway", "cycleway", "bridge"}, {{"highway", "cycleway"}, {"bridge", "any_value"}}},
{{"highway", "cycleway", "permissive"}, {{"highway", "cycleway"}, {"access", "permissive"}}},
{{"highway", "cycleway", "tunnel"}, {{"highway", "cycleway"}, {"tunnel", "any_value"}}},
{{"highway", "footway", "alpine_hiking"}, {{"highway", "footway"}, {"sac_scale", "alpine_hiking"}}},
{{"highway", "footway", "area"}, {{"highway", "footway"}, {"area", "any_value"}}},
{{"highway", "footway", "bridge"}, {{"highway", "footway"}, {"bridge", "any_value"}}},
{{"highway", "footway", "demanding_alpine_hiking"}, {{"highway", "footway"}, {"sac_scale", "demanding_alpine_hiking"}}},
{{"highway", "footway", "demanding_mountain_hiking"}, {{"highway", "footway"}, {"sac_scale", "demanding_mountain_hiking"}}},
{{"highway", "footway", "difficult_alpine_hiking"}, {{"highway", "footway"}, {"sac_scale", "difficult_alpine_hiking"}}},
{{"highway", "footway", "hiking"}, {{"highway", "footway"}, {"sac_scale", "hiking"}}},
{{"highway", "footway", "mountain_hiking"}, {{"highway", "footway"}, {"sac_scale", "mountain_hiking"}}},
{{"highway", "footway", "permissive"}, {{"highway", "footway"}, {"access", "permissive"}}},
{{"highway", "footway", "tunnel"}, {{"highway", "footway"}, {"tunnel", "any_value"}}},
{{"highway", "living_street", "bridge"}, {{"highway", "living_street"}, {"bridge", "any_value"}}},
{{"highway", "living_street", "tunnel"}, {{"highway", "living_street"}, {"tunnel", "any_value"}}},
{{"highway", "motorway", "bridge"}, {{"highway", "motorway"}, {"bridge", "any_value"}}},
{{"highway", "motorway", "tunnel"}, {{"highway", "motorway"}, {"tunnel", "any_value"}}},
{{"highway", "motorway_link", "bridge"}, {{"highway", "motorway_link"}, {"bridge", "any_value"}}},
{{"highway", "motorway_link", "tunnel"}, {{"highway", "motorway_link"}, {"tunnel", "any_value"}}},
{{"highway", "path", "alpine_hiking"}, {{"highway", "path"}, {"sac_scale", "alpine_hiking"}}},
{{"highway", "path", "bridge"}, {{"highway", "path"}, {"bridge", "any_value"}}},
{{"highway", "path", "demanding_alpine_hiking"}, {{"highway", "path"}, {"sac_scale", "demanding_alpine_hiking"}}},
{{"highway", "path", "demanding_mountain_hiking"}, {{"highway", "path"}, {"sac_scale", "demanding_mountain_hiking"}}},
{{"highway", "path", "difficult_alpine_hiking"}, {{"highway", "path"}, {"sac_scale", "difficult_alpine_hiking"}}},
{{"highway", "path", "hiking"}, {{"highway", "path"}, {"route", "hiking"}}},
{{"highway", "path", "hiking"}, {{"highway", "path"}, {"sac_scale", "hiking"}}},
{{"highway", "path", "horse"}, {{"highway", "path"}, {"horse", "any_value"}}},
{{"highway", "path", "mountain_hiking"}, {{"highway", "path"}, {"sac_scale", "mountain_hiking"}}},
{{"highway", "path", "permissive"}, {{"highway", "path"}, {"access", "permissive"}}},
{{"highway", "path", "tunnel"}, {{"highway", "path"}, {"tunnel", "any_value"}}},
{{"highway", "pedestrian", "area"}, {{"highway", "pedestrian"}, {"area", "any_value"}}},
{{"highway", "pedestrian", "bridge"}, {{"highway", "pedestrian"}, {"bridge", "any_value"}}},
{{"highway", "pedestrian", "tunnel"}, {{"highway", "pedestrian"}, {"tunnel", "any_value"}}},
{{"highway", "primary", "bridge"}, {{"highway", "primary"}, {"bridge", "any_value"}}},
{{"highway", "primary", "tunnel"}, {{"highway", "primary"}, {"tunnel", "any_value"}}},
{{"highway", "primary_link", "bridge"}, {{"highway", "primary_link"}, {"bridge", "any_value"}}},
{{"highway", "primary_link", "tunnel"}, {{"highway", "primary_link"}, {"tunnel", "any_value"}}},
{{"highway", "residential", "area"}, {{"highway", "residential"}, {"area", "any_value"}}},
{{"highway", "residential", "bridge"}, {{"highway", "residential"}, {"bridge", "any_value"}}},
{{"highway", "residential", "tunnel"}, {{"highway", "residential"}, {"tunnel", "any_value"}}},
{{"highway", "road", "bridge"}, {{"highway", "road"}, {"bridge", "any_value"}}},
{{"highway", "road", "tunnel"}, {{"highway", "road"}, {"tunnel", "any_value"}}},
{{"highway", "secondary", "bridge"}, {{"highway", "secondary"}, {"bridge", "any_value"}}},
{{"highway", "secondary", "tunnel"}, {{"highway", "secondary"}, {"tunnel", "any_value"}}},
{{"highway", "secondary_link", "bridge"}, {{"highway", "secondary_link"}, {"bridge", "any_value"}}},
{{"highway", "secondary_link", "tunnel"}, {{"highway", "secondary_link"}, {"tunnel", "any_value"}}},
{{"highway", "service", "area"}, {{"highway", "service"}, {"area", "any_value"}}},
{{"highway", "service", "bridge"}, {{"highway", "service"}, {"bridge", "any_value"}}},
{{"highway", "service", "driveway"}, {{"highway", "service"}, {"service", "driveway"}}},
{{"highway", "service", "parking_aisle"}, {{"highway", "service"}, {"service", "parking_aisle"}}},
{{"highway", "service", "tunnel"}, {{"highway", "service"}, {"tunnel", "any_value"}}},
{{"highway", "steps", "bridge"}, {{"highway", "steps"}, {"bridge", "any_value"}}},
{{"highway", "steps", "tunnel"}, {{"highway", "steps"}, {"tunnel", "any_value"}}},
{{"highway", "tertiary", "bridge"}, {{"highway", "tertiary"}, {"bridge", "any_value"}}},
{{"highway", "tertiary", "tunnel"}, {{"highway", "tertiary"}, {"tunnel", "any_value"}}},
{{"highway", "tertiary_link", "bridge"}, {{"highway", "tertiary_link"}, {"bridge", "any_value"}}},
{{"highway", "tertiary_link", "tunnel"}, {{"highway", "tertiary_link"}, {"tunnel", "any_value"}}},
{{"highway", "track", "area"}, {{"highway", "track"}, {"area", "any_value"}}},
{{"highway", "track", "bridge"}, {{"highway", "track"}, {"bridge", "any_value"}}},
{{"highway", "track", "grade1"}, {{"highway", "track"}, {"tracktype", "grade1"}}},
{{"highway", "track", "grade2"}, {{"highway", "track"}, {"tracktype", "grade2"}}},
{{"highway", "track", "grade3"}, {{"highway", "track"}, {"tracktype", "grade3"}}},
{{"highway", "track", "grade4"}, {{"highway", "track"}, {"tracktype", "grade4"}}},
{{"highway", "track", "grade5"}, {{"highway", "track"}, {"tracktype", "grade5"}}},
{{"highway", "track", "permissive"}, {{"highway", "track"}, {"access", "permissive"}}},
{{"highway", "track", "tunnel"}, {{"highway", "track"}, {"tunnel", "any_value"}}},
{{"highway", "trunk", "bridge"}, {{"highway", "trunk"}, {"bridge", "any_value"}}},
{{"highway", "trunk", "tunnel"}, {{"highway", "trunk"}, {"tunnel", "any_value"}}},
{{"highway", "trunk_link", "bridge"}, {{"highway", "trunk_link"}, {"bridge", "any_value"}}},
{{"highway", "trunk_link", "tunnel"}, {{"highway", "trunk_link"}, {"tunnel", "any_value"}}},
{{"highway", "unclassified", "area"}, {{"highway", "unclassified"}, {"area", "any_value"}}},
{{"highway", "unclassified", "bridge"}, {{"highway", "unclassified"}, {"bridge", "any_value"}}},
{{"highway", "unclassified", "tunnel"}, {{"highway", "unclassified"}, {"tunnel", "any_value"}}},
{{"historic", "castle", "defensive"}, {{"historic", "castle"}, {"castle_type", "defensive"}}},
{{"historic", "castle", "stately"}, {{"historic", "castle"}, {"castle_type", "stately"}}},
{{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial", "plaque"}}},
{{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial:type", "plaque"}}},
{{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial", "sculpture"}}},
{{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial:type", "sculpture"}}},
{{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial", "statue"}}},
{{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial:type", "statue"}}},
{{"internet_access"}, {{"internet_access", "any_value"}}},
{{"landuse", "cemetery", "christian"}, {{"landuse", "cemetery"}, {"religion", "christian"}}},
{{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"leaf_type", "coniferous"}}},
{{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"wood", "coniferous"}}},
{{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_cycle", "deciduous"}}},
{{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_type", "deciduous"}}},
{{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"wood", "deciduous"}}},
{{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_cycle", "mixed"}}},
{{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_type", "mixed"}}},
{{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"wood", "mixed"}}},
{{"leisure", "park", "no-access"}, {{"leisure", "park"}, {"access", "no"}}},
{{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}},
{{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}},
{{"leisure", "sports_centre", "climbing"}, {{"leisure", "sports_centre"}, {"sport", "climbing"}}},
{{"leisure", "sports_centre", "yoga"}, {{"leisure", "sports_centre"}, {"sport", "yoga"}}},
{{"natural", "wetland", "bog"}, {{"natural", "wetland"}, {"wetland", "bog"}}},
{{"natural", "wetland", "marsh"}, {{"natural", "wetland"}, {"wetland", "marsh"}}},
{{"natural", "wood", "coniferous"}, {{"natural", "wood"}, {"leaf_type", "coniferous"}}},
{{"natural", "wood", "coniferous"}, {{"natural", "wood"}, {"wood", "coniferous"}}},
{{"natural", "wood", "deciduous"}, {{"natural", "wood"}, {"leaf_cycle", "deciduous"}}},
{{"natural", "wood", "deciduous"}, {{"natural", "wood"}, {"leaf_type", "deciduous"}}},
{{"natural", "wood", "deciduous"}, {{"natural", "wood"}, {"wood", "deciduous"}}},
{{"natural", "wood", "mixed"}, {{"natural", "wood"}, {"leaf_cycle", "mixed"}}},
{{"natural", "wood", "mixed"}, {{"natural", "wood"}, {"leaf_type", "mixed"}}},
{{"natural", "wood", "mixed"}, {{"natural", "wood"}, {"wood", "mixed"}}},
{{"office"}, {{"office", "any_value"}}},
{{"piste:type", "downhill", "advanced"}, {{"piste:type", "downhill"}, {"piste:difficulty", "advanced"}}},
{{"piste:type", "downhill", "easy"}, {{"piste:type", "downhill"}, {"piste:difficulty", "easy"}}},
{{"piste:type", "downhill", "expert"}, {{"piste:type", "downhill"}, {"piste:difficulty", "expert"}}},
{{"piste:type", "downhill", "freeride"}, {{"piste:type", "downhill"}, {"piste:difficulty", "freeride"}}},
{{"piste:type", "downhill", "intermediate"}, {{"piste:type", "downhill"}, {"piste:difficulty", "intermediate"}}},
{{"piste:type", "downhill", "novice"}, {{"piste:type", "downhill"}, {"piste:difficulty", "novice"}}},
{{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "10"}}},
{{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "10"}}},
{{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "11"}}},
{{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "11"}}},
{{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "2"}}},
{{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "2"}}},
{{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "3"}}},
{{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "3"}}},
{{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "4"}}},
{{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "4"}}},
{{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "5"}}},
{{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "5"}}},
{{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "6"}}},
{{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "6"}}},
{{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "7"}}},
{{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "7"}}},
{{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "8"}}},
{{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "8"}}},
{{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "9"}}},
{{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "9"}}},
{{"place", "city", "capital"}, {{"place", "city"}, {"capital", "any_value"}}},
{{"place", "state", "USA"}, {{"place", "state"}, {"addr:country", "US"}}},
{{"place", "state", "USA"}, {{"place", "state"}, {"is_in", "USA"}}},
{{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country", "USA"}}},
{{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country_code", "us"}}},
{{"power", "line", "underground"}, {{"power", "line"}, {"location", "underground"}}},
{{"railway", "abandoned", "bridge"}, {{"railway", "abandoned"}, {"bridge", "any_value"}}},
{{"railway", "abandoned", "tunnel"}, {{"railway", "abandoned"}, {"tunnel", "any_value"}}},
{{"railway", "funicular", "bridge"}, {{"railway", "funicular"}, {"bridge", "any_value"}}},
{{"railway", "funicular", "tunnel"}, {{"railway", "funicular"}, {"tunnel", "any_value"}}},
{{"railway", "light_rail", "bridge"}, {{"railway", "light_rail"}, {"bridge", "any_value"}}},
{{"railway", "light_rail", "tunnel"}, {{"railway", "light_rail"}, {"tunnel", "any_value"}}},
{{"railway", "monorail", "bridge"}, {{"railway", "monorail"}, {"bridge", "any_value"}}},
{{"railway", "monorail", "tunnel"}, {{"railway", "monorail"}, {"tunnel", "any_value"}}},
{{"railway", "narrow_gauge", "bridge"}, {{"railway", "narrow_gauge"}, {"bridge", "any_value"}}},
{{"railway", "narrow_gauge", "tunnel"}, {{"railway", "narrow_gauge"}, {"tunnel", "any_value"}}},
{{"railway", "preserved", "bridge"}, {{"railway", "preserved"}, {"bridge", "any_value"}}},
{{"railway", "preserved", "tunnel"}, {{"railway", "preserved"}, {"tunnel", "any_value"}}},
{{"railway", "rail", "bridge"}, {{"railway", "rail"}, {"bridge", "any_value"}}},
{{"railway", "rail", "motor_vehicle"}, {{"railway", "rail"}, {"motor_vehicle", "any_value"}}},
{{"railway", "rail", "tunnel"}, {{"railway", "rail"}, {"tunnel", "any_value"}}},
{{"railway", "station", "light_rail"}, {{"railway", "station"}, {"station", "light_rail"}}},
{{"railway", "station", "light_rail"}, {{"railway", "station"}, {"transport", "light_rail"}}},
{{"railway", "station", "monorail"}, {{"railway", "station"}, {"station", "monorail"}}},
{{"railway", "station", "monorail"}, {{"railway", "station"}, {"transport", "monorail"}}},
{{"railway", "station", "subway", "barcelona"}, {{"railway", "station"}, {"station", "subway"}, {"city", "barcelona"}}},
{{"railway", "station", "subway", "barcelona"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "barcelona"}}},
{{"railway", "station", "subway", "berlin"}, {{"railway", "station"}, {"station", "subway"}, {"city", "berlin"}}},
{{"railway", "station", "subway", "berlin"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "berlin"}}},
{{"railway", "station", "subway", "blue"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "blue"}}},
{{"railway", "station", "subway", "blue"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "blue"}}},
{{"railway", "station", "subway", "brown"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "brown"}}},
{{"railway", "station", "subway", "brown"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "brown"}}},
{{"railway", "station", "subway", "darkgreen"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "darkgreen"}}},
{{"railway", "station", "subway", "darkgreen"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "darkgreen"}}},
{{"railway", "station", "subway", "gray"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "gray"}}},
{{"railway", "station", "subway", "gray"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "gray"}}},
{{"railway", "station", "subway", "green"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "green"}}},
{{"railway", "station", "subway", "green"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "green"}}},
{{"railway", "station", "subway", "grey"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "grey"}}},
{{"railway", "station", "subway", "grey"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "grey"}}},
{{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"station", "subway"}, {"city", "kiev"}}},
{{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "kiev"}}},
{{"railway", "station", "subway", "lightblue"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "lightblue"}}},
{{"railway", "station", "subway", "lightblue"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "lightblue"}}},
{{"railway", "station", "subway", "lightgreen"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "lightgreen"}}},
{{"railway", "station", "subway", "lightgreen"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "lightgreen"}}},
{{"railway", "station", "subway", "london"}, {{"railway", "station"}, {"station", "subway"}, {"city", "london"}}},
{{"railway", "station", "subway", "london"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "london"}}},
{{"railway", "station", "subway", "madrid"}, {{"railway", "station"}, {"station", "subway"}, {"city", "madrid"}}},
{{"railway", "station", "subway", "madrid"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "madrid"}}},
{{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"station", "subway"}, {"city", "minsk"}}},
{{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "minsk"}}},
{{"railway", "station", "subway", "moscow"}, {{"railway", "station"}, {"station", "subway"}, {"city", "moscow"}}},
{{"railway", "station", "subway", "moscow"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "moscow"}}},
{{"railway", "station", "subway", "newyork"}, {{"railway", "station"}, {"station", "subway"}, {"city", "newyork"}}},
{{"railway", "station", "subway", "newyork"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "newyork"}}},
{{"railway", "station", "subway", "orange"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "orange"}}},
{{"railway", "station", "subway", "orange"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "orange"}}},
{{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"station", "subway"}, {"city", "paris"}}},
{{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "paris"}}},
{{"railway", "station", "subway", "purple"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "purple"}}},
{{"railway", "station", "subway", "purple"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "purple"}}},
{{"railway", "station", "subway", "red"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "red"}}},
{{"railway", "station", "subway", "red"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "red"}}},
{{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"station", "subway"}, {"city", "roma"}}},
{{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "roma"}}},
{{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"station", "subway"}, {"city", "spb"}}},
{{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "spb"}}},
{{"railway", "station", "subway", "violet"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "violet"}}},
{{"railway", "station", "subway", "violet"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "violet"}}},
{{"railway", "station", "subway", "yellow"}, {{"railway", "station"}, {"station", "subway"}, {"colour", "yellow"}}},
{{"railway", "station", "subway", "yellow"}, {{"railway", "station"}, {"transport", "subway"}, {"colour", "yellow"}}},
{{"railway", "station", "subway"}, {{"railway", "station"}, {"station", "subway"}}},
{{"railway", "station", "subway"}, {{"railway", "station"}, {"transport", "subway"}}},
{{"railway", "subway_entrance", "barcelona"}, {{"railway", "subway_entrance"}, {"city", "barcelona"}}},
{{"railway", "subway_entrance", "berlin"}, {{"railway", "subway_entrance"}, {"city", "berlin"}}},
{{"railway", "subway_entrance", "kiev"}, {{"railway", "subway_entrance"}, {"city", "kiev"}}},
{{"railway", "subway_entrance", "london"}, {{"railway", "subway_entrance"}, {"city", "london"}}},
{{"railway", "subway_entrance", "madrid"}, {{"railway", "subway_entrance"}, {"city", "madrid"}}},
{{"railway", "subway_entrance", "minsk"}, {{"railway", "subway_entrance"}, {"city", "minsk"}}},
{{"railway", "subway_entrance", "moscow"}, {{"railway", "subway_entrance"}, {"city", "moscow"}}},
{{"railway", "subway_entrance", "newyork"}, {{"railway", "subway_entrance"}, {"city", "newyork"}}},
{{"railway", "subway_entrance", "paris"}, {{"railway", "subway_entrance"}, {"city", "paris"}}},
{{"railway", "subway_entrance", "roma"}, {{"railway", "subway_entrance"}, {"city", "roma"}}},
{{"railway", "subway_entrance", "spb"}, {{"railway", "subway_entrance"}, {"city", "spb"}}},
{{"railway", "tram", "bridge"}, {{"railway", "tram"}, {"bridge", "any_value"}}},
{{"railway", "tram", "tunnel"}, {{"railway", "tram"}, {"tunnel", "any_value"}}},
{{"railway", "yard", "bridge"}, {{"railway", "yard"}, {"bridge", "any_value"}}},
{{"railway", "yard", "tunnel"}, {{"railway", "yard"}, {"tunnel", "any_value"}}},
{{"route", "ferry", "motor_vehicle"}, {{"route", "ferry"}, {"motor_vehicle", "any_value"}}},
{{"route", "ferry", "motorcar"}, {{"route", "ferry"}, {"motorcar", "any_value"}}},
{{"shop", "car_repair", "tyres"}, {{"shop", "car_repair"}, {"service", "tyres"}}},
{{"shop", "clothes"}, {{"shop", "clothes"}}},
{{"shop", "clothes"}, {{"shop", "fashion"}}},
{{"shop"}, {{"shop", "any_value"}}},
{{"sponsored"}, {{"sponsored", "any_value"}}},
{{"sport", "golf"}, {{"sport", "golf"}}},
{{"sport", "golf"}, {{"sport", "miniature_golf"}}},
{{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"artwork_type", "architecture"}}},
{{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"type", "architecture"}}},
{{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"artwork_type", "painting"}}},
{{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"type", "painting"}}},
{{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"artwork_type", "sculpture"}}},
{{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"type", "sculpture"}}},
{{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"artwork_type", "statue"}}},
{{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"type", "statue"}}},
{{"tourism", "attraction", "animal"}, {{"tourism", "attraction"}, {"attraction", "animal"}}},
{{"tourism", "attraction", "specified"}, {{"tourism", "attraction"}, {"attraction", "specified"}}},
{{"tourism", "information", "board"}, {{"tourism", "information"}, {"information", "board"}}},
{{"tourism", "information", "guidepost"}, {{"tourism", "information"}, {"information", "guidepost"}}},
{{"tourism", "information", "map"}, {{"tourism", "information"}, {"information", "map"}}},
{{"tourism", "information", "office"}, {{"tourism", "information"}, {"information", "office"}}},
{{"waterway", "canal", "tunnel"}, {{"waterway", "canal"}, {"tunnel", "any_value"}}},
{{"waterway", "river", "tunnel"}, {{"waterway", "river"}, {"tunnel", "any_value"}}},
{{"waterway", "stream", "ephemeral"}, {{"waterway", "stream"}, {"intermittent", "ephemeral"}}},
{{"waterway", "stream", "intermittent"}, {{"waterway", "stream"}, {"intermittent", "yes"}}},
};
for (auto const & type : complexTypes)
{
auto const params = GetFeatureBuilderParams(type.second);
TEST_EQUAL(params.m_types.size(), 1, (type, params));
TEST(params.IsTypeExist(GetType(type.first)), (type, params));
}
}