/*
* #%L
* Wisdom-Framework
* %%
* Copyright (C) 2013 - 2015 Wisdom Framework
* %%
* 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.
* #L%
*/
package org.wisdom.source.ast.model;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Check the path comparator.
*/
public class PathComparatorTest {
PathComparator comparator = new PathComparator();
@Test
public void testComparison() {
assertThat(comparator.compare("/foo", "/foo/")).isNotEqualTo(0);
assertThat(comparator.compare("/root/foo", "/root/foo/")).isNotEqualTo(0);
ImmutableList<String> list = ImmutableList.of("/foo", "/bar");
List<String> copy = new ArrayList<>(list);
Collections.sort(copy, comparator);
assertThat(copy).containsExactly("/bar", "/foo");
list = ImmutableList.of("/foo", "/bar", "/baz");
copy = new ArrayList<>(list);
Collections.sort(copy, comparator);
assertThat(copy).containsExactly("/bar", "/baz", "/foo");
list = ImmutableList.of("/foo/bar", "/foo/baz", "/baz");
copy = new ArrayList<>(list);
Collections.sort(copy, comparator);
assertThat(copy).containsExactly("/baz", "/foo/bar", "/foo/baz");
list = ImmutableList.of("/", "/foo/bar", "/foo/baz", "/baz");
copy = new ArrayList<>(list);
Collections.sort(copy, comparator);
assertThat(copy).containsExactly("/", "/baz", "/foo/bar", "/foo/baz");
list = ImmutableList.of("/", "/foo", "/foo/", "/foo/bar", "/fooa");
copy = new ArrayList<>(list);
Collections.shuffle(copy);
Collections.sort(copy, comparator);
assertThat(copy).containsExactly("/", "/foo", "/foo/", "/foo/bar", "/fooa");
}
}