Package com.mycila.testing.plugins.jetty.locator

Source Code of com.mycila.testing.plugins.jetty.locator.AntPathTest

/**
* Copyright (C) 2008 Mathieu Carbou <mathieu.carbou@gmail.com>
*
* Licensed 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 com.mycila.testing.plugins.jetty.locator;

import static com.google.common.collect.Iterables.elementsEqual;
import static com.google.common.collect.Lists.newArrayList;
import static org.junit.Assert.assertTrue;

import org.junit.Assert;
import org.junit.Test;
import org.springframework.util.AntPathMatcher;

import com.mycila.testing.plugins.jetty.locator.AntPath;

/**
* Unit test of {@link AntPath}.
*/
public class AntPathTest {
   
    @Test
    public void testRegex()
    {
        final String[] trueDatas = {
                "com/test.jsp",
                "com/a/test.jsp",
                "com/a/b/test.jsp",
                "com/a/b/test.jsp/c/test.jsp",
                "com/a/b/atest.jsp/c/test.jsp",
        };
        final String[] falseDatas = {
                "com/atest.jsp", "com//test.jsp", "com/a/b/atest.jsp",
        };
       
        final String[] patterns = {
                "com/([^/]+/)*test.jsp", "com/([^/]+?/)*test.jsp", "com/([^/]++/)*test.jsp",

                "com/([^/]+/)*?test.jsp", "com/([^/]+?/)*?test.jsp", "com/([^/]++/)*?test.jsp",

                "com/([^/]+/)*+test.jsp", "com/([^/]+?/)*+test.jsp", "com/([^/]++/)*+test.jsp",
        };
       
        for (final String pattern : patterns) {
            //System.out.println("for " + pattern);
           
            for (final String data : trueDatas) {
                //System.out.println("\t" + data);
                Assert.assertTrue(data.matches(pattern));
            }
        }
        for (final String pattern : patterns) {
            //System.out.println("!for " + pattern);
           
            for (final String data : falseDatas) {
                //System.out.println("\t" + data);
                Assert.assertFalse(data.matches(pattern));
            }
        }
    }
   

    @Test
    public void testSplitFunction()
    {
        assertTrue(elementsEqual(newArrayList("test"), new AntPath.SplitFunction("**").apply("test")));
        assertTrue(elementsEqual(
                newArrayList("te", "**", "st", "**", "or"),
                new AntPath.SplitFunction("**").apply("te**st**or")));
        assertTrue(elementsEqual(
                newArrayList("", "**", "te", "**", "st", "**", "or", "**", ""),
                new AntPath.SplitFunction("**").apply("**te**st**or**")));
    }
   

    @Test
    public void testMultiSplitFunction()
    {
        assertTrue(elementsEqual(newArrayList("test"), new AntPath.MultiSplitFunction("*", "**").apply("test")));
        assertTrue(elementsEqual(
                newArrayList("te", "*", "st", "**", "or"),
                new AntPath.MultiSplitFunction("**", "*").apply("te*st**or")));
        assertTrue(elementsEqual(
                newArrayList("te", "**", "st", "*", "or"),
                new AntPath.MultiSplitFunction("**", "*").apply("te**st*or")));
    }
   

    @Test
    public void testSpringAntPathMatcherAntPathZeroOrMoreCharacters()
    {
        for (final Object[] data : getAntPathZeroOrMoreCharacters()) {
            final Boolean expected = (Boolean) data[0];
            final String pattern = (String) data[1];
            final String path = (String) data[2];
           
            Assert.assertEquals(
                    "expects " + expected + " path '" + path + "' matches '" + pattern + "'",
                    expected,
                    new AntPathMatcher().match(pattern, path));
        }
    }
   

    @Test
    public void testSpringAntPathMatcherAntPathZeroOrMoreDirectories()
    {
        for (final Object[] data : getAntPathZeroOrMoreDirectories()) {
            final Boolean expected = (Boolean) data[0];
            final String pattern = (String) data[1];
            final String path = (String) data[2];
           
            Assert.assertEquals(
                    "expects " + expected + " path '" + path + "' matches '" + pattern + "'",
                    expected,
                    new AntPathMatcher().match(pattern, path));
        }
    }
   

    @Test
    public void testMatchesAntPathOneCharacter()
    {
        for (final Object[] data : getAntPathOneCharacter()) {
            final Boolean expected = (Boolean) data[0];
            final String pattern = (String) data[1];
            final String path = (String) data[2];
           
            Assert.assertEquals(
                    "expects " + expected + " path '" + path + "' matches '" + pattern + "'",
                    expected,
                    new AntPath(pattern).matches(path));
        }
    }
   

