1d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank/* 2d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Copyright (C) 2010 The Android Open Source Project 3d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 4d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Licensed under the Apache License, Version 2.0 (the "License"); 5d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * you may not use this file except in compliance with the License. 6d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * You may obtain a copy of the License at 7d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 8d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * http://www.apache.org/licenses/LICENSE-2.0 9d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 10d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Unless required by applicable law or agreed to in writing, software 11d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * distributed under the License is distributed on an "AS IS" BASIS, 12d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * See the License for the specific language governing permissions and 14d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * limitations under the License. 15d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank */ 16d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 17d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankpackage com.android.exchange; 18d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 19d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.content.Context; 20d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.content.ContextWrapper; 21d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.test.AndroidTestCase; 22d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.test.suitebuilder.annotation.SmallTest; 23d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 24d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport java.io.File; 25d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank@SmallTest 26d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankpublic class ExchangeServiceTest extends AndroidTestCase { 27d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank private static class MyContext extends ContextWrapper { 28d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public boolean isGetFileStreamPathCalled; 29d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 30d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public MyContext(Context base) { 31d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank super(base); 32d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 33d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 34d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank @Override 35d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public File getFileStreamPath(String name) { 36d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank isGetFileStreamPathCalled = true; 37d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank return super.getFileStreamPath(name); 38d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 39d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 40d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 41d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public void testGetDeviceId() throws Exception { 42d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank final MyContext context = new MyContext(getContext()); 43d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 44d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank final String id = ExchangeService.getDeviceId(context); 45d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 46d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // Consists of alpha-numeric 47d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank assertTrue(id.matches("^[a-zA-Z0-9]+$")); 48d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 49d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // getDeviceId may have been called in other tests, so we don't check 50d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // isGetFileStreamPathCalled here. 51d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 52d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank context.isGetFileStreamPathCalled = false; 53d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank final String cachedId = ExchangeService.getDeviceId(context); 54d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 55d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // Should be the same. 56d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank assertEquals(id, cachedId); 57d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // Should be cached. (If cached, this method won't be called.) 58d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank assertFalse(context.isGetFileStreamPathCalled); 59d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 60d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank} 61