100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki/* 200d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * Copyright (C) 2010 The Android Open Source Project 300d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * 400d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 500d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * you may not use this file except in compliance with the License. 600d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * You may obtain a copy of the License at 700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * 800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * 1000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * Unless required by applicable law or agreed to in writing, software 1100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 1200d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1300d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * See the License for the specific language governing permissions and 1400d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki * limitations under the License. 1500d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki */ 1600d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 1700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onukipackage com.android.exchange; 1800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 1900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onukiimport android.content.Context; 2000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onukiimport android.content.ContextWrapper; 2100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onukiimport android.test.AndroidTestCase; 22604a1cf6f2401d78f57edcfb702d560d9c80dd14Marc Blankimport android.test.suitebuilder.annotation.SmallTest; 2300d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 2400d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onukiimport java.io.File; 25604a1cf6f2401d78f57edcfb702d560d9c80dd14Marc Blank@SmallTest 26385a0be662509754e687bcfa9813208b050bf951Marc Blankpublic class ExchangeServiceTest extends AndroidTestCase { 2700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki private static class MyContext extends ContextWrapper { 2800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki public boolean isGetFileStreamPathCalled; 2900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 3000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki public MyContext(Context base) { 3100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki super(base); 3200d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki } 3300d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 3400d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki @Override 3500d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki public File getFileStreamPath(String name) { 3600d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki isGetFileStreamPathCalled = true; 3700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki return super.getFileStreamPath(name); 3800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki } 3900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki } 4000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 4100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki public void testGetDeviceId() throws Exception { 4200d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki final MyContext context = new MyContext(getContext()); 4300d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 44385a0be662509754e687bcfa9813208b050bf951Marc Blank final String id = ExchangeService.getDeviceId(context); 4500d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 4600d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki // Consists of alpha-numeric 4700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki assertTrue(id.matches("^[a-zA-Z0-9]+$")); 4800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 4900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki // getDeviceId may have been called in other tests, so we don't check 5000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki // isGetFileStreamPathCalled here. 5100d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 5200d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki context.isGetFileStreamPathCalled = false; 53385a0be662509754e687bcfa9813208b050bf951Marc Blank final String cachedId = ExchangeService.getDeviceId(context); 5400d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki 5500d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki // Should be the same. 5600d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki assertEquals(id, cachedId); 5700d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki // Should be cached. (If cached, this method won't be called.) 5800d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki assertFalse(context.isGetFileStreamPathCalled); 5900d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki } 6000d0b046d088632385ea98e46dc7ac8b98b78147Makoto Onuki} 61