TILESSB-11
Completed tests for tiles-autotag-core-runtime.
git-svn-id: https://svn.apache.org/repos/asf/tiles/sandbox/trunk/tiles-autotag@1037446 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-autotag-core-runtime/pom.xml b/tiles-autotag-core-runtime/pom.xml
index 90a3647..898f187 100644
--- a/tiles-autotag-core-runtime/pom.xml
+++ b/tiles-autotag-core-runtime/pom.xml
@@ -22,5 +22,11 @@
<version>4.7</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>3.0</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/tiles-autotag-core-runtime/src/main/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtil.java b/tiles-autotag-core-runtime/src/main/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtil.java
index 4407beb..6eb91a0 100644
--- a/tiles-autotag-core-runtime/src/main/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtil.java
+++ b/tiles-autotag-core-runtime/src/main/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtil.java
@@ -31,7 +31,7 @@
* Utilities to work with compose stacks.
*
* @version $Rev$ $Date$
- * @since 2.2.0
+ * @since 3.0.0
*/
public final class ComposeStackUtil {
@@ -53,7 +53,7 @@
* @param composeStack The compose stack to evaluate.
* @param clazz The class to check.
* @return The first ancestor that is assignable to the class, or null if not found.
- * @since 2.2.0
+ * @since 3.0.0
*/
public static Object findAncestorWithClass(Deque<Object> composeStack, Class<?> clazz) {
for (Object obj : composeStack) {
@@ -70,7 +70,7 @@
*
* @param env The current FreeMarker environment.
* @return The compose stack.
- * @since 2.2.0
+ * @since 3.0.0
*/
@SuppressWarnings("unchecked")
public static Deque<Object> getComposeStack(Request request) {
diff --git a/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/AbstractModelBodyTest.java b/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/AbstractModelBodyTest.java
new file mode 100644
index 0000000..62c9b2f
--- /dev/null
+++ b/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/AbstractModelBodyTest.java
@@ -0,0 +1,123 @@
+/**
+ *
+ */
+package org.apache.tiles.autotag.core.runtime;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import org.apache.tiles.autotag.core.runtime.util.NullWriter;
+import org.junit.Test;
+
+/**
+ * Tests {@link AbstractModelBody}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class AbstractModelBodyTest {
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.core.runtime.AbstractModelBody#evaluate()}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testEvaluate() throws IOException {
+ Writer writer = createMock(Writer.class);
+ AbstractModelBody modelBody = createMockBuilder(AbstractModelBody.class).withConstructor(writer).createMock();
+
+ modelBody.evaluate(writer);
+
+ replay(writer, modelBody);
+ modelBody.evaluate();
+ verify(writer, modelBody);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.core.runtime.AbstractModelBody#evaluateAsString()}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testEvaluateAsString() throws IOException {
+ AbstractModelBody modelBody = new MockModelBody(null, "return me");
+ assertEquals("return me", modelBody.evaluateAsString());
+
+ modelBody = new MockModelBody(null, "\n \n");
+ assertNull(modelBody.evaluateAsString());
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.core.runtime.AbstractModelBody#evaluateAsString()}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=IOException.class)
+ public void testEvaluateAsStringException() throws IOException {
+ Writer writer = createMock(Writer.class);
+ AbstractModelBody modelBody = createMockBuilder(AbstractModelBody.class).withConstructor(writer).createMock();
+
+ modelBody.evaluate(isA(StringWriter.class));
+ expectLastCall().andThrow(new IOException());
+
+ replay(writer, modelBody);
+ try {
+ modelBody.evaluateAsString();
+ } finally {
+ verify(writer, modelBody);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.core.runtime.AbstractModelBody#evaluateWithoutWriting()}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testEvaluateWithoutWriting() throws IOException {
+ Writer writer = createMock(Writer.class);
+ AbstractModelBody modelBody = createMockBuilder(AbstractModelBody.class).withConstructor(writer).createMock();
+
+ modelBody.evaluate(isA(NullWriter.class));
+
+ replay(writer, modelBody);
+ modelBody.evaluateWithoutWriting();
+ verify(writer, modelBody);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.core.runtime.AbstractModelBody#evaluateWithoutWriting()}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=IOException.class)
+ public void testEvaluateWithoutWritingException() throws IOException {
+ Writer writer = createMock(Writer.class);
+ AbstractModelBody modelBody = createMockBuilder(AbstractModelBody.class).withConstructor(writer).createMock();
+
+ modelBody.evaluate(isA(NullWriter.class));
+ expectLastCall().andThrow(new IOException());
+
+ replay(writer, modelBody);
+ try {
+ modelBody.evaluateWithoutWriting();
+ } finally {
+ verify(writer, modelBody);
+ }
+ }
+
+ public static class MockModelBody extends AbstractModelBody {
+
+ private String toReturn;
+
+ public MockModelBody(Writer defaultWriter, String toReturn) {
+ super(defaultWriter);
+ this.toReturn = toReturn;
+ }
+
+ @Override
+ public void evaluate(Writer writer) throws IOException {
+ writer.write(toReturn);
+ }
+
+ }
+}
diff --git a/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtilTest.java b/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtilTest.java
index d751629..c8ee4fa 100644
--- a/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtilTest.java
+++ b/tiles-autotag-core-runtime/src/test/java/org/apache/tiles/autotag/core/runtime/composition/ComposeStackUtilTest.java
@@ -21,12 +21,17 @@
package org.apache.tiles.autotag.core.runtime.composition;
+import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import java.util.ArrayDeque;
+import java.util.Date;
import java.util.Deque;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.tiles.autotag.core.runtime.composition.ComposeStackUtil;
+import org.apache.tiles.request.Request;
import org.junit.Test;
/**
@@ -65,6 +70,54 @@
assertEquals(longValue, ComposeStackUtil.findAncestorWithClass(composeStack, Long.class));
assertEquals(stringValue, ComposeStackUtil.findAncestorWithClass(composeStack, String.class));
assertEquals(integerValue2, ComposeStackUtil.findAncestorWithClass(composeStack, Object.class));
+ assertNull(ComposeStackUtil.findAncestorWithClass(composeStack, Date.class));
}
+ /**
+ * Tests {@link ComposeStackUtil#getComposeStack(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetComposeStackNull() {
+ Request request = createMock(Request.class);
+
+ Map<String, Object> requestScope = new HashMap<String, Object>();
+ expect(request.getContext("request")).andReturn(requestScope);
+
+ replay(request);
+ assertSame(ComposeStackUtil.getComposeStack(request), requestScope.get(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME));
+ verify(request);
+ }
+
+ /**
+ * Tests {@link ComposeStackUtil#getComposeStack(org.apache.tiles.request.Request)}.
+ */
+ /**
+ * Tests {@link ComposeStackUtil#getComposeStack(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetComposeStackNotNull() {
+ Request request = createMock(Request.class);
+ @SuppressWarnings("unchecked")
+ Deque<Object> composeStack = createMock(Deque.class);
+
+ Map<String, Object> requestScope = new HashMap<String, Object>();
+ requestScope.put(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME, composeStack);
+ expect(request.getContext("request")).andReturn(requestScope);
+
+ replay(request, composeStack);
+ assertSame(composeStack, ComposeStackUtil.getComposeStack(request));
+ verify(request, composeStack);
+ }
+
+ @Test
+ public void testGetComposeStackNoNull() {
+ Request request = createMock(Request.class);
+
+ Map<String, Object> requestScope = new HashMap<String, Object>();
+ expect(request.getContext("request")).andReturn(requestScope);
+
+ replay(request);
+ assertSame(ComposeStackUtil.getComposeStack(request), requestScope.get(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME));
+ verify(request);
+ }
}