1d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar/* 2d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * Copyright (C) 2014 The Android Open Source Project 3d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * 4d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 5d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * you may not use this file except in compliance with the License. 6d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * You may obtain a copy of the License at 7d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * 8d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 9d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * 10d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * Unless required by applicable law or agreed to in writing, software 11d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 12d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * See the License for the specific language governing permissions and 14d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar * limitations under the License. 15d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar */ 16d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 17d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarpackage android.content.res; 18d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 19d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarimport android.test.ActivityInstrumentationTestCase2; 20082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinskiimport android.test.suitebuilder.annotation.SmallTest; 21d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarimport android.util.TypedValue; 22d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 23d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarimport com.android.frameworks.coretests.R; 24d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 25d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarimport java.lang.reflect.InvocationTargetException; 26d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 27d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarpublic class ConfigurationBoundResourceCacheTest 28d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar extends ActivityInstrumentationTestCase2<ResourceCacheActivity> { 29d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 30d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar ConfigurationBoundResourceCache<Float> mCache; 31d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 32d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public ConfigurationBoundResourceCacheTest() { 33d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar super(ResourceCacheActivity.class); 34d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 35d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 36d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar @Override 37d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar protected void setUp() throws Exception { 38d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar super.setUp(); 39fb302ccd8e0610a09691ea5503ff8111dc7a2e41Adam Lesinski mCache = new ConfigurationBoundResourceCache<>(); 40d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 41d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 42082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 43d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testGetEmpty() { 44082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski final Resources res = getActivity().getResources(); 45082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNull(mCache.getInstance(-1, res, null)); 46d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 47d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 48082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 49d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testSetGet() { 50d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(1, null, new DummyFloatConstantState(5f)); 51082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski final Resources res = getActivity().getResources(); 52082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(5f, mCache.getInstance(1, res, null)); 53082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNotSame(5f, mCache.getInstance(1, res, null)); 54082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(null, mCache.getInstance(1, res, getActivity().getTheme())); 55d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 56d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 57082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 58d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testSetGetThemed() { 59d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(1, getActivity().getTheme(), new DummyFloatConstantState(5f)); 60082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski final Resources res = getActivity().getResources(); 61082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(null, mCache.getInstance(1, res, null)); 62082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(5f, mCache.getInstance(1, res, getActivity().getTheme())); 63082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNotSame(5f, mCache.getInstance(1, res, getActivity().getTheme())); 64d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 65d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 66082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 67d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testMultiThreadPutGet() { 68d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(1, getActivity().getTheme(), new DummyFloatConstantState(5f)); 69d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(1, null, new DummyFloatConstantState(10f)); 70082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski final Resources res = getActivity().getResources(); 71082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(10f, mCache.getInstance(1, res, null)); 72082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNotSame(10f, mCache.getInstance(1, res, null)); 73082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(5f, mCache.getInstance(1, res, getActivity().getTheme())); 74082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNotSame(5f, mCache.getInstance(1, res, getActivity().getTheme())); 75d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 76d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 77082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 78d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testVoidConfigChange() 79d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 80d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue staticValue = new TypedValue(); 81d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar long key = 3L; 82d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources res = getActivity().getResources(); 83d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_generic, staticValue, true); 84d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float staticDim = TypedValue.complexToDimension(staticValue.data, res.getDisplayMetrics()); 85d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(key, getActivity().getTheme(), 86d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(staticDim, staticValue.changingConfigurations)); 87d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Configuration cfg = res.getConfiguration(); 88d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration newCnf = new Configuration(cfg); 89d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar newCnf.orientation = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? 90d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration.ORIENTATION_PORTRAIT 91d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar : Configuration.ORIENTATION_LANDSCAPE; 92d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar int changes = calcConfigChanges(res, newCnf); 93082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, mCache.getInstance(key, res, getActivity().getTheme())); 94d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.onConfigurationChange(changes); 95082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, mCache.getInstance(key, res, getActivity().getTheme())); 96d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 97d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 98082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 99d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testEffectiveConfigChange() 100d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 101d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue changingValue = new TypedValue(); 102d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar long key = 4L; 103d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources res = getActivity().getResources(); 104d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_orientation_dependent, changingValue, true); 105d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float changingDim = TypedValue.complexToDimension(changingValue.data, 106d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getDisplayMetrics()); 107d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(key, getActivity().getTheme(), 108d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(changingDim, changingValue.changingConfigurations)); 109d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 110d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Configuration cfg = res.getConfiguration(); 111d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration newCnf = new Configuration(cfg); 112d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar newCnf.orientation = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? 113d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration.ORIENTATION_PORTRAIT 114d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar : Configuration.ORIENTATION_LANDSCAPE; 115d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar int changes = calcConfigChanges(res, newCnf); 116082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(changingDim, mCache.getInstance(key, res, getActivity().getTheme())); 117d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.onConfigurationChange(changes); 118d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar assertNull(mCache.get(key, getActivity().getTheme())); 119d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 120d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 121082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 122d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testConfigChangeMultipleResources() 123d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 124d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue staticValue = new TypedValue(); 125d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue changingValue = new TypedValue(); 126d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources res = getActivity().getResources(); 127d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_generic, staticValue, true); 128d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_orientation_dependent, changingValue, true); 129d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float staticDim = TypedValue.complexToDimension(staticValue.data, res.getDisplayMetrics()); 130d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float changingDim = TypedValue.complexToDimension(changingValue.data, 131d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getDisplayMetrics()); 132d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(R.dimen.resource_cache_test_generic, getActivity().getTheme(), 133d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(staticDim, staticValue.changingConfigurations)); 134d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(R.dimen.resource_cache_test_orientation_dependent, getActivity().getTheme(), 135d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(changingDim, changingValue.changingConfigurations)); 136d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Configuration cfg = res.getConfiguration(); 137d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration newCnf = new Configuration(cfg); 138d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar newCnf.orientation = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? 139d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration.ORIENTATION_PORTRAIT 140d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar : Configuration.ORIENTATION_LANDSCAPE; 141d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar int changes = calcConfigChanges(res, newCnf); 142082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, mCache.getInstance(R.dimen.resource_cache_test_generic, res, 143d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar getActivity().getTheme())); 144082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(changingDim, 145082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski mCache.getInstance(R.dimen.resource_cache_test_orientation_dependent, res, 146082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski getActivity().getTheme())); 147d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.onConfigurationChange(changes); 148082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, mCache.getInstance(R.dimen.resource_cache_test_generic, res, 149d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar getActivity().getTheme())); 150082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNull(mCache.getInstance(R.dimen.resource_cache_test_orientation_dependent, res, 151d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar getActivity().getTheme())); 152d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 153d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 154082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski @SmallTest 155d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public void testConfigChangeMultipleThemes() 156d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 157d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue[] staticValues = new TypedValue[]{new TypedValue(), new TypedValue()}; 158d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar TypedValue[] changingValues = new TypedValue[]{new TypedValue(), new TypedValue()}; 159d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float staticDim = 0; 160d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar float changingDim = 0; 161d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources res = getActivity().getResources(); 162d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar for (int i = 0; i < 2; i++) { 163d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_generic, staticValues[i], true); 164d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar staticDim = TypedValue 165d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar .complexToDimension(staticValues[i].data, res.getDisplayMetrics()); 166d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 167d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getValue(R.dimen.resource_cache_test_orientation_dependent, changingValues[i], 168d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar true); 169d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar changingDim = TypedValue.complexToDimension(changingValues[i].data, 170d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar res.getDisplayMetrics()); 171d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources.Theme theme = i == 0 ? getActivity().getTheme() : null; 172d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(R.dimen.resource_cache_test_generic, theme, 173d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(staticDim, staticValues[i].changingConfigurations)); 174d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.put(R.dimen.resource_cache_test_orientation_dependent, theme, 175d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar new DummyFloatConstantState(changingDim, 176d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar changingValues[i].changingConfigurations)); 177d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 178d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Configuration cfg = res.getConfiguration(); 179d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration newCnf = new Configuration(cfg); 180d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar newCnf.orientation = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? 181d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar Configuration.ORIENTATION_PORTRAIT 182d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar : Configuration.ORIENTATION_LANDSCAPE; 183d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar int changes = calcConfigChanges(res, newCnf); 184d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar for (int i = 0; i < 2; i++) { 185d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources.Theme theme = i == 0 ? getActivity().getTheme() : null; 186082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, 187082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski mCache.getInstance(R.dimen.resource_cache_test_generic, res, theme)); 188d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar assertEquals(changingDim, 189082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski mCache.getInstance(R.dimen.resource_cache_test_orientation_dependent, res, 190082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski theme)); 191d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 192d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mCache.onConfigurationChange(changes); 193d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar for (int i = 0; i < 2; i++) { 194d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Resources.Theme theme = i == 0 ? getActivity().getTheme() : null; 195082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertEquals(staticDim, 196082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski mCache.getInstance(R.dimen.resource_cache_test_generic, res, theme)); 197082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski assertNull(mCache.getInstance(R.dimen.resource_cache_test_orientation_dependent, res, 198082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski theme)); 199d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 200d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 201d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 202082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski private static int calcConfigChanges(Resources resources, Configuration configuration) { 203082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski return resources.calcConfigChanges(configuration); 204d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 205d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 206082614c6a57a115ee0c5975e3579bf34a178c0f8Adam Lesinski static class DummyFloatConstantState extends ConstantState<Float> { 207d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 208d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar final Float mObj; 209d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 210d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar int mChangingConf = 0; 211d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 212d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar DummyFloatConstantState(Float obj) { 213d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mObj = obj; 214d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 215d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 216d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar DummyFloatConstantState(Float obj, int changingConf) { 217d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mObj = obj; 218d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar mChangingConf = changingConf; 219d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 220d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 221d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar @Override 222d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public int getChangingConfigurations() { 223d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar return mChangingConf; 224d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 225d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar 226d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar @Override 227d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar public Float newInstance() { 228d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar return new Float(mObj); 229d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 230d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar } 231d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar} 232