package com.google.webviewlocalserver; import android.net.Uri; import android.test.InstrumentationTestCase; import com.google.webviewlocalserver.third_party.android.UriMatcher; /* * Test cases for UriMatcher. */ public class UriMatcherTest extends InstrumentationTestCase { private final Object nullObject = new Object(); public void testFullHttpUrlMatching() { Object pathMatch = new Object(); UriMatcher matcher = new UriMatcher(nullObject); matcher.addURI("http", "org.chromium", "/some/path", pathMatch); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/some/path"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/some/path?asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/some/path#asd"))); assertNull(matcher.match(Uri.parse("https://org.chromium/some/path"))); assertNull(matcher.match(Uri.parse("http://org.chromium/somepath"))); assertNull(matcher.match(Uri.parse("http://org.chromium/"))); assertNull(matcher.match(Uri.parse("http://org.chromium/some/other"))); assertNull(matcher.match(Uri.parse("http://org.chromium/some/path/other"))); assertEquals(nullObject, matcher.match(Uri.parse("http:"))); assertEquals(nullObject, matcher.match(Uri.parse("https:"))); } public void testFullHttpsUrlMatching() { Object pathMatch = new Object(); UriMatcher matcher = new UriMatcher(nullObject); matcher.addURI("https", "org.chromium", "/some/path", pathMatch); assertEquals(pathMatch, matcher.match(Uri.parse("https://org.chromium/some/path"))); assertEquals(pathMatch, matcher.match(Uri.parse("https://org.chromium/some/path?asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("https://org.chromium/some/path#asd"))); assertNull(matcher.match(Uri.parse("http://org.chromium/some/path"))); assertNull(matcher.match(Uri.parse("https://org.chromium/somepath"))); assertNull(matcher.match(Uri.parse("https://org.chromium/"))); assertNull(matcher.match(Uri.parse("https://org.chromium/some/other"))); assertNull(matcher.match(Uri.parse("https://org.chromium/some/path/other"))); assertEquals(nullObject, matcher.match(Uri.parse("http:"))); assertEquals(nullObject, matcher.match(Uri.parse("https:"))); } public void testHttpUrlSingleStarMatching() { Object pathMatch = new Object(); UriMatcher matcher = new UriMatcher(nullObject); matcher.addURI("http", "org.chromium", "/path/*", pathMatch); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a?asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a#asd"))); assertNull(matcher.match(Uri.parse("https://org.chromium/pa"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path?asd"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path#asd"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path/a/b/c"))); assertNull(matcher.match(Uri.parse("http://org.chromium/other/path"))); } public void testHttpUrlDoubleStarMatching() { Object pathMatch = new Object(); UriMatcher matcher = new UriMatcher(nullObject); matcher.addURI("http", "org.chromium", "/path/**", pathMatch); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a/b/c"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a?asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a#asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a/b?asd"))); assertEquals(pathMatch, matcher.match(Uri.parse("http://org.chromium/path/a/b#asd"))); assertNull(matcher.match(Uri.parse("https://org.chromium/pa"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path?asd"))); assertNull(matcher.match(Uri.parse("http://org.chromium/path#asd"))); assertNull(matcher.match(Uri.parse("http://org.chromium/other/path"))); } }