UriMatcherTest.java revision ef23bf198d14bea183c0dabd5b4fcd0a5d07d738
135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li/* 2d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy * Copyright (C) 2007 The Android Open Source Project 335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Licensed under the Apache License, Version 2.0 (the "License"); 535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * you may not use this file except in compliance with the License. 635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * You may obtain a copy of the License at 735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * http://www.apache.org/licenses/LICENSE-2.0 935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 1035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Unless required by applicable law or agreed to in writing, software 1135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * distributed under the License is distributed on an "AS IS" BASIS, 1235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * See the License for the specific language governing permissions and 1435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * limitations under the License. 1535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 1635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 17db567c390bd56c05614eaa83c02dbb99f97ad9ccRomain Guypackage android.net; 1835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 1980756e38882720860db52f1fcc21fa1505a02abfTor Norbyeimport android.content.UriMatcher; 2035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Liimport android.net.Uri; 21d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guyimport android.test.suitebuilder.annotation.SmallTest; 2235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 2335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Liimport junit.framework.TestCase; 2435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 2535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Lipublic class UriMatcherTest extends TestCase { 2682f3495b146b267f3786997752cef25310176349Romain Guy 2735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int ROOT = 0; 2835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int PEOPLE = 1; 29d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy static final int PEOPLE_ID = 2; 30d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy static final int PEOPLE_PHONES = 3; 3182f3495b146b267f3786997752cef25310176349Romain Guy static final int PEOPLE_PHONES_ID = 4; 3282f3495b146b267f3786997752cef25310176349Romain Guy static final int PEOPLE_ADDRESSES = 5; 3351099c5aa63c8349bb7de6d1720480f2c84f404eRomain Guy static final int PEOPLE_ADDRESSES_ID = 6; 34d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy static final int PEOPLE_CONTACTMETH = 7; 3535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int PEOPLE_CONTACTMETH_ID = 8; 3635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int CALLS = 9; 3735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int CALLS_ID = 10; 3835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li static final int CALLERID = 11; 3982f3495b146b267f3786997752cef25310176349Romain Guy static final int CALLERID_TEXT = 12; 4082f3495b146b267f3786997752cef25310176349Romain Guy static final int FILTERRECENT = 13; 41d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy static final int ANOTHER_PATH_SEGMENT = 13; 4282f3495b146b267f3786997752cef25310176349Romain Guy 4382f3495b146b267f3786997752cef25310176349Romain Guy @SmallTest 4482f3495b146b267f3786997752cef25310176349Romain Guy public void testContentUris() { 45ec25df9fbc685be384f8dd764fa224a4d923e9d8Romain Guy UriMatcher matcher = new UriMatcher(ROOT); 46d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("people", null, PEOPLE); 4782f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "#", PEOPLE_ID); 4882f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "#/phones", PEOPLE_PHONES); 4982f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "#/phones/blah", PEOPLE_PHONES_ID); 508d78756c160bda736cccef9ca1a6e2d6a159ac42Romain Guy matcher.addURI("people", "#/phones/#", PEOPLE_PHONES_ID); 51d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("people", "#/addresses", PEOPLE_ADDRESSES); 528d78756c160bda736cccef9ca1a6e2d6a159ac42Romain Guy matcher.addURI("people", "#/addresses/#", PEOPLE_ADDRESSES_ID); 53d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("people", "#/contact-methods", PEOPLE_CONTACTMETH); 5435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li matcher.addURI("people", "#/contact-methods/#", PEOPLE_CONTACTMETH_ID); 5551099c5aa63c8349bb7de6d1720480f2c84f404eRomain Guy matcher.addURI("calls", null, CALLS); 5682f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("calls", "#", CALLS_ID); 5782f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("caller-id", null, CALLERID); 5882f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("caller-id", "*", CALLERID_TEXT); 5982f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("filter-recent", null, FILTERRECENT); 60e7c36dda7ada30e02f3aa9d75f282a53402aeae7Romain Guy matcher.addURI("auth", "another/path/segment", ANOTHER_PATH_SEGMENT); 61e7c36dda7ada30e02f3aa9d75f282a53402aeae7Romain Guy checkAll(matcher); 62e7c36dda7ada30e02f3aa9d75f282a53402aeae7Romain Guy } 6382f3495b146b267f3786997752cef25310176349Romain Guy 6435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li @SmallTest 6535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li public void testContentUrisWithLeadingSlash() { 6635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li UriMatcher matcher = new UriMatcher(ROOT); 6782f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", null, PEOPLE); 6835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li matcher.addURI("people", "/#", PEOPLE_ID); 6982f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "/#/phones", PEOPLE_PHONES); 7082f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "/#/phones/blah", PEOPLE_PHONES_ID); 71d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("people", "/#/phones/#", PEOPLE_PHONES_ID); 7282f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "/#/addresses", PEOPLE_ADDRESSES); 73ec25df9fbc685be384f8dd764fa224a4d923e9d8Romain Guy matcher.addURI("people", "/#/addresses/#", PEOPLE_ADDRESSES_ID); 74db567c390bd56c05614eaa83c02dbb99f97ad9ccRomain Guy matcher.addURI("people", "/#/contact-methods", PEOPLE_CONTACTMETH); 7582f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("people", "/#/contact-methods/#", PEOPLE_CONTACTMETH_ID); 76d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("calls", null, CALLS); 7782f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("calls", "/#", CALLS_ID); 7882f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("caller-id", null, CALLERID); 79d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy matcher.addURI("caller-id", "/*", CALLERID_TEXT); 8035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li matcher.addURI("filter-recent", null, FILTERRECENT); 8182f3495b146b267f3786997752cef25310176349Romain Guy matcher.addURI("auth", "/another/path/segment", ANOTHER_PATH_SEGMENT); 82d1c67d42abdf41d10c9a7589da1e0088af1e123aRomain Guy checkAll(matcher); 8382f3495b146b267f3786997752cef25310176349Romain Guy } 8482f3495b146b267f3786997752cef25310176349Romain Guy 8582f3495b146b267f3786997752cef25310176349Romain Guy private void checkAll(UriMatcher matcher) { 86e7c36dda7ada30e02f3aa9d75f282a53402aeae7Romain Guy check("content://asdf", UriMatcher.NO_MATCH, matcher); 87e7c36dda7ada30e02f3aa9d75f282a53402aeae7Romain Guy check("content://people", PEOPLE, matcher); 88d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy check("content://people/1", PEOPLE_ID, matcher); 89d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy check("content://people/asdf", UriMatcher.NO_MATCH, matcher); 90e705f2c52e683bdad2e845b50df6b6cbed660614Romain Guy check("content://people/2/phones", PEOPLE_PHONES, matcher); 9135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/phones/3", PEOPLE_PHONES_ID, matcher); 9235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/phones/asdf", UriMatcher.NO_MATCH, matcher); 9335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/addresses", PEOPLE_ADDRESSES, matcher); 948d78756c160bda736cccef9ca1a6e2d6a159ac42Romain Guy check("content://people/2/addresses/3", PEOPLE_ADDRESSES_ID, matcher); 9535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/addresses/asdf", UriMatcher.NO_MATCH, matcher); 9635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/contact-methods", PEOPLE_CONTACTMETH, matcher); 9735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://people/2/contact-methods/3", PEOPLE_CONTACTMETH_ID, matcher); 9882f3495b146b267f3786997752cef25310176349Romain Guy check("content://people/2/contact-methods/asdf", UriMatcher.NO_MATCH, matcher); 9982f3495b146b267f3786997752cef25310176349Romain Guy check("content://calls", CALLS, matcher); 100834f0391b50d33a832bd583fd7763a9a12208e8dRomain Guy check("content://calls/1", CALLS_ID, matcher); 10182f3495b146b267f3786997752cef25310176349Romain Guy check("content://calls/asdf", UriMatcher.NO_MATCH, matcher); 10282f3495b146b267f3786997752cef25310176349Romain Guy check("content://caller-id", CALLERID, matcher); 10373d2589d6df34307c22f1adcdfa1debf4c780eccRomain Guy check("content://caller-id/asdf", CALLERID_TEXT, matcher); 10482f3495b146b267f3786997752cef25310176349Romain Guy check("content://caller-id/1", CALLERID_TEXT, matcher); 10535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li check("content://filter-recent", FILTERRECENT, matcher); 10682f3495b146b267f3786997752cef25310176349Romain Guy check("content://auth/another/path/segment", ANOTHER_PATH_SEGMENT, matcher); 10782f3495b146b267f3786997752cef25310176349Romain Guy } 10835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 109c534727972c3835ed997e84a349f259915ef2cddRomain Guy private void check(String uri, int expected, UriMatcher matcher) { 110d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy int result = matcher.match(Uri.parse(uri)); 111d6a463a9f23b3901bf729f2f27a6bb8f78b95248Romain Guy if (result != expected) { 11282f3495b146b267f3786997752cef25310176349Romain Guy String msg = "failed on " + uri; 11382f3495b146b267f3786997752cef25310176349Romain Guy msg += " expected " + expected + " got " + result; 11482f3495b146b267f3786997752cef25310176349Romain Guy throw new RuntimeException(msg); 1159af0b4f7be14f2b3ed0ecc843c57ea47ec288e55Romain Guy } 1169af0b4f7be14f2b3ed0ecc843c57ea47ec288e55Romain Guy } 1179af0b4f7be14f2b3ed0ecc843c57ea47ec288e55Romain Guy} 11882f3495b146b267f3786997752cef25310176349Romain Guy 11982f3495b146b267f3786997752cef25310176349Romain Guy