/*
* Copyright 2014 Google Inc. All rights reserved.
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.google.maps.model;
import static com.google.maps.internal.StringJoin.UrlValue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import com.google.maps.SmallTests;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import java.util.HashMap;
import java.util.Map;
@Category(SmallTests.class)
public class EnumsTest {
@Test
public void testUnknown() throws Exception {
assertNotNull(AddressComponentType.UNKNOWN); // Does not implement UrlValue.
assertCannotGetUrlValue(AddressType.UNKNOWN);
assertCannotGetUrlValue(LocationType.UNKNOWN);
assertCannotGetUrlValue(TravelMode.UNKNOWN);
}
@Test
public void testCanonicalLiteralsForAddressType() {
Map<AddressType, String> addressTypeToLiteralMap = new HashMap<AddressType, String>();
addressTypeToLiteralMap.put(AddressType.STREET_ADDRESS, "street_address");
addressTypeToLiteralMap.put(AddressType.ROUTE, "route");
addressTypeToLiteralMap.put(AddressType.INTERSECTION, "intersection");
addressTypeToLiteralMap.put(AddressType.POLITICAL, "political");
addressTypeToLiteralMap.put(AddressType.COUNTRY, "country");
addressTypeToLiteralMap.put(AddressType.ADMINISTRATIVE_AREA_LEVEL_1,
"administrative_area_level_1");
addressTypeToLiteralMap.put(AddressType.ADMINISTRATIVE_AREA_LEVEL_2,
"administrative_area_level_2");
addressTypeToLiteralMap.put(AddressType.ADMINISTRATIVE_AREA_LEVEL_3,
"administrative_area_level_3");
addressTypeToLiteralMap.put(AddressType.ADMINISTRATIVE_AREA_LEVEL_4,
"administrative_area_level_4");
addressTypeToLiteralMap.put(AddressType.ADMINISTRATIVE_AREA_LEVEL_5,
"administrative_area_level_5");
addressTypeToLiteralMap.put(AddressType.COLLOQUIAL_AREA, "colloquial_area");
addressTypeToLiteralMap.put(AddressType.LOCALITY, "locality");
addressTypeToLiteralMap.put(AddressType.WARD, "ward");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY, "sublocality");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY_LEVEL_1, "sublocality_level_1");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY_LEVEL_2, "sublocality_level_2");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY_LEVEL_3, "sublocality_level_3");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY_LEVEL_4, "sublocality_level_4");
addressTypeToLiteralMap.put(AddressType.SUBLOCALITY_LEVEL_5, "sublocality_level_5");
addressTypeToLiteralMap.put(AddressType.NEIGHBORHOOD, "neighborhood");
addressTypeToLiteralMap.put(AddressType.PREMISE, "premise");
addressTypeToLiteralMap.put(AddressType.SUBPREMISE, "subpremise");
addressTypeToLiteralMap.put(AddressType.POSTAL_CODE, "postal_code");
addressTypeToLiteralMap.put(AddressType.NATURAL_FEATURE, "natural_feature");
addressTypeToLiteralMap.put(AddressType.AIRPORT, "airport");
addressTypeToLiteralMap.put(AddressType.PARK, "park");
addressTypeToLiteralMap.put(AddressType.POINT_OF_INTEREST, "point_of_interest");
addressTypeToLiteralMap.put(AddressType.POST_OFFICE, "post_office");
addressTypeToLiteralMap.put(AddressType.PLACE_OF_WORSHIP, "place_of_worship");
addressTypeToLiteralMap.put(AddressType.BUS_STATION, "bus_station");
addressTypeToLiteralMap.put(AddressType.TRAIN_STATION, "train_station");
addressTypeToLiteralMap.put(AddressType.SUBWAY_STATION, "subway_station");
addressTypeToLiteralMap.put(AddressType.TRANSIT_STATION, "transit_station");
addressTypeToLiteralMap.put(AddressType.CHURCH, "church");
addressTypeToLiteralMap.put(AddressType.FINANCE, "finance");
addressTypeToLiteralMap.put(AddressType.ESTABLISHMENT, "establishment");
addressTypeToLiteralMap.put(AddressType.POSTAL_TOWN, "postal_town");
addressTypeToLiteralMap.put(AddressType.UNIVERSITY, "university");
for (Map.Entry<AddressType, String> addressTypeLiteralPair :
addressTypeToLiteralMap.entrySet()) {
assertEquals(addressTypeLiteralPair.getValue(),
addressTypeLiteralPair.getKey().toCanonicalLiteral());
}
}
@Test
public void testCanonicalLiteralsForAddressComponentType() {
Map<AddressComponentType, String> addressComponentTypeToLiteralMap =
new HashMap<AddressComponentType, String>();
addressComponentTypeToLiteralMap.put(AddressComponentType.STREET_ADDRESS, "street_address");
addressComponentTypeToLiteralMap.put(AddressComponentType.ROUTE, "route");
addressComponentTypeToLiteralMap.put(AddressComponentType.INTERSECTION, "intersection");
addressComponentTypeToLiteralMap.put(AddressComponentType.POLITICAL, "political");
addressComponentTypeToLiteralMap.put(AddressComponentType.COUNTRY, "country");
addressComponentTypeToLiteralMap.put(AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_1,
"administrative_area_level_1");
addressComponentTypeToLiteralMap.put(AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_2,
"administrative_area_level_2");
addressComponentTypeToLiteralMap.put(AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_3,
"administrative_area_level_3");
addressComponentTypeToLiteralMap.put(AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_4,
"administrative_area_level_4");
addressComponentTypeToLiteralMap.put(AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_5,
"administrative_area_level_5");
addressComponentTypeToLiteralMap.put(AddressComponentType.COLLOQUIAL_AREA, "colloquial_area");
addressComponentTypeToLiteralMap.put(AddressComponentType.LOCALITY, "locality");
addressComponentTypeToLiteralMap.put(AddressComponentType.WARD, "ward");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY, "sublocality");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY_LEVEL_1,
"sublocality_level_1");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY_LEVEL_2,
"sublocality_level_2");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY_LEVEL_3,
"sublocality_level_3");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY_LEVEL_4,
"sublocality_level_4");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBLOCALITY_LEVEL_5,
"sublocality_level_5");
addressComponentTypeToLiteralMap.put(AddressComponentType.NEIGHBORHOOD, "neighborhood");
addressComponentTypeToLiteralMap.put(AddressComponentType.PREMISE, "premise");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBPREMISE, "subpremise");
addressComponentTypeToLiteralMap.put(AddressComponentType.POSTAL_CODE, "postal_code");
addressComponentTypeToLiteralMap.put(AddressComponentType.POST_BOX, "post_box");
addressComponentTypeToLiteralMap.put(AddressComponentType.POSTAL_CODE_PREFIX,
"postal_code_prefix");
addressComponentTypeToLiteralMap.put(AddressComponentType.POSTAL_CODE_SUFFIX,
"postal_code_suffix");
addressComponentTypeToLiteralMap.put(AddressComponentType.NATURAL_FEATURE, "natural_feature");
addressComponentTypeToLiteralMap.put(AddressComponentType.AIRPORT, "airport");
addressComponentTypeToLiteralMap.put(AddressComponentType.PARK, "park");
addressComponentTypeToLiteralMap.put(AddressComponentType.FLOOR, "floor");
addressComponentTypeToLiteralMap.put(AddressComponentType.PARKING, "parking");
addressComponentTypeToLiteralMap.put(AddressComponentType.POINT_OF_INTEREST,
"point_of_interest");
addressComponentTypeToLiteralMap.put(AddressComponentType.BUS_STATION, "bus_station");
addressComponentTypeToLiteralMap.put(AddressComponentType.TRAIN_STATION, "train_station");
addressComponentTypeToLiteralMap.put(AddressComponentType.SUBWAY_STATION, "subway_station");
addressComponentTypeToLiteralMap.put(AddressComponentType.TRANSIT_STATION, "transit_station");
addressComponentTypeToLiteralMap.put(AddressComponentType.ESTABLISHMENT, "establishment");
addressComponentTypeToLiteralMap.put(AddressComponentType.POSTAL_TOWN, "postal_town");
addressComponentTypeToLiteralMap.put(AddressComponentType.ROOM, "room");
addressComponentTypeToLiteralMap.put(AddressComponentType.STREET_NUMBER, "street_number");
for (Map.Entry<AddressComponentType, String> AddressComponentTypeLiteralPair :
addressComponentTypeToLiteralMap.entrySet()) {
assertEquals(AddressComponentTypeLiteralPair.getValue(),
AddressComponentTypeLiteralPair.getKey().toCanonicalLiteral());
}
assertEquals(addressComponentTypeToLiteralMap.size() + 1, // 1 for unknown
AddressComponentType.values().length);
}
private static <T extends UrlValue> void assertCannotGetUrlValue(T unknown) {
assertNotNull(unknown);
try {
unknown.toUrlValue();
fail("Expected to throw UnsupportedOperationException");
} catch (UnsupportedOperationException expected) {
// Expected.
}
}
}