diff --git a/indexer/indexer_tests/road_shields_parser_tests.cpp b/indexer/indexer_tests/road_shields_parser_tests.cpp index 6feaa42733..fe9f3c1a57 100644 --- a/indexer/indexer_tests/road_shields_parser_tests.cpp +++ b/indexer/indexer_tests/road_shields_parser_tests.cpp @@ -8,27 +8,35 @@ UNIT_TEST(RoadShields_Smoke) auto shields = GetRoadShields("France", "D 116A"); TEST_EQUAL(shields.size(), 1, ()); - TEST_EQUAL(shields.begin()->m_type, RoadShieldType::Generic_Orange, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Orange, ()); shields = GetRoadShields("Belarus", "M1"); // latin letter M TEST_EQUAL(shields.size(), 1, ()); - TEST_EQUAL(shields.begin()->m_type, RoadShieldType::Generic_Red, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Red, ()); shields = GetRoadShields("Belarus", "Е2"); // cyrillic letter Е TEST_EQUAL(shields.size(), 1, ()); - TEST_EQUAL(shields.begin()->m_type, RoadShieldType::Generic_Green, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Green, ()); shields = GetRoadShields("Ukraine", "Р50"); // cyrillic letter Р TEST_EQUAL(shields.size(), 1, ()); - TEST_EQUAL(shields.begin()->m_type, RoadShieldType::Generic_Blue, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Blue, ()); shields = GetRoadShields("Malaysia", "AH7"); TEST_EQUAL(shields.size(), 1, ()); - TEST_EQUAL(shields.begin()->m_type, RoadShieldType::Generic_Blue, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Blue, ()); shields = GetRoadShields("Germany", "A 3;A 7"); TEST_EQUAL(shields.size(), 2, ()); - auto it = shields.begin(); - TEST_EQUAL(it->m_type, RoadShieldType::Generic_Blue, ()); - TEST_EQUAL((++it)->m_type, RoadShieldType::Generic_Blue, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_Blue, ()); + TEST_EQUAL(shields[1].m_type, RoadShieldType::Generic_Blue, ()); + + shields = GetRoadShields("US", "US:IN"); + TEST_EQUAL(shields.size(), 1, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Default, ()); + + shields = GetRoadShields("US", "SR 38;US:IN"); + TEST_EQUAL(shields.size(), 2, ()); + TEST_EQUAL(shields[0].m_type, RoadShieldType::Generic_White, ()); + TEST_EQUAL(shields[1].m_type, RoadShieldType::Default, ()); } diff --git a/indexer/road_shields_parser.cpp b/indexer/road_shields_parser.cpp index f3afe9bdfb..9359333e9b 100644 --- a/indexer/road_shields_parser.cpp +++ b/indexer/road_shields_parser.cpp @@ -17,13 +17,15 @@ namespace uint32_t constexpr kMaxRoadShieldBytesSize = 8; -std::array const kFederalCode = {{"US", "SR", "FSR"}}; +std::array const kFederalCode = {{"US", "FSR"}}; -std::array const kStatesCode = {{ +std::array const kStatesCode = {{ "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AS", "GU", "MP", "PR", "VI", "UM", "FM", "MH", "PW", + + "SR", // common prefix for State Road }}; std::array const kModifiers = {{"alt", "alternate", "bus", "business", "bypass",