/**
 * 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.activemq.filter;

import org.apache.activemq.test.TestSupport;

public class DestinationPathTest extends TestSupport {

    public void testPathParse() {
        assertParse("FOO", new String[]{"FOO"});
        assertParse("FOO.BAR", new String[]{"FOO", "BAR"});
        assertParse("FOO.*", new String[]{"FOO", "*"});
        assertParse("FOO.>", new String[]{"FOO", ">"});
        assertParse("FOO.BAR.XYZ", new String[]{"FOO", "BAR", "XYZ"});
        assertParse("FOO.BAR.", new String[]{"FOO", "BAR", ""});
    }

    protected void assertParse(String subject, String[] expected) {
        String[] path = DestinationPath.getDestinationPaths(subject);
        assertArrayEqual(subject, expected, path);
    }
}
