KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > test > DisplaytagCase


1 package org.displaytag.test;
2
3 import java.io.File JavaDoc;
4 import java.net.URL JavaDoc;
5 import java.net.URLDecoder JavaDoc;
6
7 import junit.framework.TestCase;
8
9 import org.apache.commons.lang.ArrayUtils;
10 import org.apache.commons.lang.StringUtils;
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13
14 import com.meterware.servletunit.ServletRunner;
15
16
17 /**
18  * Base TestCase class for tests.
19  * @author Fabrizio Giustina
20  * @version $Revision: 1023 $ ($Author: fgiust $)
21  */

22 public abstract class DisplaytagCase extends TestCase
23 {
24
25     /**
26      * Context mapped to the test application.
27      */

28     public static final String JavaDoc CONTEXT = "/context";
29
30     /**
31      * logger.
32      */

33     protected final Log log = LogFactory.getLog(getClass());
34
35     /**
36      * HttpUnit ServletRunner.
37      */

38     protected ServletRunner runner;
39
40     /**
41      * Returns the tested jsp name.
42      * @return jsp name
43      */

44     public abstract String JavaDoc getJspName();
45
46     /**
47      * Runs the test.
48      * @param jspName jsp name, with full path
49      * @throws Exception any axception thrown during test.
50      */

51     public abstract void doTest(String JavaDoc jspName) throws Exception JavaDoc;
52
53     /**
54      * run the test with the non-el tld.
55      * @throws Exception any axception thrown during test.
56      */

57     public void test11() throws Exception JavaDoc
58     {
59         doTest("http://localhost" + CONTEXT + "/standard/" + getJspName());
60     }
61
62     /**
63      * run the test with the el tld.
64      * @throws Exception any axception thrown during test.
65      */

66     public void testEL() throws Exception JavaDoc
67     {
68         doTest("http://localhost" + CONTEXT + "/el/" + getJspName());
69     }
70
71     /**
72      * @see junit.framework.TestCase#setUp()
73      */

74     protected void setUp() throws Exception JavaDoc
75     {
76         // need to pass a web.xml file to setup servletunit working directory
77
ClassLoader JavaDoc classLoader = getClass().getClassLoader();
78         URL JavaDoc webXmlUrl = classLoader.getResource("WEB-INF/web.xml");
79         String JavaDoc path = URLDecoder.decode(webXmlUrl.getFile(), "UTF-8");
80
81         // start servletRunner
82
runner = new ServletRunner(new File JavaDoc(path), CONTEXT);
83         log.debug("ServletRunner setup OK");
84
85         super.setUp();
86     }
87
88     /**
89      * @see junit.framework.TestCase#tearDown()
90      */

91     protected void tearDown() throws Exception JavaDoc
92     {
93         // shutdown servlet engine
94
runner.shutDown();
95
96         super.tearDown();
97     }
98
99     /**
100      * @see junit.framework.TestCase#getName()
101      */

102     public String JavaDoc getName()
103     {
104         return getClass().getName() + "." + super.getName() + " (" + getJspName() + ")";
105     }
106
107     /**
108      * Compare 2 arrays of string ignoring order.
109      * @param message message to output in case of failure
110      * @param expected expected array
111      * @param actual actual array
112      */

113     public void assertEqualsIgnoreOrder(String JavaDoc message, String JavaDoc[] expected, String JavaDoc[] actual)
114     {
115         if (expected.length != actual.length)
116         {
117             fail(message
118                 + " Wrong number of values, expected "
119                 + expected.length
120                 + " ("
121                 + ArrayUtils.toString(expected)
122                 + "), actual "
123                 + actual.length
124                 + " ("
125                 + ArrayUtils.toString(actual)
126                 + ")");
127         }
128
129         outer : for (int j = 0; j < expected.length; j++)
130         {
131             String JavaDoc exp = expected[j];
132             for (int q = 0; q < actual.length; q++)
133             {
134                 if (StringUtils.equals(exp, actual[q]))
135                 {
136                     continue outer;
137                 }
138             }
139             fail(message + " Expected value \"" + exp + "\" not found in actual array: " + ArrayUtils.toString(actual));
140         }
141     }
142 }
Popular Tags