19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.net; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.UriMatcher; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class UriMatcherTest extends TestCase 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int ROOT = 0; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE = 1; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_ID = 2; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_PHONES = 3; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_PHONES_ID = 4; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_ADDRESSES = 5; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_ADDRESSES_ID = 6; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_CONTACTMETH = 7; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int PEOPLE_CONTACTMETH_ID = 8; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int CALLS = 9; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int CALLS_ID = 10; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int CALLERID = 11; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int CALLERID_TEXT = 12; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int FILTERRECENT = 13; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SmallTest 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testContentUris() { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://asdf", UriMatcher.NO_MATCH); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people", PEOPLE); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/1", PEOPLE_ID); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/asdf", UriMatcher.NO_MATCH); 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/phones", PEOPLE_PHONES); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/phones/3", PEOPLE_PHONES_ID); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/phones/asdf", UriMatcher.NO_MATCH); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/addresses", PEOPLE_ADDRESSES); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/addresses/3", PEOPLE_ADDRESSES_ID); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/addresses/asdf", UriMatcher.NO_MATCH); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/contact-methods", PEOPLE_CONTACTMETH); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/contact-methods/3", PEOPLE_CONTACTMETH_ID); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://people/2/contact-methods/asdf", UriMatcher.NO_MATCH); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://calls", CALLS); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://calls/1", CALLS_ID); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://calls/asdf", UriMatcher.NO_MATCH); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://caller-id", CALLERID); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://caller-id/asdf", CALLERID_TEXT); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://caller-id/1", CALLERID_TEXT); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project check("content://filter-recent", FILTERRECENT); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final UriMatcher mURLMatcher = new UriMatcher(ROOT); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", null, PEOPLE); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#", PEOPLE_ID); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/phones", PEOPLE_PHONES); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/phones/blah", PEOPLE_PHONES_ID); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/phones/#", PEOPLE_PHONES_ID); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/addresses", PEOPLE_ADDRESSES); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/addresses/#", PEOPLE_ADDRESSES_ID); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/contact-methods", PEOPLE_CONTACTMETH); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("people", "#/contact-methods/#", PEOPLE_CONTACTMETH_ID); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("calls", null, CALLS); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("calls", "#", CALLS_ID); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("caller-id", null, CALLERID); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("caller-id", "*", CALLERID_TEXT); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mURLMatcher.addURI("filter-recent", null, FILTERRECENT); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void check(String uri, int expected) 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int result = mURLMatcher.match(Uri.parse(uri)); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != expected) { 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String msg = "failed on " + uri; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg += " expected " + expected + " got " + result; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException(msg); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 96