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