Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java?rev=759514&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
 Sat Mar 28 17:30:04 2009
@@ -0,0 +1,382 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.encoder;
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.Url;
+import 
org.apache.wicket.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.BookmarkablePageRequestHandler;
+import org.apache.wicket.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.IComponent;
+import org.apache.wicket.IPage;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.link.ILinkListener;
+
+/**
+ * @author Matej Knopp
+ */
+public class BookmarkableEncoderTest extends AbstractEncoderTest
+{
+
+       /**
+        * Construct.
+        */
+       public BookmarkableEncoderTest()
+       {
+       }
+
+       private BookmarkableEncoder encoder = new BookmarkableEncoder()
+       {
+               @Override
+               protected EncoderContext getContext()
+               {
+                       return context;
+               }
+       };
+
+       private static final String PAGE_CLASS_NAME = MockPage.class.getName();
+
+       /**
+        * 
+        */
+       public void testDecode1()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME);
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               assertEquals(PAGE_CLASS_NAME, page.getClass().getName());
+               assertEquals(0, 
page.getPageParameters().getIndexedParamsCount());
+               
assertTrue(page.getPageParameters().getNamedParameterKeys().isEmpty());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode2()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/indexed1?a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               assertEquals(PAGE_CLASS_NAME, page.getClass().getName());
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(1, p.getIndexedParamsCount());
+               assertEquals("indexed1", p.getIndexedParameter(0).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode3()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"?15");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               checkPage(page, 15);
+       }
+
+       /**
+        * 
+        */
+       public void testDecode4()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15&a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               checkPage(page, 15);
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(2, p.getIndexedParamsCount());
+               assertEquals("i1", p.getIndexedParameter(0).toString());
+               assertEquals("i2", p.getIndexedParameter(1).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode5()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"?15-ILinkListener-foo-bar");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+               assertNull(h.getBehaviorIndex());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode6()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(2, p.getIndexedParamsCount());
+               assertEquals("i1", p.getIndexedParameter(0).toString());
+               assertEquals("i2", p.getIndexedParameter(1).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode7()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"?15-ILinkListener.4-foo-bar");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+               assertEquals((Object) 4, h.getBehaviorIndex());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode8()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+
+               context.setNextPageRenderCount(5);
+
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               assertEquals(page.getRenderCount(), 5);
+       }
+
+       /**
+        * 
+        */
+       public void testDecode9()
+       {
+               Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+
+               context.setNextPageRenderCount(6);
+
+               try
+               {
+                       @SuppressWarnings("unused")
+                       RequestHandler handler = 
encoder.decode(getRequest(url));
+
+                       // should never get here
+                       assertFalse(true);
+               }
+               catch (StalePageException e)
+               {
+
+               }
+       }
+
+       /**
+        * 
+        */
+       public void testEncode1()
+       {
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, new PageParameters());
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME, 
url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode2()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "i1");
+               parameters.setIndexedParameter(1, "i2");
+               parameters.setNamedParameter("a", "b");
+               parameters.setNamedParameter("b", "c");
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, parameters);
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?a=b&b=c", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode3()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "i1");
+               parameters.setIndexedParameter(1, "i2");
+               parameters.setNamedParameter("a", "b");
+               parameters.setNamedParameter("b", "c");
+
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, parameters);
+               Url url = encoder.encode(handler);
+
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?a=b&b=c", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode4()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+               page.setCreatedBookmarkable(true);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+               Url url = encoder.encode(handler);
+
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15&a=b&b=c", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode5()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+
+               page.setCreatedBookmarkable(false);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+               Url url = encoder.encode(handler);
+
+               // never allow bookmarkable render url for page that has not 
been created by bookmarkable
+               // URL
+
+               assertNull(url);
+       }
+
+       /**
+        * 
+        */
+       public void testEncode6()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+
+               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
+               // as this explicitely says the url must be bookmarkable
+               page.setCreatedBookmarkable(false);
+
+               IComponent c = page.get("foo:bar");
+
+               RequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(page, c, ILinkListener.INTERFACE);
+
+               Url url = encoder.encode(handler);
+
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener-foo-bar&a=b&b=c", url
+                               .toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode7()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+
+               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
+               // as this explicitely says the url must be bookmarkable
+               page.setCreatedBookmarkable(false);
+
+               IComponent c = page.get("foo:bar");
+
+               RequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(page, c, ILinkListener.INTERFACE, 
4);
+
+               Url url = encoder.encode(handler);
+
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c", url
+                               .toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode8()
+       {
+               MockPage page = new MockPage(15);
+               page.setBookmarkable(true);
+               page.setCreatedBookmarkable(true);
+               page.setPageStateless(true);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+
+               Url url = encoder.encode(handler);
+
+               assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME, 
url.toString());
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java?rev=759514&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
 Sat Mar 28 17:30:04 2009
