| /* |
| * 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); |
| } |
| } |