| /* |
| * Copyright 2010 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.tools.cldr; |
| |
| import com.google.gwt.i18n.server.GwtLocaleFactoryImpl; |
| import com.google.gwt.i18n.shared.GwtLocale; |
| |
| import junit.framework.TestCase; |
| |
| import java.util.Arrays; |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| /** |
| * Test the LocaleData class. |
| */ |
| public class LocaleDataTest extends TestCase { |
| |
| private static final GwtLocaleFactoryImpl localeFactory; |
| |
| static { |
| localeFactory = new GwtLocaleFactoryImpl(); |
| } |
| |
| /** |
| * Test method for {@link LocaleData#getAllLocales()}. |
| */ |
| public void testGetAllLocales() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "ar", "ar_IQ")); |
| Set<GwtLocale> locales = localeData.getAllLocales(); |
| assertEquals(5, locales.size()); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| locales = localeData.getAllLocales(); |
| assertEquals(5, locales.size()); |
| GwtLocale localeAr = localeFactory.fromString("ar"); |
| localeData.addEntry("bar", localeAr, "k1", "v1"); |
| locales = localeData.getAllLocales(); |
| assertEquals(5, locales.size()); |
| } |
| |
| /** |
| * Test method for {@link LocaleData#getNonEmptyLocales()}. |
| */ |
| public void testGetNonEmptyLocales() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "ar", "ar_IQ")); |
| Iterator<GwtLocale> it = localeData.getNonEmptyLocales().iterator(); |
| assertFalse(it.hasNext()); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| it = localeData.getNonEmptyLocales().iterator(); |
| assertTrue(it.hasNext()); |
| assertEquals(localeEn, it.next()); |
| assertFalse(it.hasNext()); |
| GwtLocale localeAr = localeFactory.fromString("ar"); |
| localeData.addEntry("bar", localeAr, "k1", "v1"); |
| it = localeData.getNonEmptyLocales().iterator(); |
| assertTrue(it.hasNext()); |
| assertNotNull(it.next()); |
| assertTrue(it.hasNext()); |
| assertNotNull(it.next()); |
| assertFalse(it.hasNext()); |
| } |
| |
| /** |
| * Test method for {@link LocaleData#getNonEmptyLocales(java.lang.String)}. |
| */ |
| public void testGetNonEmptyLocalesString() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "ar", "ar_IQ")); |
| Iterator<GwtLocale> it = localeData.getNonEmptyLocales("foo").iterator(); |
| assertFalse(it.hasNext()); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| it = localeData.getNonEmptyLocales("foo").iterator(); |
| assertTrue(it.hasNext()); |
| assertEquals(localeEn, it.next()); |
| assertFalse(it.hasNext()); |
| it = localeData.getNonEmptyLocales("bar").iterator(); |
| assertFalse(it.hasNext()); |
| GwtLocale localeAr = localeFactory.fromString("ar"); |
| localeData.addEntry("bar", localeAr, "k1", "v1"); |
| it = localeData.getNonEmptyLocales("foo").iterator(); |
| assertTrue(it.hasNext()); |
| assertEquals(localeEn, it.next()); |
| assertFalse(it.hasNext()); |
| it = localeData.getNonEmptyLocales("bar").iterator(); |
| assertTrue(it.hasNext()); |
| assertEquals(localeAr, it.next()); |
| assertFalse(it.hasNext()); |
| it = localeData.getNonEmptyLocales("baz").iterator(); |
| assertFalse(it.hasNext()); |
| } |
| |
| /** |
| * Test method for |
| * {@link LocaleData#inheritsFrom(com.google.gwt.i18n.shared.GwtLocale)}. |
| */ |
| public void testInheritsFrom() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "en_US_VARIANT", "ar", |
| "ar_IQ")); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| GwtLocale localeEnUs = localeFactory.fromString("en_us"); |
| GwtLocale localeEnUsVariant = localeFactory.fromString("en_us_variant"); |
| GwtLocale localeDefault = localeFactory.getDefault(); |
| assertEquals(null, localeData.inheritsFrom(localeDefault)); |
| assertEquals(localeEn, localeData.inheritsFrom(localeEnUs)); |
| assertEquals(localeEn, localeData.inheritsFrom(localeEnUsVariant)); |
| assertEquals(localeDefault, localeData.inheritsFrom(localeEn)); |
| GwtLocale localeAr = localeFactory.fromString("ar"); |
| assertEquals(localeDefault, localeData.inheritsFrom(localeAr)); |
| } |
| |
| /** |
| * Test method for |
| * {@link LocaleData#inheritsFrom(java.lang.String, com.google.gwt.i18n.shared.GwtLocale)} |
| * . |
| */ |
| public void testInheritsFromWithCategory() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "en_US_VARIANT", "ar", |
| "ar_IQ")); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| GwtLocale localeEnUs = localeFactory.fromString("en_us"); |
| GwtLocale localeEnUsVariant = localeFactory.fromString("en_us_variant"); |
| GwtLocale localeDefault = localeFactory.getDefault(); |
| assertEquals(localeEn, localeData.inheritsFrom("foo", localeEnUs)); |
| assertEquals(localeEn, localeData.inheritsFrom("foo", localeEnUsVariant)); |
| assertEquals(localeDefault, localeData.inheritsFrom("foo", localeEn)); |
| assertEquals(localeDefault, localeData.inheritsFrom("bar", localeEnUs)); |
| assertEquals(localeDefault, localeData.inheritsFrom("bar", localeEnUsVariant)); |
| GwtLocale localeAr = localeFactory.fromString("ar"); |
| assertEquals(localeDefault, localeData.inheritsFrom("foo", localeAr)); |
| assertEquals(localeDefault, localeData.inheritsFrom("bar", localeAr)); |
| } |
| |
| /** |
| * Test method for {@link LocaleData#removeCompleteDuplicates()}. |
| */ |
| public void testRemoveCompleteDuplicates() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "ar", "ar_IQ")); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| GwtLocale localeEnUs = localeFactory.fromString("en_us"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| localeData.addEntry("foo", localeEn, "k2", "v2"); |
| localeData.addEntry("foo", localeEnUs, "k1", "v1"); |
| localeData.addEntry("foo", localeEnUs, "k2", "v2"); |
| localeData.removeCompleteDuplicates(); |
| Set<GwtLocale> locales = localeData.getNonEmptyLocales(); |
| assertEquals(1, locales.size()); |
| localeData.addEntry("foo", localeEnUs, "k2", "v2a"); |
| locales = localeData.getNonEmptyLocales(); |
| assertEquals(2, locales.size()); |
| } |
| |
| /** |
| * Test method for {@link LocaleData#removeDuplicates()}. |
| */ |
| public void testRemoveDuplicates() { |
| LocaleData localeData = |
| new LocaleData(localeFactory, Arrays.asList("root", "en", "en_US", "ar", "ar_IQ")); |
| GwtLocale localeEn = localeFactory.fromString("en"); |
| GwtLocale localeEnUs = localeFactory.fromString("en_us"); |
| localeData.addEntry("foo", localeEn, "k1", "v1"); |
| localeData.addEntry("foo", localeEn, "k2", "v2"); |
| localeData.addEntry("foo", localeEnUs, "k1", "v1"); |
| localeData.addEntry("foo", localeEnUs, "k2", "v2a"); |
| localeData.removeDuplicates(); |
| Set<GwtLocale> locales = localeData.getNonEmptyLocales(); |
| assertEquals(2, locales.size()); |
| assertEquals("v2a", localeData.getEntry("foo", localeEnUs, "k2")); |
| localeData.addEntry("foo", localeEnUs, "k2", "v2"); |
| localeData.removeDuplicates(); |
| locales = localeData.getNonEmptyLocales(); |
| assertEquals(1, locales.size()); |
| assertNull(localeData.getEntry("foo", localeEnUs, "k2")); |
| } |
| } |