Author: pedro
Date: Thu Dec 16 20:02:28 2010
New Revision: 1050134

URL: http://svn.apache.org/viewvc?rev=1050134&view=rev
Log:
testing AbstractResourceAggregatingHeaderResponse

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/TestDecoratingHeaderResponse.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/TestDecoratingHeaderResponse.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/TestDecoratingHeaderResponse.java?rev=1050134&r1=1050133&r2=1050134&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/TestDecoratingHeaderResponse.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/TestDecoratingHeaderResponse.java
 Thu Dec 16 20:02:28 2010
@@ -18,6 +18,8 @@ package org.apache.wicket.markup.html;
 
 import java.io.IOException;
 import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ResourceReference;
@@ -25,6 +27,9 @@ import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.parser.XmlPullParser;
 import org.apache.wicket.markup.parser.XmlTag;
+import 
org.apache.wicket.resource.aggregation.AbstractResourceAggregatingHeaderResponse;
+import org.apache.wicket.resource.aggregation.ResourceReferenceAndStringData;
+import org.apache.wicket.resource.aggregation.ResourceReferenceCollection;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.resource.StringResourceStream;
@@ -34,9 +39,6 @@ import org.apache.wicket.util.resource.S
  */
 public class TestDecoratingHeaderResponse extends WicketTestCase
 {
-       private static final ResourceReference JS_REF = new 
ResourceReference("test.js");
-       private static final String TEST_JS_REF_ID = "test-resource";
-
 
        /**
         * Basic IHeaderResponseDecorator, just prepending the DECORATED string 
to resource name.
@@ -70,15 +72,73 @@ public class TestDecoratingHeaderRespons
                boolean isDecorated = false;
                do
                {
-                       if ("script".equals(tag.getName()) && 
TEST_JS_REF_ID.equals(tag.getString("id")))
+                       if (tag.isOpen() && "script".equals(tag.getName()))
                        {
                                isDecorated = 
tag.getString("src").toString().contains("DECORATED");
+                               if (!isDecorated)
+                               {
+                                       fail();
+                               }
                        }
                }
                while ((tag = (XmlTag)parser.nextTag()) != null);
                assertTrue(isDecorated);
        }
 
+       /**
+        * Test even and odd resources id rendered grouped.
+        * 
+        * @throws ResourceStreamNotFoundException
+        * @throws IOException
+        * @throws ParseException
+        * 
+        */
+       public void testEvenOddResourceIdGroup() throws IOException, 
ResourceStreamNotFoundException,
+               ParseException
+       {
+               tester.getApplication().setHeaderResponseDecorator(new 
IHeaderResponseDecorator()
+               {
+
+                       public IHeaderResponse decorate(IHeaderResponse 
response)
+                       {
+                               return new 
AbstractResourceAggregatingHeaderResponse<ResourceReferenceCollection, Integer>(
+                                       response)
+                               {
+                                       @Override
+                                       protected Integer 
newGroupingKey(ResourceReferenceAndStringData ref)
+                                       {
+                                               return 
Integer.parseInt(ref.getString()) % 2;
+                                       }
+                               };
+                       }
+               });
+               tester.startPage(TestPage.class);
+               XmlPullParser parser = new XmlPullParser();
+               parser.parse(tester.getServletResponse().getDocument());
+               XmlTag tag = (XmlTag)parser.nextTag();
+               List<Integer> resourcesId = new ArrayList<Integer>();
+               do
+               {
+                       if (tag.isOpen() && "script".equals(tag.getName()))
+                       {
+                               
resourcesId.add(Integer.parseInt(tag.getString("id").toString()));
+                       }
+               }
+               while ((tag = (XmlTag)parser.nextTag()) != null);
+               int oddEvenCanges = 0;
+               for (int i = 1; i < resourcesId.size(); i++)
+               {
+                       if (resourcesId.get(i) % 2 != resourcesId.get(i - 1) % 
2)
+                       {
+                               oddEvenCanges++;
+                       }
+               }
+               assertEquals(1, oddEvenCanges);
+       }
+
+       /**
+        * 
+        */
        public static class TestPage extends WebPage
                implements
                        IHeaderContributor,
@@ -87,7 +147,11 @@ public class TestDecoratingHeaderRespons
 
                public void renderHead(IHeaderResponse response)
                {
-                       response.renderJavascriptReference(JS_REF, 
TEST_JS_REF_ID);
+                       for (int i = 0; i < 10; i++)
+                       {
+                               response.renderJavascriptReference(new 
ResourceReference("res" + i),
+                                       Integer.toString(i));
+                       }
                }
 
                public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
@@ -96,5 +160,4 @@ public class TestDecoratingHeaderRespons
                        return new 
StringResourceStream("<html><body></body></html>");
                }
        }
-
 }


Reply via email to