Author: dan.j.allen
Date: 2008-09-20 03:08:12 -0400 (Sat, 20 Sep 2008)
New Revision: 9036
Added:
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/MockContainerTest.java
Modified:
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/InterpolatorTest.java
Log:
create more tests for JBSEAM-2566
Modified:
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/InterpolatorTest.java
===================================================================
---
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/InterpolatorTest.java 2008-09-20
06:59:56 UTC (rev 9035)
+++
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/InterpolatorTest.java 2008-09-20
07:08:12 UTC (rev 9036)
@@ -3,46 +3,62 @@
import java.text.DateFormat;
import java.util.Date;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.core.Expressions;
import org.jboss.seam.core.Interpolator;
+import org.jboss.seam.core.Locale;
import org.testng.Assert;
import org.testng.annotations.Test;
-
-public class InterpolatorTest
+public class InterpolatorTest extends MockContainerTest
{
+ private static final String CHOICE_EXPR = "There {0,choice,0#are no files|1#is
one file|1<are {0,number,integer} files}.";
- static final String CHOICE_EXPR = "There {0,choice,0#are no files|1#is one
file|1<are {0,number,integer} files}.";
+ @Override
+ protected Class[] getComponentsToInstall()
+ {
+ return new Class[] { Interpolator.class, Locale.class, Expressions.class };
+ }
+
@Test
public void testInterpolation()
{
Interpolator interpolator = Interpolator.instance();
- Assert.assertEquals("3 5 7", interpolator.interpolate("#0 #1
#2", 3, 5, 7));
- Assert.assertEquals("3 5 7", interpolator.interpolate("{0} {1}
{2}", 3, 5, 7));
+ Assert.assertEquals(interpolator.interpolate("#0 #1 #2", 3, 5, 7),
"3 5 7");
+ Assert.assertEquals(interpolator.interpolate("{0} {1} {2}", 3, 5, 7),
"3 5 7");
// this tests that the result of an expression evaluation is not evaluated again
- Assert.assertEquals("{0}", interpolator.interpolate("{1}",
"bad", "{0}"));
+ Assert.assertEquals(interpolator.interpolate("{1}", "bad",
"{0}"), "{0}");
// this tests that embedded {} expressions are parsed correctly.
- Assert.assertEquals("There are no files.",
interpolator.interpolate(CHOICE_EXPR, 0));
- Assert.assertEquals("There is one file.",
interpolator.interpolate(CHOICE_EXPR, 1));
- Assert.assertEquals("There are 2 files.",
interpolator.interpolate(CHOICE_EXPR, 2));
+ Assert.assertEquals(interpolator.interpolate(CHOICE_EXPR, 0), "There are no
files.");
+ Assert.assertEquals(interpolator.interpolate(CHOICE_EXPR, 1), "There is one
file.");
+ Assert.assertEquals(interpolator.interpolate(CHOICE_EXPR, 2), "There are 2
files.");
// test sequences of multiple #
- Assert.assertEquals("2", interpolator.interpolate("#0",2));
- Assert.assertEquals("#2",
interpolator.interpolate("##0",2));
- Assert.assertEquals("##2",
interpolator.interpolate("###0",2));
+ Assert.assertEquals(interpolator.interpolate("#0",2), "2");
+ Assert.assertEquals(interpolator.interpolate("##0",2),
"#2");
+ Assert.assertEquals(interpolator.interpolate("###0",2),
"##2");
+ // test a value expression in the mix
+ Contexts.getEventContext().set("contextVariable", "value");
+ Assert.assertEquals(interpolator.interpolate("#{contextVariable}"),
"value");
+ Assert.assertEquals(interpolator.interpolate("#0 #{contextVariable}
#1", "a", "z"), "a value z");
+ Assert.assertEquals(interpolator.interpolate("#0 ##{contextVariable}
#1", "a", "z"), "a #value z");
+
Date date = new Date(0);
- Assert.assertEquals(DateFormat.getDateInstance(DateFormat.SHORT).format(date),
interpolator.interpolate("{0,date,short}", date));
+ Assert.assertEquals(interpolator.interpolate("{0,date,short}", date),
DateFormat.getDateInstance(DateFormat.SHORT).format(date));
// test that a messageformat error doesn't blow up
- Assert.assertEquals("{nosuchmessage}",
interpolator.interpolate("{nosuchmessage}"));
+ Assert.assertEquals(interpolator.interpolate("{nosuchmessage}"),
"{nosuchmessage}");
- try {
+ try
+ {
interpolator.interpolate("hello #{", (Object) null);
- } catch (Throwable t) {
+ } catch (Throwable t)
+ {
Assert.fail("interpolator raised an exception");
}
}
Added:
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/MockContainerTest.java
===================================================================
---
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/MockContainerTest.java
(rev 0)
+++
branches/community/Seam_2_0/src/test/unit/org/jboss/seam/test/unit/MockContainerTest.java 2008-09-20
07:08:12 UTC (rev 9036)
@@ -0,0 +1,54 @@
+package org.jboss.seam.test.unit;
+
+import org.jboss.seam.Component;
+import org.jboss.seam.Seam;
+import org.jboss.seam.contexts.ApplicationContext;
+import org.jboss.seam.contexts.Context;
+import org.jboss.seam.contexts.Lifecycle;
+import org.jboss.seam.contexts.ServletLifecycle;
+import org.jboss.seam.core.Init;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.mock.MockExternalContext;
+import org.jboss.seam.mock.MockServletContext;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+/**
+ * A simple base test class that registers components according to class so that
+ * they can be looked up successfully using ComponentClass.instance(), as
+ * required by much of Seam's internal API.
+ */
+public abstract class MockContainerTest
+{
+ @BeforeMethod
+ protected void setUp()
+ {
+ MockServletContext servletContext = new MockServletContext();
+ ServletLifecycle.beginApplication(servletContext);
+ MockExternalContext externalContext = new MockExternalContext(servletContext);
+ Context appContext = new ApplicationContext(externalContext.getApplicationMap());
+ installComponent(appContext, Manager.class);
+ for (Class c : getComponentsToInstall())
+ {
+ installComponent(appContext, c);
+ }
+ appContext.set(Seam.getComponentName(Init.class), new Init());
+ Lifecycle.beginCall();
+ }
+
+ protected Class[] getComponentsToInstall()
+ {
+ return new Class[] {};
+ }
+
+ @AfterMethod
+ protected void tearDown()
+ {
+ Lifecycle.endCall();
+ }
+
+ protected void installComponent(Context appContext, Class clazz)
+ {
+ appContext.set(Seam.getComponentName(clazz) + ".component", new
Component(clazz));
+ }
+}