    @Test
    public void testMatchesAntPathZeroOrMoreCharacters()
    {
        for (final Object[] data : getAntPathZeroOrMoreCharacters()) {
            final Boolean expected = (Boolean) data[0];
            final String pattern = (String) data[1];
            final String path = (String) data[2];
           
            Assert.assertEquals(
                    "expects " + expected + " path '" + path + "' matches '" + pattern + "'",
                    expected,
                    new AntPath(pattern).matches(path));
        }
    }
   

    @Test
    public void testMatchesAntPathZeroOrMoreDirectories()
    {
        for (final Object[] data : getAntPathZeroOrMoreDirectories()) {
            final Boolean expected = (Boolean) data[0];
            final String pattern = (String) data[1];
            final String path = (String) data[2];
           
            Assert.assertEquals(
                    "expects " + expected + " path '" + path + "' matches '" + pattern + "'",
                    expected,
                    new AntPath(pattern).matches(path));
        }
    }
   

    private static Object[][] getAntPathOneCharacter()
    {
        //@formatter:off
        final Object[][] data = {
                {true, "com/t?st.jsp", "com/test.jsp"},
                {true, "com/t?st.jsp", "com/tast.jsp"},
                {true, "com/t?st.jsp", "com/txst.jsp"},
                {false, "com/t?st.jsp", "com/tst.jsp"},
                {false, "com/t?st.jsp", "com/teest.jsp"},
                {false, "com/t?st.jsp", "com/t/st.jsp"},
        };
        //@formatter:on
       
        return data;
    }
   

    private static Object[][] getAntPathZeroOrMoreCharacters()
    {
        //@formatter:off
        final Object[][] data = {
                // matches all .jsp files in the com directory
                {true, "com/*.jsp", "com/.jsp"},
                {true, "com/*.jsp", "com/file.jsp"},
                {true, "com/*.jsp", "com/file.data.jsp"},
                {false, "com/*.jsp", "com/path/file.jsp"},
                {false, "com/*.jsp", "comfile.jsp"},
               
                {true, "com/f*e.jsp", "com/file.jsp"},
               
                {true, "com/f*p", "com/file.jsp"},
        };
        //@formatter:on
       
        return data;
    }
   

    private static Object[][] getAntPathZeroOrMoreDirectories()
    {
        //@formatter:off
        final Object[][] data = {
                // matches all test.jsp files underneath the com path
                {true, "com/**/test.jsp", "com/test.jsp"},
                {true, "com/**/test.jsp", "com/path/test.jsp"},
                {true, "com/**/test.jsp", "com/path/to/test.jsp"},
                {false, "com/**/test.jsp", "com/atest.jsp"},
                // incompatibility between SpringAntPath and this {true, "com/**/test.jsp", "com//test.jsp"},
                {false, "com/**/test.jsp", "com/path/to/ttest.jsp"},
               
                // incompatibility between SpringAntPath and this {false, "com/***/test.jsp", "com/path/to2/test.jsp"},
                // incompatibility between SpringAntPath and this {false, "com/*******/test.jsp", "com/path/to3/test.jsp"},
               
                // matches all .jsp files underneath the org/springframework path
                {true, "org/springframework/**/*.jsp", "org/springframework/test.jsp"},
                {true, "org/springframework/**/*.jsp", "org/springframework/path/test.jsp"},
                {true, "org/springframework/**/*.jsp", "org/springframework/path/to/test.jsp"},
                {false, "org/springframework/**/*.jsp", "org.springframework/path/to/test.jsp"},
               
                // matches org/springframework/servlet/bla.jsp but also org/springframework/testing/servlet/bla.jsp and org/servlet/bla.jsp       
                {true, "org/**/servlet/bla.jsp", "org/springframework/servlet/bla.jsp"},
                {true, "org/**/servlet/bla.jsp", "org/springframework/testing/servlet/bla.jsp"},
                {true, "org/**/servlet/bla.jsp", "org/servlet/bla.jsp"},
                {false, "org/**/servlet/bla.jsp", "org.servlet/bla.jsp"},
                {false, "org/**/servlet/bla.jsp", "org/servlet/blu.jsp"},
               
                {true, "?", "t"},
                {true, "*", "test.jsp"},
                {true, "**", "com/path/to/test.jsp"},
               
                {true, "com/**", "com/"},
                {true, "com/**", "com/path/to/"},
                {true, "com/**", "com/path/to"},
                {true, "com/**", "com/test.jsp"},
                {true, "com/**", "com/path/to/test.jsp"},
               
                {true, "com/**/", "com/"},
                {true, "com/**/", "com/path/to/"},
        // incompatibility between SpringAntPath and this {true, "com/**/", "com/path/to"},
        // incompatibility between SpringAntPath and this {true, "com/**/", "com/test.jsp"},
        // incompatibility between SpringAntPath and this {true, "com/**/", "com/path/to/test.jsp"},
        };
        //@formatter:on
       
        return data;
    }
   
}
TOP

Related Classes of com.mycila.testing.plugins.jetty.locator.AntPathTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.