package org.springside.modules.utils.text;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
public class WildcardMatcherTest {
@Test
public void matchString() {
assertThat(WildcardMatcher.match("abc", "*")).isTrue();
assertThat(WildcardMatcher.match("abc", "*c")).isTrue();
assertThat(WildcardMatcher.match("abc", "a*")).isTrue();
assertThat(WildcardMatcher.match("abc", "a*c")).isTrue();
assertThat(WildcardMatcher.match("abc", "a?c")).isTrue();
assertThat(WildcardMatcher.match("abcd", "a?c?")).isTrue();
assertThat(WildcardMatcher.match("abcd", "a??d")).isTrue();
assertThat(WildcardMatcher.match("abcde", "a*d?")).isTrue();
assertThat(WildcardMatcher.match("abcde", "a*d")).isFalse();
assertThat(WildcardMatcher.match("abcde", "a*x")).isFalse();
assertThat(WildcardMatcher.match("abcde", "a*df")).isFalse();
assertThat(WildcardMatcher.match("abcde", "?abcd")).isFalse();
assertThat(WildcardMatcher.match("ab\\\\*cde", "ab\\\\*c*")).isTrue();
assertThat(WildcardMatcher.match("ab\\\\*cde", "ab\\\\*?de")).isTrue();
// matchOne
assertThat(WildcardMatcher.matchOne("abcde", new String[] { "a*d?", "abde?" })).isEqualTo(0);
assertThat(WildcardMatcher.matchOne("abcde", new String[] { "?abcd", "a*d?" })).isEqualTo(1);
assertThat(WildcardMatcher.matchOne("abcde", new String[] { "?abcd", "xyz*" })).isEqualTo(-1);
}
@Test
public void matchPath() {
assertThat(WildcardMatcher.matchPath("/a/b/dd", "**")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/dd", "**/dd")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/c/dd", "/a/**/dd")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/dd", "/a/*/dd")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/dd", "/a/*/d?")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/ddxxa", "/a/*/dd*")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/ddxxa", "/a/?/dd*")).isTrue();
assertThat(WildcardMatcher.matchPath("a/b/ddxxa", "a/?/dd*")).isTrue();
assertThat(WildcardMatcher.matchPath("a/b/dd", "**/dd")).isTrue();
assertThat(WildcardMatcher.matchPath("/a/b/c/dd", "/a/*/dd")).isFalse();
// matchOne
assertThat(WildcardMatcher.matchPathOne("/a/b/c/dd", new String[] { "/a/*/dd", "**/dd" })).isEqualTo(1);
assertThat(WildcardMatcher.matchPathOne("/a/b/c/dd", new String[] { "/a/**/dd", "**/dd" })).isEqualTo(0);
assertThat(WildcardMatcher.matchPathOne("/a/b/c/dd", new String[] { "/b/d", "/a/c/*" })).isEqualTo(-1);
}
}