001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.chain.web.jakarta;
018
019import static org.junit.jupiter.api.Assertions.assertEquals;
020import static org.junit.jupiter.api.Assertions.assertNotNull;
021
022import org.junit.jupiter.api.Test;
023
024/**
025 * Test case for {@link org.apache.commons.chain.web.jakarta.ChainResources}
026 */
027public class ChainResourcesTestCase {
028
029    // ----------------------------------------------------- Instance Variables
030
031    protected TestData[] data = new TestData[] {
032        new TestData("a,b,c",            new String[] {"a", "b", "c"}),
033        new TestData("a , b , c ",       new String[] {"a", "b", "c"}),
034        new TestData("a,\tb,\tc ",       new String[] {"a", "b", "c"}),
035        new TestData("\na,\nb,\nc\n",    new String[] {"a", "b", "c"}),
036        new TestData("a,,b,c ",          new String[] {"a", "b", "c"}),
037        new TestData(",a,b,,c,,",        new String[] {"a", "b", "c"}),
038        new TestData(null,               new String[] {}),
039        new TestData("",                 new String[] {}),
040        new TestData(",",                new String[] {}),
041        new TestData(",,",               new String[] {})
042    };
043
044    // ----------------------------------------------------------- Constructors
045
046    /**
047     * The Default-Constructor for this class.
048     */
049    public ChainResourcesTestCase() {
050    }
051
052    // ------------------------------------------------ Individual Test Methods
053
054    @Test
055    public void testGetPaths() throws Exception {
056        for (TestData datum : data) {
057            String[] expected = datum.getExpected();
058            String[] actual = ChainResources.getResourcePaths(datum.getInput());
059
060            assertNotNull(actual);
061            assertEquals(expected.length, actual.length);
062            for (int j = 0; j < actual.length; j++) {
063                assertEquals(expected[j], actual[j]);
064            }
065        }
066    }
067
068    // ---------------------------------------------------------- Inner classes
069
070    /**
071     * Container for test data for one test
072     */
073    public static final class TestData {
074        private String input;
075        private String[] expected;
076        public TestData(String input, String[] expected) {
077            this.input = input;
078            this.expected = expected;
079        }
080        public String getInput() {
081            return input;
082        }
083        public String[] getExpected() {
084            return expected;
085        }
086    }
087}