Author: ivaynberg
Date: Fri Oct  9 07:09:32 2009
New Revision: 823428

URL: http://svn.apache.org/viewvc?rev=823428&view=rev
Log:
basic mountmapper unit test, more to come

Added:
    
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/
    
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
   (with props)
Modified:
    wicket/sandbox/knopp/experimental/wicket-ng/pom.xml
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java

Modified: wicket/sandbox/knopp/experimental/wicket-ng/pom.xml
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/pom.xml?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng/pom.xml (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng/pom.xml Fri Oct  9 07:09:32 2009
@@ -1,22 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-   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
+       <!--
+               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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0";
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+               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.
+       -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
 
        <modelVersion>4.0.0</modelVersion>
@@ -52,6 +50,17 @@
                        <scope>provided</scope>
                        <optional>true</optional>
                </dependency>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>4.7</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.mockito</groupId>
+                       <artifactId>mockito-all</artifactId>
+                       <version>1.8.0</version>
+               </dependency>
        </dependencies>
        <build>
                <plugins>
@@ -61,7 +70,7 @@
                                <configuration>
                                        
<licenseLocation>${basedir}/../../../common/lib/clover.license</licenseLocation>
                                </configuration>
-                       </plugin>                       
+                       </plugin>
                </plugins>
        </build>
 </project>

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
 Fri Oct  9 07:09:32 2009
@@ -5,16 +5,59 @@
 
 public class MockRequest extends Request
 {
-       private final Url url;
-       
-       public MockRequest(Url url)
-       {
-               this.url = url;
-       }
-
-       @Override
-       public Url getUrl()
-       {
-               return url;
-       }
+    private final Url url;
+
+    public MockRequest(Url url)
+    {
+        this.url = url;
+    }
+
+    @Override
+    public Request requestWithUrl(Url url)
+    {
+        return new MockRequest(url);
+    }
+
+    @Override
+    public Url getUrl()
+    {
+        return url;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((url == null) ? 0 : url.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        MockRequest other = (MockRequest)obj;
+        if (url == null)
+        {
+            if (other.url != null)
+                return false;
+        }
+        else if (!url.equals(other.url))
+            return false;
+        return true;
+    }
+
+    @Override
+    public String toString()
+    {
+        return "MockRequest [url=" + url + "]";
+    }
+
+
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
 Fri Oct  9 07:09:32 2009
@@ -13,7 +13,7 @@
  * 
  * @author igor.vaynberg
  */
-public abstract class MountMapper extends AbstractMapper
+public class MountMapper extends AbstractMapper
 {
     private final String[] mountSegments;
     private final MountedRequestMapper mapper;
@@ -102,14 +102,19 @@
 
         for (int i = mountSegments.length; i > 0; i--)
         {
-            String segment = mountSegments[i];
+            String segment = mountSegments[i - 1];
             String placeholder = getPlaceholder(segment);
-            String replacement = 
mount.getMountParameters().getValue(placeholder).toString();
+            String replacement = segment;
 
-            if (replacement == null)
+            if (placeholder != null)
             {
-                throw new IllegalStateException();// TODO message
+                replacement = 
mount.getMountParameters().getValue(placeholder).toString();
+                if (replacement == null)
+                {
+                    throw new IllegalStateException();// TODO message
+                }
             }
+
             mount.getUrl().getSegments().add(0, replacement);
         }
 

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
 Fri Oct  9 07:09:32 2009
@@ -32,4 +32,43 @@
     {
         return map.keySet();
     }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((map == null) ? 0 : map.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        MountParameters other = (MountParameters)obj;
+        if (map == null)
+        {
+            if (other.map != null)
+                return false;
+        }
+        else if (!map.equals(other.map))
+            return false;
+        return true;
+    }
+
+    @Override
+    public String toString()
+    {
+        return "MountParameters [" + map + "]";
+    }
+    
+    
+    
+    
 }

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java?rev=823428&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
 Fri Oct  9 07:09:32 2009
@@ -0,0 +1,71 @@
+package org.apache.wicket.request.mapper.mount;
+
+import static org.hamcrest.core.Is.*;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.apache.wicket.mock.MockRequest;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.util.string.StringValue;
+import org.junit.Test;
+
+
+public class MountMapperTest
+{
+    @Test
+    public void testMountMapper()
+    {
+        MountedRequestMapper target = mock(MountedRequestMapper.class);
+
+        MountMapper mapper = new MountMapper("foo/${bar}/baz", target);
+
+        MockRequest request = newRequest("foo/test/baz/buzz");
+
+        // test compatibility score
+        assertThat(mapper.getCompatibilityScore(request), is(3));
+
+        // test maprequest
+        mapper.mapRequest(request);
+        MountParameters params = newParams("bar", "test");
+        Request mounted = newRequest("buzz");
+        verify(target).mapRequest(mounted, params);
+
+        // test maphandler
+        Mount mount = new Mount(mounted.getUrl());
+        mount.setMountParameters(params);
+        when(target.mapHandler(MOCK_HANDLER)).thenReturn(mount);
+        Url url = mapper.mapHandler(MOCK_HANDLER);
+        assertThat(url, is(request.getUrl()));
+    }
+
+    private static RequestHandler MOCK_HANDLER = new RequestHandler()
+    {
+
+        public void detach(RequestCycle requestCycle)
+        {
+        }
+
+        public void respond(RequestCycle requestCycle)
+        {
+        }
+
+    };
+
+    private static MockRequest newRequest(String url)
+    {
+        return new MockRequest(Url.parse(url));
+    }
+
+    private static MountParameters newParams(String... values)
+    {
+        MountParameters params = new MountParameters();
+        for (int i = 0; i < values.length; i += 2)
+        {
+            params.setValue(values[i], StringValue.valueOf(values[i + 1]));
+        }
+        return params;
+    }
+}

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


Reply via email to