@@ -0,0 +1,505 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.encoder;
+
+import org.apache.wicket.IComponent;
+import org.apache.wicket.IPage;
+import org.apache.wicket.MockPage;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.link.ILinkListener;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.RequestHandlerEncoder;
+import org.apache.wicket.request.Url;
+import 
org.apache.wicket.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.BookmarkablePageRequestHandler;
+import org.apache.wicket.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+
+/**
+ * @author Matej Knopp
+ */
+public class MountedEncoderTest extends AbstractEncoderTest
+{
+
+       /**
+        * Construct.
+        */
+       public MountedEncoderTest()
+       {
+       }
+
+       private MountedEncoder encoder = new MountedEncoder("/some/mount/path", 
MockPage.class)
+       {
+               @Override
+               protected EncoderContext getContext()
+               {
+                       return context;
+               }
+       };
+
+       private MountedEncoder placeholderEncoder = new 
MountedEncoder("/some/${param1}/path/${param2}", MockPage.class)
+       {
+               @Override
+               protected EncoderContext getContext()
+               {
+                       return context;
+               }
+       };
+
+       /**
+        * 
+        */
+       public void testDecode1()
+       {
+               Url url = Url.parse("some/mount/path");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+
+               assertEquals(0, 
page.getPageParameters().getIndexedParamsCount());
+               
assertTrue(page.getPageParameters().getNamedParameterKeys().isEmpty());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode2()
+       {
+               Url url = Url.parse("some/mount/path/indexed1?a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(1, p.getIndexedParamsCount());
+               assertEquals("indexed1", p.getIndexedParameter(0).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode3()
+       {
+               Url url = Url.parse("some/mount/path?15");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               checkPage(page, 15);
+       }
+
+       /**
+        * 
+        */
+       public void testDecode4()
+       {
+               Url url = Url.parse("some/mount/path/i1/i2?15&a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+               checkPage(page, 15);
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(2, p.getIndexedParamsCount());
+               assertEquals("i1", p.getIndexedParameter(0).toString());
+               assertEquals("i2", p.getIndexedParameter(1).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode5()
+       {
+               Url url = Url.parse("some/mount/path?15-ILinkListener-foo-bar");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+               assertNull(h.getBehaviorIndex());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode6()
+       {
+               Url url = 
Url.parse("some/mount/path/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(2, p.getIndexedParamsCount());
+               assertEquals("i1", p.getIndexedParameter(0).toString());
+               assertEquals("i2", p.getIndexedParameter(1).toString());
+
+               assertEquals(2, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode7()
+       {
+               Url url = 
Url.parse("some/mount/path?15-ILinkListener.4-foo-bar");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPath());
+               assertEquals((Object) 4, h.getBehaviorIndex());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode8()
+       {
+               Url url = 
Url.parse("some/mmount/path?15-ILinkListener.4-foo-bar");
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertNull(handler);
+       }
+
+       /**
+        * 
+        */
+       public void testDecode9()
+       {
+               // capture the home page
+               Url url = Url.parse("");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof RenderPageRequestHandler);
+       }
+
+       /**
+        * 
+        */
+       public void testDecode10()
+       {
+               Url url = 
Url.parse("some/mount/path?15-5.ILinkListener.4-foo-bar");
+               context.setNextPageRenderCount(5);
+               RequestHandler handler = encoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+
+               IPage page = h.getPage();
+               assertEquals(5, page.getRenderCount());
+       }
+
+       /**
+        * 
+        */
+       public void testDecode11()
+       {
+               Url url = 
Url.parse("some/mount/path?15-5.ILinkListener.4-foo-bar");
+               context.setNextPageRenderCount(7);
+
+               try
+               {
+                       @SuppressWarnings("unused")
+                       RequestHandler handler = 
encoder.decode(getRequest(url));
+
+                       // should never get here
+                       assertTrue(false);
+               }
+               catch (StalePageException e)
+               {
+
+               }
+       }
+
+       /**
+        * 
+        */
+       public void testEncode1()
+       {
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, new PageParameters());
+               Url url = encoder.encode(handler);
+               assertEquals("some/mount/path", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode2()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "i1");
+               parameters.setIndexedParameter(1, "i2");
+               parameters.setNamedParameter("a", "b");
+               parameters.setNamedParameter("b", "c");
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, parameters);
+               Url url = encoder.encode(handler);
+               assertEquals("some/mount/path/i1/i2?a=b&b=c", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode3()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "i1");
+               parameters.setIndexedParameter(1, "i2");
+               parameters.setNamedParameter("a", "b");
+               parameters.setNamedParameter("b", "c");
+
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, parameters);
+               Url url = encoder.encode(handler);
+
+               assertEquals("some/mount/path/i1/i2?a=b&b=c", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode4()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+               page.setCreatedBookmarkable(true);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+               Url url = encoder.encode(handler);
+
+               assertEquals("some/mount/path/i1/i2?15&a=b&b=c", 
url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode5()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+
+               page.setCreatedBookmarkable(false);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+               Url url = encoder.encode(handler);
+
+               // mounted pages must render mounted url even for page that has 
not been created by
+               // bookmarkable
+               // URL
+
+               assertEquals("some/mount/path/i1/i2?15&a=b&b=c", 
url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode6()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+               page.setRenderCount(4);
+
+               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
+               // as this explicitely says the url must be bookmarkable
+               page.setCreatedBookmarkable(false);
+
+               IComponent c = page.get("foo:bar");
+
+               RequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(page, c, ILinkListener.INTERFACE);
+
+               Url url = encoder.encode(handler);
+
+               
assertEquals("some/mount/path/i1/i2?15-4.ILinkListener-foo-bar&a=b&b=c", 
url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode7()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().setIndexedParameter(0, "i1");
+               page.getPageParameters().setIndexedParameter(1, "i2");
+               page.getPageParameters().setNamedParameter("a", "b");
+               page.getPageParameters().setNamedParameter("b", "c");
+               page.setRenderCount(5);
+
+               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
+               // as this explicitely says the url must be bookmarkable
+               page.setCreatedBookmarkable(false);
+
+               IComponent c = page.get("foo:bar");
+
+               RequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(page, c, ILinkListener.INTERFACE, 
4);
+
+               Url url = encoder.encode(handler);
+
+               
assertEquals("some/mount/path/i1/i2?15-5.ILinkListener.4-foo-bar&a=b&b=c", 
url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testEncode8()
+       {
+               MockPage page = new MockPage(15);
+               page.setBookmarkable(true);
+               page.setCreatedBookmarkable(true);
+               page.setPageStateless(true);
+
+               RequestHandler handler = new RenderPageRequestHandler(page);
+
+               Url url = encoder.encode(handler);
+
+               assertEquals("some/mount/path", url.toString());
+       }
+
+       /**
+        * 
+        */
+       public void testConstruct1()
+       {
+               try
+               {
+                       @SuppressWarnings("unused")
+                       RequestHandlerEncoder e = new MountedEncoder("", 
MockPage.class);
+
+                       // should never get here
+                       assertFalse(true);
+               }
+               catch (IllegalArgumentException e)
+               {
+                       // ok
+               }
+       }
+
+       /**
+        * 
+        */
+       public void testConstruct2()
+       {
+               try
+               {
+                       @SuppressWarnings("unused")
+                       RequestHandlerEncoder e = new MountedEncoder("/", 
MockPage.class);
+
+                       // should never get here
+                       assertFalse(true);
+               }
+               catch (IllegalArgumentException e)
+               {
+                       // ok
+               }
+       }
+
+       /**
+        * 
+        */
+       public void testPlaceholderDecode1()
+       {
+               Url url = Url.parse("some/p1/path/p2");
+               RequestHandler handler = 
placeholderEncoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+
+               assertEquals(0, 
page.getPageParameters().getIndexedParamsCount());
+               
assertTrue(page.getPageParameters().getNamedParameterKeys().size() == 2);
+               assertEquals("p1", 
page.getPageParameters().getNamedParameter("param1").toString());
+               assertEquals("p2", 
page.getPageParameters().getNamedParameter("param2").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testPlaceholderDecode2()
+       {
+               Url url = Url.parse("some/p1/path/p2/indexed1?a=b&b=c");
+               RequestHandler handler = 
placeholderEncoder.decode(getRequest(url));
+
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               IPage page = ((RenderPageRequestHandler) handler).getPage();
+
+               PageParameters p = page.getPageParameters();
+               assertEquals(1, p.getIndexedParamsCount());
+               assertEquals("indexed1", p.getIndexedParameter(0).toString());
+
+               assertEquals(4, p.getNamedParameterKeys().size());
+               assertEquals("b", p.getNamedParameter("a").toString());
+               assertEquals("c", p.getNamedParameter("b").toString());
+               assertEquals("p1", 
page.getPageParameters().getNamedParameter("param1").toString());
+               assertEquals("p2", 
page.getPageParameters().getNamedParameter("param2").toString());
+       }
+
+       /**
+        * 
+        */
+       public void testPlaceholderEncode2()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "i1");
+               parameters.setIndexedParameter(1, "i2");
+               parameters.setNamedParameter("a", "b");
+               parameters.setNamedParameter("b", "c");
+               parameters.setNamedParameter("param1", "p1");
+               parameters.setNamedParameter("param2", "p2");
+
+               RequestHandler handler = new 
BookmarkablePageRequestHandler(MockPage.class, parameters);
+               Url url = placeholderEncoder.encode(handler);
+               assertEquals("some/p1/path/p2/i1/i2?a=b&b=c", url.toString());
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/PageInstanceEncoderTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/PageInstanceEncoderTest.java?rev=759514&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/PageInstanceEncoderTest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/PageInstanceEncoderTest.java
 Sat Mar 28 17:30:04 2009
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.encoder;
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.IComponent;
+import org.apache.wicket.markup.html.link.ILinkListener;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+
+/**
+ * 
+ * @author Matej Knopp
+ */
+public class PageInstanceEncoderTest extends AbstractEncoderTest
+{
+
+       /**
+        * 
+        * Construct.
+        */
+       public PageInstanceEncoderTest()
+       {
+       }
+
+       private PageInstanceEncoder encoder = new PageInstanceEncoder()
+       {
+               @Override
+               protected EncoderContext getContext()
+               {
+                       return context;
+               }
+       };
+               
+       /**
+        * 
+        */
+       public void testDecode1()
+       {
+               Url url = Url.parse("wicket/page?4");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               
+               RenderPageRequestHandler h = (RenderPageRequestHandler) handler;
+               checkPage(h.getPage(), 4);      
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode2()
+       {
+               Url url = Url.parse("wicket/page/ingore/me?4&a=3&b=3");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof RenderPageRequestHandler);
+               
+               RenderPageRequestHandler h = (RenderPageRequestHandler) handler;
+               checkPage(h.getPage(), 4);      
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode3()
+       {
+               Url url = Url.parse("wicket/page?4-ILinkListener-a-b-c");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+               checkPage(h.getPage(), 4);      
+               assertEquals(h.getComponent().getPath(), "a:b:c");
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertNull(h.getBehaviorIndex());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode4()
+       {
+               Url url = Url.parse("wickett/pagee?4-ILinkListener-a:b-c");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertNull(handler);
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode5()
+       {
+               Url url = Url.parse("wicket/page?abc");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertNull(handler);
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode6()
+       {
+               Url url = Url.parse("wicket/page?4-ILinkListener.5-a-b-c");
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+               checkPage(h.getPage(), 4);      
+               assertEquals(h.getComponent().getPath(), "a:b:c");
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals((Object)5, h.getBehaviorIndex());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode7()
+       {
+               Url url = Url.parse("wicket/page?4-6.ILinkListener.5-a-b-c");
+               
+               context.setNextPageRenderCount(6);
+               
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler) handler;
+               assertEquals(6, h.getPage().getRenderCount());                  
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode8()
+       {
+               Url url = Url.parse("wicket/page?4-6.ILinkListener.5-a-b-c");
+               
+               context.setNextPageRenderCount(8);
+               
+               try
+               {
+                       @SuppressWarnings("unused")
+                       RequestHandler handler = 
encoder.decode(getRequest(url));
+                       
+                       // should never get here
+                       assertFalse(true);
+               }
+               catch (StalePageException e)
+               {
+                       
+               }                               
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode1()
+       {
+               MockPage page = new MockPage(15);
+               RequestHandler handler = new RenderPageRequestHandler(page);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/page?15", url.toString());
+       }
+       
+
+       /**
+        * 
+        */
+       public void testEncode2()
+       {
+               MockPage page = new MockPage(15);
+               page.setRenderCount(5);
+               
+               IComponent c = page.get("a:b:c");
+               
+               RequestHandler handler = new 
ListenerInterfaceRequestHandler(page, c, ILinkListener.INTERFACE);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/page?15-5.ILinkListener-a-b-c", 
url.toString());
+       }
+       
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/PageInstanceEncoderTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/ResourceReferenceEncoderTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/ResourceReferenceEncoderTest.java?rev=759514&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/ResourceReferenceEncoderTest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/ResourceReferenceEncoderTest.java
 Sat Mar 28 17:30:04 2009
@@ -0,0 +1,348 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.encoder;
+
+import java.util.Locale;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.Url;
+import 
org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
+import org.apache.wicket.request.handler.resource.ResourceRequestHandler;
+
+/**
+ * @author Matej Knopp
+ */
+public class ResourceReferenceEncoderTest extends 
AbstractResourceReferenceEncoderTest
+{
+       /**
+        * Construct.
+        */
+       public ResourceReferenceEncoderTest()
+       {
+       }
+       
+       private final ResourceReferenceEncoder encoder = new 
ResourceReferenceEncoder()
+       {
+               @Override
+               protected EncoderContext getContext()
+               {
+                       return context;
+               }               
+       };
+
+       /**
+        * 
+        */
+       public void testDecode1()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference1");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource1, h.getResource());
+               assertEquals(null, h.getLocale());
+               assertEquals(null, h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */     
+       public void testDecode1A()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference1?en");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource1, h.getResource());
+               assertEquals(Locale.ENGLISH, h.getLocale());
+               assertEquals(null, h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode2()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference1?p1=v1&p2=v2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource1, h.getResource());
+               assertEquals(null, h.getLocale());
+               assertEquals(null, h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals("v1", 
h.getPageParameters().getNamedParameter("p1").toString());
+               assertEquals("v2", 
h.getPageParameters().getNamedParameter("p2").toString());
+       }       
+       
+       /**
+        * 
+        */
+       public void testDecode2A()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference1?-style&p1=v1&p2=v2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource1, h.getResource());
+               assertEquals(null, h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals("v1", 
h.getPageParameters().getNamedParameter("p1").toString());
+               assertEquals("v2", 
h.getPageParameters().getNamedParameter("p2").toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode3()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference2/name2?en_EN");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource2, h.getResource());
+               assertEquals(new Locale("en", "en"), h.getLocale());
+               assertEquals(null, h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode3A()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference2/name2?en_EN-style");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource2, h.getResource());
+               assertEquals(new Locale("en", "en"), h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode3B()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference2/name2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertNull(handler);
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode4()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference2/name2?en_EN&p1=v1&p2=v2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource2, h.getResource());
+               assertEquals(new Locale("en", "en"), h.getLocale());
+               assertEquals(null, h.getStyle());
+               assertEquals("v1", 
h.getPageParameters().getNamedParameter("p1").toString());
+               assertEquals("v2", 
h.getPageParameters().getNamedParameter("p2").toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode5()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference3?-style");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource3, h.getResource());
+               assertEquals(null, h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode6()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference3?-style&p1=v1&p2=v2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource3, h.getResource());
+               assertEquals(null, h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals("v1", 
h.getPageParameters().getNamedParameter("p1").toString());
+               assertEquals("v2", 
h.getPageParameters().getNamedParameter("p2").toString());
+       }       
+       
+       
+       /**
+        * 
+        */
+       public void testDecode7()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference4?en-style");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource4, h.getResource());
+               assertEquals(Locale.ENGLISH, h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals(0, 
h.getPageParameters().getNamedParameterKeys().size());
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode7A()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference4?sk");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertNull(handler);
+       }
+       
+       /**
+        * 
+        */
+       public void testDecode8()
+       {
+               Url url = Url.parse("wicket/resource/" + CLASS_NAME + 
"/reference4?en-style&p1=v1&p2=v2");
+               RequestHandler handler = encoder.decode(getRequest(url));
+               assertTrue(handler instanceof ResourceRequestHandler);
+               ResourceRequestHandler h = (ResourceRequestHandler) handler;
+               assertEquals(resource4, h.getResource());
+               assertEquals(Locale.ENGLISH, h.getLocale());
+               assertEquals("style", h.getStyle());
+               assertEquals(0, h.getPageParameters().getIndexedParamsCount());
+               assertEquals("v1", 
h.getPageParameters().getNamedParameter("p1").toString());
+               assertEquals("v2", 
h.getPageParameters().getNamedParameter("p2").toString());
+       }       
+       
+       /**
+        * 
+        */
+       public void testEncode1()
+       {
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference1, null);
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + "/reference1", 
url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode2()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "X");
+               parameters.addNamedParameter("p1", "v1");
+               parameters.addNamedParameter("p2", "v2");
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference1, parameters);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference1?p1=v1&p2=v2", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode3()
+       {
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference2, null);
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference2/name2?en_EN", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode4()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "X");
+               parameters.addNamedParameter("p1", "v1");
+               parameters.addNamedParameter("p2", "v2");
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference2, parameters);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference2/name2?en_EN&p1=v1&p2=v2", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode5()
+       {
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference3, null);
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference3?-style", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode6()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "X");
+               parameters.addNamedParameter("p1", "v1");
+               parameters.addNamedParameter("p2", "v2");
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference3, parameters);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference3?-style&p1=v1&p2=v2", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode7()
+       {
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference4, null);
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference4?en-style", url.toString());
+       }
+       
+       /**
+        * 
+        */
+       public void testEncode8()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.setIndexedParameter(0, "X");
+               parameters.addNamedParameter("p1", "v1");
+               parameters.addNamedParameter("p2", "v2");
+               ResourceReferenceRequestHandler handler = new 
ResourceReferenceRequestHandler(reference4, parameters);
+               
+               Url url = encoder.encode(handler);
+               assertEquals("wicket/resource/" + CLASS_NAME + 
"/reference4?en-style&p1=v1&p2=v2", url.toString());
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/ResourceReferenceEncoderTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/TestEncoderContext.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/TestEncoderContext.java?rev=759514&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/TestEncoderContext.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/TestEncoderContext.java
 Sat Mar 28 17:30:04 2009
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.encoder;
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.resource.ResourceReferenceRegistry;
+import org.apache.wicket.IPage;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.WicketRuntimeException;
+
+/**
+ * Simple {...@link EncoderContext} implementation for testing purposes
+ * 
+ * @author Matej Knopp
+ */
+public class TestEncoderContext implements EncoderContext
+{
+
+       /**
+        * Construct.
+        */
+       public TestEncoderContext()
+       {
+       }
+
+       public String getBookmarkableIdentifier()
+       {
+               return "bookmarkable";
+       }
+
+       public String getNamespace()
+       {
+               return "wicket";
+       }
+
+       public String getPageIdentifier()
+       {
+               return "page";
+       }
+
+       public String getResourceIdentifier()
+       {
+               return "resource";
+       }
+
+       public ResourceReferenceRegistry getResourceReferenceRegistry()
+       {
+               return registry;
+       }
+
+       private ResourceReferenceRegistry registry = new 
ResourceReferenceRegistry();
+
+       private boolean bookmarkable = true;
+
+       /**
+        * Determines whether the newly created page will have bookarkable flag 
set
+        * 
+        * @param bookmarkable
+        */
+       public void setBookmarkable(boolean bookmarkable)
+       {
+               this.bookmarkable = bookmarkable;
+       }
+
+       private boolean createdBookmarkable = true;
+
+       /**
+        * Determines whether the newly created page will have 
createdBookmarkable flag set
+        * 
+        * @param createdBookmarkable
+        */
+       public void setCreatedBookmarkable(boolean createdBookmarkable)
+       {
+               this.createdBookmarkable = createdBookmarkable;
+       }
+
+       private int nextPageRenderCount = 0;
+       
+       /**
+        * 
+        * @param nextPageRenderCount
+        */
+       public void setNextPageRenderCount(int nextPageRenderCount)
+       {
+               this.nextPageRenderCount = nextPageRenderCount;
+       }
+       
+       public IPage getPageInstance(int pageId)
+       {
+               MockPage page = new MockPage();
+               page.setPageId(pageId);
+               page.setBookmarkable(bookmarkable);
+               page.setCreatedBookmarkable(createdBookmarkable);
+               page.setRenderCount(nextPageRenderCount);
+               return page;
+       }
+
+       int idCounter = 0;
+
+       public IPage newPageInstance(Class<? extends IPage> pageClass, 
PageParameters pageParameters)
+       {
+               try
+               {
+                       MockPage page;
+                       page = (MockPage)pageClass.newInstance();
+                       page.setPageId(++idCounter);
+                       page.setBookmarkable(true);
+                       page.setCreatedBookmarkable(true);
+                       page.getPageParameters().assign(pageParameters);
+                       return page;
+               }
+               catch (Exception e)
+               {
+                       throw new WicketRuntimeException(e);
+               }
+       }
+
+       public RequestListenerInterface 
requestListenerInterfaceFromString(String interfaceName)
+       {
+               return RequestListenerInterface.forName(interfaceName);
+       }
+
+       public String requestListenerInterfaceToString(RequestListenerInterface 
listenerInterface)
+       {
+               return listenerInterface.getName();
+       }
+
+       public Class<? extends IPage> getHomePageClass()
+       {
+               return MockPage.class;
+       }
+
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/TestEncoderContext.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to