blob: 19e353062e5f6b758754d2b2d71ecfb4b78f4671 [file] [log] [blame]
/*
* Copyright 2009 Google Inc.
*
* 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.gwt.i18n.server;
import junit.framework.TestCase;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Test of RegionInheritance.
*/
public class RegionInheritanceTest extends TestCase {
/**
* Test method for {@link com.google.gwt.i18n.server.RegionInheritance#findCommonParent(java.lang.String, java.lang.String)}.
*/
public void testFindCommonParent() {
assertEquals("001", RegionInheritance.findCommonParent("US", "KZ"));
assertEquals("019", RegionInheritance.findCommonParent("US", "MX"));
assertEquals("021", RegionInheritance.findCommonParent("US", "CA"));
assertEquals("419", RegionInheritance.findCommonParent("BR", "MX"));
assertEquals("005", RegionInheritance.findCommonParent("BR", "AR"));
assertNull(RegionInheritance.findCommonParent("BR", null));
assertNull(RegionInheritance.findCommonParent(null, "BR"));
assertNull(RegionInheritance.findCommonParent(null, null));
assertNull(RegionInheritance.findCommonParent("US", "XQZ"));
}
/**
* Test method for {@link com.google.gwt.i18n.server.RegionInheritance#getAllAncestors(java.lang.String)}.
*/
public void testGetAllAncestors() {
List<String> ancestors = RegionInheritance.getAllAncestors("US");
assertEquals(3, ancestors.size());
assertTrue("Should have contained 001", ancestors.contains("001"));
assertTrue("Should have contained 021", ancestors.contains("021"));
assertTrue("Should have contained 019", ancestors.contains("019"));
}
/**
* Test method for {@link com.google.gwt.i18n.server.RegionInheritance#getImmediateParents(java.lang.String)}.
*/
public void testGetImmediateParents() {
// TODO(jat): adjust if the inheritance data is modified to allow multiple
// parents.
Set<String> parents = RegionInheritance.getImmediateParents("US");
assertEquals(1, parents.size());
assertEquals("021", parents.iterator().next());
parents = RegionInheritance.getImmediateParents("BO");
assertEquals(1, parents.size());
assertEquals("005", parents.iterator().next());
parents = RegionInheritance.getImmediateParents("005");
assertEquals(1, parents.size());
assertEquals("419", parents.iterator().next());
}
/**
* Test method for {@link com.google.gwt.i18n.server.RegionInheritance#isParentOf(java.lang.String, java.lang.String)}.
*/
public void testIsParentOf() {
assertTrue(RegionInheritance.isParentOf(null, null));
assertFalse(RegionInheritance.isParentOf(null, "US"));
assertFalse(RegionInheritance.isParentOf("US", null));
assertTrue(RegionInheritance.isParentOf("US", "US"));
assertTrue(RegionInheritance.isParentOf("019", "US"));
assertFalse(RegionInheritance.isParentOf("419", "US"));
assertTrue(RegionInheritance.isParentOf("419", "MX"));
assertTrue(RegionInheritance.isParentOf("001", "US"));
assertFalse(RegionInheritance.isParentOf("US", "001"));
}
/**
* Verifies some basic assumptions about the map.
*/
public void testMap() {
Map<String, String> map = RegionInheritance.getInheritanceMap();
Set<String> regions = map.keySet();
for (String region : regions) {
if (region.length() == 2) {
if (!Character.isLetter(region.charAt(0))
|| !Character.isLetter(region.charAt(1))) {
fail("2-character region names should be letters");
}
} else if (region.length() == 3) {
if (!Character.isDigit(region.charAt(0))
|| !Character.isDigit(region.charAt(1))
|| !Character.isDigit(region.charAt(2))) {
fail("3-character region names should be numeric");
}
} else {
fail("Regions in parent map should be 2 letters or 3 digits");
}
checkUltimateParent(map, region, "001");
}
}
private void checkUltimateParent(Map<String, String> map, String region,
String match) {
String origRegion = region;
while (region != null) {
if (region.equals(match)) {
return;
}
region = map.get(region);
}
fail("Ultimate parent of " + origRegion + " not " + match);
}
}