Author: jverhaeg(a)redhat.com
Date: 2008-08-18 12:58:48 -0400 (Mon, 18 Aug 2008)
New Revision: 438
Modified:
trunk/dna-common/src/test/java/org/jboss/dna/common/AbstractI18nTest.java
Log:
DNA-206: Changed AbstractI18nTest to have a single test that first analyzes i18n fields
for problems, then checks for global problems, where field checking triggers lazy
localization that may reveal global problems.
Modified: trunk/dna-common/src/test/java/org/jboss/dna/common/AbstractI18nTest.java
===================================================================
--- trunk/dna-common/src/test/java/org/jboss/dna/common/AbstractI18nTest.java 2008-08-17
22:33:27 UTC (rev 437)
+++ trunk/dna-common/src/test/java/org/jboss/dna/common/AbstractI18nTest.java 2008-08-18
16:58:48 UTC (rev 438)
@@ -45,26 +45,30 @@
@Test
@SuppressWarnings( "unchecked" )
- public void shouldNotHaveLocalizationProblems() throws Exception {
- Method method =
i18nClass.getDeclaredMethod("getLocalizationProblemLocales", (Class[])null);
- Set<Locale> locales = (Set<Locale>)method.invoke(null,
(Object[])null);
- method = i18nClass.getDeclaredMethod("getLocalizationProblems",
Locale.class);
- for (Locale locale : locales) {
- assertThat(((Set<String>)method.invoke(null, locale)).isEmpty(),
is(true));
- }
- }
-
- @Test
- public void shouldNotHaveProblems() throws IllegalAccessException {
+ public void shouldNotHaveProblems() throws Exception {
for (Field fld : i18nClass.getDeclaredFields()) {
if (fld.getType() == I18n.class && (fld.getModifiers() &
Modifier.PUBLIC) == Modifier.PUBLIC
&& (fld.getModifiers() & Modifier.STATIC) == Modifier.STATIC
&& (fld.getModifiers() & Modifier.FINAL) != Modifier.FINAL)
{
I18n i18n = (I18n)fld.get(null);
if (i18n.hasProblem()) {
- fail();
+ fail(i18n.problem());
}
}
}
+ // Check for global problems after checking field problems since global problems
are detected lazily upon field usage
+ Method method =
i18nClass.getDeclaredMethod("getLocalizationProblemLocales", (Class[])null);
+ Set<Locale> locales = (Set<Locale>)method.invoke(null,
(Object[])null);
+ if (!locales.isEmpty()) {
+ method = i18nClass.getDeclaredMethod("getLocalizationProblems",
Locale.class);
+ for (Locale locale : locales) {
+ Set<String> problems = (Set<String>)method.invoke(null,
locale);
+ try {
+ assertThat(problems.isEmpty(), is(true));
+ } catch (AssertionError error) {
+ fail(problems.iterator().next());
+ }
+ }
+ }
}
}
Show replies by date