blob: 5a03e075f92cc2d1d8bc8ed1429ece454c3112cf [file] [log] [blame]
/*
* 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"));
}
}