Home » displaytag-1.1.1-src » org » displaytag » test » [javadoc | source]

    1   package org.displaytag.test;
    2   
    3   import java.io.File;
    4   import java.net.URL;
    5   import java.net.URLDecoder;
    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 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 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 jspName) throws Exception;
   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
   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
   67       {
   68           doTest("http://localhost" + CONTEXT + "/el/" + getJspName());
   69       }
   70   
   71       /**
   72        * @see junit.framework.TestCase#setUp()
   73        */
   74       protected void setUp() throws Exception
   75       {
   76           // need to pass a web.xml file to setup servletunit working directory
   77           ClassLoader classLoader = getClass().getClassLoader();
   78           URL webXmlUrl = classLoader.getResource("WEB-INF/web.xml");
   79           String path = URLDecoder.decode(webXmlUrl.getFile(), "UTF-8");
   80   
   81           // start servletRunner
   82           runner = new ServletRunner(new File(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
   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 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 message, String[] expected, String[] 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 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   }

Home » displaytag-1.1.1-src » org » displaytag » test » [javadoc | source]