Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/ResourceReferenceEncoderTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/ResourceReferenceEncoderTest.java?rev=823984&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/ResourceReferenceEncoderTest.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/ResourceReferenceEncoderTest.java Sun Oct 11 00:02:25 2009 @@ -0,0 +1,362 @@ +/* + * 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.ng.request.mapper; + +import java.util.Locale; + +import org.apache.wicket.ng.request.RequestHandler; +import org.apache.wicket.ng.request.Url; +import org.apache.wicket.ng.request.component.PageParameters; +import org.apache.wicket.ng.request.handler.resource.ResourceReferenceRequestHandler; +import org.apache.wicket.ng.request.handler.resource.ResourceRequestHandler; +import org.apache.wicket.ng.request.mapper.MapperContext; +import org.apache.wicket.ng.request.mapper.ResourceReferenceMapper; + +/** + * @author Matej Knopp + */ +public class ResourceReferenceEncoderTest extends AbstractResourceReferenceEncoderTest +{ + /** + * Construct. + */ + public ResourceReferenceEncoderTest() + { + } + + private final ResourceReferenceMapper encoder = new ResourceReferenceMapper() + { + @Override + protected MapperContext getContext() + { + return context; + } + }; + + /** + * + */ + public void testDecode1() + { + Url url = Url.parse("wicket/resource/" + CLASS_NAME + "/reference1"); + RequestHandler handler = encoder.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapRequest(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.mapHandler(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.mapHandler(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.mapHandler(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.mapHandler(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.mapHandler(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.mapHandler(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.mapHandler(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.mapHandler(handler); + assertEquals("wicket/resource/" + CLASS_NAME + "/reference4?en-style&p1=v1&p2=v2", url + .toString()); + } +}
Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/TestMapperContext.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/TestMapperContext.java?rev=823984&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/TestMapperContext.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/TestMapperContext.java Sun Oct 11 00:02:25 2009 @@ -0,0 +1,149 @@ +/* + * 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.ng.request.mapper; + +import org.apache.wicket.ng.MockPage; +import org.apache.wicket.ng.WicketRuntimeException; +import org.apache.wicket.ng.request.component.PageParameters; +import org.apache.wicket.ng.request.component.RequestablePage; +import org.apache.wicket.ng.request.listener.RequestListenerInterface; +import org.apache.wicket.ng.request.mapper.MapperContext; +import org.apache.wicket.ng.resource.ResourceReferenceRegistry; + +/** + * Simple {...@link EncoderContext} implementation for testing purposes + * + * @author Matej Knopp + */ +public class TestMapperContext implements MapperContext +{ + + /** + * Construct. + */ + public TestMapperContext() + { + } + + 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 RequestablePage 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 RequestablePage newPageInstance(Class< ? extends RequestablePage> 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 RequestablePage> getHomePageClass() + { + return MockPage.class; + } + +} Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/ComponentInfoTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/ComponentInfoTest.java?rev=823984&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/ComponentInfoTest.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/ComponentInfoTest.java Sun Oct 11 00:02:25 2009 @@ -0,0 +1,160 @@ +/* + * 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.ng.request.mapper.info; + +import org.apache.wicket.ng.request.mapper.info.ComponentInfo; + +import junit.framework.TestCase; + +/** + * + * @author Matej Knopp + */ +public class ComponentInfoTest extends TestCase +{ + + /** + * + * Construct. + */ + public ComponentInfoTest() + { + } + + /** + * + */ + public void test1() + { + String s = "listener-component-path"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals("component:path", info.getComponentPath()); + assertNull(info.getBehaviorIndex()); + + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test2() + { + String s = "-component-path"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals(null, info); + } + + /** + * + */ + public void test3() + { + String s = "listener-"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals(null, info); + } + + /** + * + */ + public void test4() + { + String s = "-"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals(null, info); + } + + /** + * + */ + public void test5() + { + String s = "abcd"; + assertEquals(null, ComponentInfo.parse(s)); + } + + /** + * + */ + public void test6() + { + String s = "listener-compo--nent-path"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals("compo-nent:path", info.getComponentPath()); + assertNull(info.getBehaviorIndex()); + + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test7() + { + String s = "listener-co--mpo----nent-path"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals("co-mpo--nent:path", info.getComponentPath()); + assertNull(info.getBehaviorIndex()); + + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test8() + { + String s = "listener.12-component-path"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals("component:path", info.getComponentPath()); + assertEquals((Object)12, info.getBehaviorIndex()); + + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test9() + { + String s = "4.listener-a-b"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals((Integer)4, info.getRenderCount()); + + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test10() + { + String s = "4.listener.5-a-b"; + ComponentInfo info = ComponentInfo.parse(s); + assertEquals("listener", info.getListenerInterface()); + assertEquals((Integer)4, info.getRenderCount()); + assertEquals((Integer)5, info.getBehaviorIndex()); + + assertEquals(s, info.toString()); + } + +} Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/PageComponentInfoTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/PageComponentInfoTest.java?rev=823984&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/PageComponentInfoTest.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/mapper/info/PageComponentInfoTest.java Sun Oct 11 00:02:25 2009 @@ -0,0 +1,77 @@ +/* + * 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.ng.request.mapper.info; + +import org.apache.wicket.ng.request.mapper.info.PageComponentInfo; + +import junit.framework.TestCase; + +/** + * + * @author Matej Knopp + */ +public class PageComponentInfoTest extends TestCase +{ + + /** + * Construct. + */ + public PageComponentInfoTest() + { + } + + private void testPageInfoOnly(PageComponentInfo info, Integer pageId) + { + assertNull(info.getComponentInfo()); + assertNotNull(info.getPageInfo()); + + assertEquals(pageId, info.getPageInfo().getPageId()); + } + + private void testPageComponentInfo(PageComponentInfo info, Integer pageId, String listener, String componentPath) + { + assertNotNull(info.getComponentInfo()); + assertNotNull(info.getPageInfo()); + + assertEquals(pageId, info.getPageInfo().getPageId()); + + assertEquals(listener, info.getComponentInfo().getListenerInterface()); + assertEquals(componentPath, info.getComponentInfo().getComponentPath()); + } + + /** + * + */ + public void test1() + { + String s = "2-click-foo-bar-baz"; + PageComponentInfo info = PageComponentInfo.parse(s); + testPageComponentInfo(info, 2, "click", "foo:bar:baz"); + assertEquals(s, info.toString()); + } + + /** + * + */ + public void test2() + { + String s = "2"; + PageComponentInfo info = PageComponentInfo.parse(s); + testPageInfoOnly(info, 2); + assertEquals(s, info.toString()); + } +} Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/test/TestPageRender.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/test/TestPageRender.java?rev=823984&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/test/TestPageRender.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/test/TestPageRender.java Sun Oct 11 00:02:25 2009 @@ -0,0 +1,88 @@ +package org.apache.wicket.ng.test; + +import junit.framework.TestCase; + +import org.apache.wicket.ng.Page; +import org.apache.wicket.ng.ThreadContext; +import org.apache.wicket.ng.markup.html.link.ILinkListener; +import org.apache.wicket.ng.markup.html.link.Link; +import org.apache.wicket.ng.mock.MockApplication; +import org.apache.wicket.ng.mock.MockRequest; +import org.apache.wicket.ng.mock.MockRequestCycle; +import org.apache.wicket.ng.request.Request; +import org.apache.wicket.ng.request.Url; +import org.apache.wicket.ng.request.handler.PageAndComponentProvider; +import org.apache.wicket.ng.request.handler.impl.ListenerInterfaceRequestHandler; +import org.apache.wicket.ng.request.mapper.MountedMapper; +import org.apache.wicket.ng.request.response.Response; +import org.apache.wicket.ng.request.response.StringResponse; + +public class TestPageRender extends TestCase +{ + public static class Page1 extends Page + { + private static final long serialVersionUID = 1L; + + public Page1() + { + Link l; + add(l = new Link("link") + { + private static final long serialVersionUID = 1L; + + public void onLinkClicked() + { + System.out.println("Link clicked!"); + } + }); + l.setLabel("A Link!"); + } + + @Override + public void renderPage() + { + super.renderPage(); + } + }; + + public void testRender1() + { + // Store current ThreadContext + ThreadContext context = ThreadContext.getAndClean(); + + // Create MockApplication + MockApplication app = new MockApplication(); + app.setName("TestApplication1"); + app.set(); // set it to ThreadContext + app.initApplication(); + + // Mount the test page + app.registerEncoder(new MountedMapper("first-test-page", Page1.class)); + + // Construct request for first-test-page + Request request = new MockRequest(Url.parse("first-test-page")); + Response response = new StringResponse(); + + // create and execute request cycle + MockRequestCycle cycle = (MockRequestCycle) app.createRequestCycle(request, response); + cycle.processRequestAndDetach(); + + System.out.println("Rendered:"); + System.out.println(response); + + // invoke listener on the page + request = new MockRequest(Url.parse("wicket/page?0-1.ILinkListener-link")); + response = new StringResponse(); + cycle = (MockRequestCycle) app.createRequestCycle(request, response); + cycle.processRequestAndDetach(); + + // invoke the listener again - without parsing the URL + cycle = (MockRequestCycle) app.createRequestCycle(request, response); + cycle.forceRequestHandler(new ListenerInterfaceRequestHandler(new PageAndComponentProvider(0, null, "link"), ILinkListener.INTERFACE)); + cycle.processRequestAndDetach(); + + // cleanup + app.destroy(); + ThreadContext.restore(context); + } +}
