ConfigTest.java revision 532d77f22fc86721f319e9bd20e9767e936622e4
1ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach/*
2ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Copyright (C) 2009 The Android Open Source Project
3ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach *
4ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Licensed under the Apache License, Version 2.0 (the "License");
5ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * you may not use this file except in compliance with the License.
6ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * You may obtain a copy of the License at
7ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach *
8ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach *      http://www.apache.org/licenses/LICENSE-2.0
9ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach *
10ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Unless required by applicable law or agreed to in writing, software
11ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * distributed under the License is distributed on an "AS IS" BASIS,
12ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * See the License for the specific language governing permissions and
14ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * limitations under the License.
15ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach */
16ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
17ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachpackage android.content.res.cts;
18ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
19532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamathimport java.util.ArrayList;
20532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamathimport java.util.List;
21ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport java.util.Locale;
22ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
23ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.AssetManager;
24ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.Configuration;
25ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.Resources;
26ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.TypedArray;
27ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.Resources.NotFoundException;
28ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.test.AndroidTestCase;
29ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.test.suitebuilder.annotation.MediumTest;
30ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.test.suitebuilder.annotation.SmallTest;
31ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.util.DisplayMetrics;
32544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackbornimport android.util.Log;
33ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
34ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport com.android.cts.stub.R;
35ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
36ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachpublic class ConfigTest extends AndroidTestCase {
37ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    enum Properties {
38ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        LANGUAGE,
39ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        COUNTRY,
4082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        SCRIPT,
4182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        VARIANT,
42ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        MCC,
43ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        MNC,
44ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        TOUCHSCREEN,
45ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        KEYBOARD,
46ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        KEYBOARDHIDDEN,
47ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        NAVIGATION,
48ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        ORIENTATION,
49ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        WIDTH,
50ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        HEIGHT,
519e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        DENSITY,
52544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        SCREENLAYOUT,
53544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        SWIDTH_DP,
54544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        WIDTH_DP,
55544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        HEIGHT_DP
56ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
57ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
58ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    private static void checkValue(final Resources res, final int resId,
59ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            final String expectedValue) {
60ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        try {
61ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            final String actual = res.getString(resId);
62ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            assertNotNull("Returned wrong configuration-based simple value: expected <nothing>, "
63ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + "got '" + actual + "' from resource 0x" + Integer.toHexString(resId),
64ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    expectedValue);
65ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            assertEquals("Returned wrong configuration-based simple value: expected '"
66ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + expectedValue + "', got '" + actual + "' from resource 0x"
67ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + Integer.toHexString(resId), expectedValue, actual);
68ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        } catch (NotFoundException e) {
69ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            assertNull("Resource not found for configuration-based simple value: expecting \""
70ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + expectedValue + "\"", expectedValue);
71ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
72ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
73ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
74ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    private static void checkValue(final Resources res, final int resId,
75ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            final int[] styleable, final String[] expectedValues) {
76ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        final Resources.Theme theme = res.newTheme();
77ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        final TypedArray sa = theme.obtainStyledAttributes(resId, styleable);
78ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        for (int i = 0; i < styleable.length; i++) {
79ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            final String actual = sa.getString(i);
80ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            assertEquals("Returned wrong configuration-based style value: expected '"
81ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + expectedValues[i] + "', got '" + actual + "' from attr "
82ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    + i + " of resource 0x" + Integer.toHexString(resId),
83ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    actual, expectedValues[i]);
84ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
85ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        sa.recycle();
86ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
87ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
88ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    private class TotalConfig {
89544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        final Configuration mConfig;
90544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        final DisplayMetrics mMetrics;
91ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
92ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        public TotalConfig() {
93ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            mConfig = new Configuration();
94ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            mMetrics = new DisplayMetrics();
9582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath            mConfig.locale = Locale.ROOT;
96ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
97ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
98ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        public void setProperty(final Properties p, final int value) {
99ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            switch(p) {
100ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case MCC:
101ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.mcc = value;
102ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
103ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case MNC:
104ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.mnc = value;
105ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
106ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case TOUCHSCREEN:
107ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.touchscreen = value;
108ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
109ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case KEYBOARD:
110ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.keyboard = value;
111ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
112ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case KEYBOARDHIDDEN:
113ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.keyboardHidden = value;
114ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
115ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case NAVIGATION:
116ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.navigation = value;
117ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
118ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case ORIENTATION:
119ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mConfig.orientation = value;
120ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
121ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case WIDTH:
122ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mMetrics.widthPixels = value;
123fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski                    mMetrics.noncompatWidthPixels = value;
124ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
125ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case HEIGHT:
126ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    mMetrics.heightPixels = value;
127fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski                    mMetrics.noncompatHeightPixels = value;
128ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
129ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case DENSITY:
130e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                    // this is the ratio from the standard
131e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                    mMetrics.density = (((float)value)/((float)DisplayMetrics.DENSITY_DEFAULT));
132fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski                    mMetrics.noncompatDensity = mMetrics.density;
13322c10fd575ab9eaf2f8f7a8b2a3e1569b041ded9Dianne Hackborn                    mConfig.densityDpi = value;
134ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
1359e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                case SCREENLAYOUT:
1369e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                    mConfig.screenLayout = value;
1379e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                    break;
138544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                case SWIDTH_DP:
139544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    mConfig.smallestScreenWidthDp = value;
140544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    break;
141544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                case WIDTH_DP:
142544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    mConfig.screenWidthDp = value;
143544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    break;
144544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                case HEIGHT_DP:
145544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    mConfig.screenHeightDp = value;
146544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                    break;
147ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                default:
148ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    assert(false);
149ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
150ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            }
151ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
152ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
153ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        public void setProperty(final Properties p, final String value) {
154ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            switch(p) {
155ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case LANGUAGE:
15682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    mConfig.locale = new Locale.Builder()
15782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setLocale(mConfig.locale)
15882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setLanguage(value)
15982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .build();
160ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
161ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                case COUNTRY:
16282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    mConfig.locale = new Locale.Builder()
16382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setLocale(mConfig.locale)
16482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setRegion(value)
16582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .build();
16682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    break;
16782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                case SCRIPT:
16882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    mConfig.locale = new Locale.Builder()
16982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setLocale(mConfig.locale)
17082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setScript(value)
17182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .build();
17282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    break;
17382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                case VARIANT:
17482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                    mConfig.locale = new Locale.Builder()
17582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setLocale(mConfig.locale)
17682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .setVariant(value)
17782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                            .build();
178ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
179ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                default:
180ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    assert(false);
181ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach                    break;
182ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            }
183ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
184ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
185ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        public Resources getResources() {
186ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            final AssetManager assmgr = new AssetManager();
187ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            assmgr.addAssetPath(mContext.getPackageResourcePath());
188ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach            return new Resources(assmgr, mMetrics, mConfig);
189ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        }
190ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
191ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
192544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public TotalConfig makeEmptyConfig() {
193544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        return new TotalConfig();
194544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    }
195544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
196544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public TotalConfig makeClassicConfig() {
197544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = new TotalConfig();
198fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.LANGUAGE, "en");
199fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.COUNTRY, "US");
200fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.MCC, 310);
201fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.MNC, 001); // unused
202fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_FINGER);
203fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_QWERTY);
204fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.KEYBOARDHIDDEN, Configuration.KEYBOARDHIDDEN_YES);
205fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_TRACKBALL);
206fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_PORTRAIT);
207fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.SWIDTH_DP, 320);
208fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.WIDTH_DP, 320);
209fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.HEIGHT_DP, 480);
210fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.DENSITY, 160);
211fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.WIDTH, 200);
212fadb6e50259673cbdca4bd2279b005d799c4112dAdam Lesinski        config.setProperty(Properties.HEIGHT, 320);
213544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        return config;
214544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    }
215544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
216e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot    private static void checkPair(Resources res, int[] notResIds,
217e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot            int simpleRes, String simpleString,
218e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot            int bagRes, String bagString) {
219e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        boolean willHave = true;
220e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        if (notResIds != null) {
221e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot            for (int i : notResIds) {
222e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                if (i == simpleRes) {
223e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                    willHave = false;
224e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                    break;
225e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                }
226e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot            }
227e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        }
228e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, simpleRes, willHave ? simpleString : null);
229e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, bagRes, R.styleable.TestConfig,
230e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                new String[]{willHave ? bagString : null});
231e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot    }
232e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
233ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    @SmallTest
234544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public void testAllEmptyConfigs() {
235ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        /**
236ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         * Test a resource that contains a value for each possible single
237ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         * configuration value.
238ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         */
239544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeEmptyConfig();
240ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        Resources res = config.getResources();
241e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple default");
242e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
243e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag default"});
244ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
245544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
246ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
247ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
248e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple xx");
249e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
250e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag xx"});
251ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
252544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
253ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
254ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.COUNTRY, "YY");
255ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
256ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple xx-rYY");
257e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
258e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag xx-rYY"});
259ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
260544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
261ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.MCC, 111);
262ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
263ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple mcc111");
264e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
265e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag mcc111"});
266ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
267544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
268ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.MNC, 222);
269ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
270ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple mnc222");
271e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
272e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag mnc222"});
273ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
274544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
275ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_NOTOUCH);
276ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
277e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple notouch");
278e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
279e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag notouch"});
280ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
281544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
282e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_STYLUS);
283ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
284e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple stylus");
285e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
286e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag stylus"});
287ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
288544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
289e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_NOKEYS);
290ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
291e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple nokeys");
292e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
293e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag nokeys"});
294ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
295544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
296e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_12KEY);
297ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
298e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 12key");
299e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
300e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 12key"});
301ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
302544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
303e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARDHIDDEN, Configuration.KEYBOARDHIDDEN_NO);
304ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
305e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple keysexposed");
306e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
307e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag keysexposed"});
308ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
309544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
310e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_NONAV);
311ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
312e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple nonav");
313e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
314e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag nonav"});
315ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
316544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
317e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_DPAD);
318ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
319e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple dpad");
320e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
321e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag dpad"});
322ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
323544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
324e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_WHEEL);
325ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
326e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple wheel");
327e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
328e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag wheel"});
329ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
330544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
331e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.HEIGHT, 480);
332e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.WIDTH, 320);
333ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
334e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 480x320");
335e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
336e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 480x320"});
337ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
338544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
339e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 240);
340ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
341e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 240dpi");
342e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
343e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 240dpi"});
344ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
345544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
346e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
347ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
348e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple landscape");
349e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
350e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag landscape"});
351ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
352544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
353e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_SQUARE);
354ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
355e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple square");
356e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
357e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag square"});
3589e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
359544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
3609e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_SMALL);
3619e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
3629e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple small");
3639e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.bag,
3649e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                R.styleable.TestConfig, new String[]{"bag small"});
3659e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
366544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
3679e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_NORMAL);
3689e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
3699e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple normal");
3709e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.bag,
3719e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                R.styleable.TestConfig, new String[]{"bag normal"});
3729e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
373544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
3749e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
3759e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
3769e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple large");
3779e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.bag,
3789e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                R.styleable.TestConfig, new String[]{"bag large"});
3799e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
380544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
3819e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
3829e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
3839e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple xlarge");
3849e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.bag,
3859e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn                R.styleable.TestConfig, new String[]{"bag xlarge"});
386544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
387544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
388544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
389544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
390544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600");
391544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
392544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw600"});
393544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
394544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
395544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
396544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
397544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600");
398544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
399544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw600"});
400544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
401544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
402544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 720);
403544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
404544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw720");
405544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
406544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw720"});
407544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
408544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
409544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 600);
410544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
411544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple w600");
412544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
413544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag w600"});
414544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
415544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
416544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 720);
417544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
418544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple w720");
419544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
420544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag w720"});
421544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
422544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
423544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 550);
424544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
425544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple h550");
426544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
427544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag h550"});
428544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
429544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeEmptyConfig();
430544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 670);
431544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
432544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple h670");
433544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
434544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag h670"});
435544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    }
436544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
437544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    @SmallTest
438544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public void testAllClassicConfigs() {
439544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        /**
440544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * Test a resource that contains a value for each possible single
441544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * configuration value.
442544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         */
443544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeClassicConfig();
444544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        Resources res = config.getResources();
445544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple default");
446544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
447544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag default"});
448544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
449544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
450544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.LANGUAGE, "xx");
451544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
452544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple xx");
453544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
454544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag xx"});
455544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
456544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
457544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.LANGUAGE, "xx");
458544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.COUNTRY, "YY");
459544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
460544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple xx-rYY");
461544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
462544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag xx-rYY"});
463544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
464544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
465544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MCC, 111);
466544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
467544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple mcc111");
468544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
469544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag mcc111"});
470544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
471544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
472544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MNC, 222);
473544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
474544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple mnc222");
475544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
476544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag mnc222"});
477544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
478544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
479544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_NOTOUCH);
480544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
481544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple notouch");
482544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
483544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag notouch"});
484544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
485544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
486544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_STYLUS);
487544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
488544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple stylus");
489544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
490544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag stylus"});
491544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
492544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
493544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_NOKEYS);
494544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
495544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple nokeys");
496544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
497544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag nokeys"});
498544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
499544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
500544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_12KEY);
501544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
502544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 12key 63x57");
503544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
504544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 12key 63x57"});
505544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
506544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
507544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.KEYBOARDHIDDEN, Configuration.KEYBOARDHIDDEN_NO);
508544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
509544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple keysexposed");
510544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
511544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag keysexposed"});
512544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
513544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
514544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_NONAV);
515544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
516544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple nonav");
517544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
518544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag nonav"});
519544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
520544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
521544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_DPAD);
522544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
523544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple dpad 63x57");
524544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
525544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag dpad 63x57"});
526544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
527544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
528544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_WHEEL);
529544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
530544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple wheel");
531544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
532544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag wheel"});
533544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
534544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
535544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT, 480);
536544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH, 320);
537544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
538544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 480x320");
539544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
540544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 480x320"});
541544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
542544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
543544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.DENSITY, 240);
544544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
545544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 240dpi");
546544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
547544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 240dpi"});
548544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
549544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
550544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
551544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
552544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple landscape");
553544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
554544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag landscape"});
555544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
556544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
557544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_SQUARE);
558544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
559544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple square");
560544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
561544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag square"});
562544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
563544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
564544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_SMALL);
565544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
566544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple small");
567544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
568544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag small"});
569544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
570544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
571544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_NORMAL);
572544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
573544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple normal");
574544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
575544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag normal"});
576544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
577544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
578544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
579544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
580544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple large");
581544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
582544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag large"});
583544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
584544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
585544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
586544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
587544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple xlarge");
588544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
589544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag xlarge"});
590544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
591544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
592544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
593544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
594544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600");
595544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
596544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw600"});
597544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
598544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
599544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
600544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
601544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
602544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600 land");
603544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
604544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw600 land"});
605544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
606544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
607544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 720);
608544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
609544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw720");
610544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
611544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw720"});
612544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
613544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
614544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 600);
615544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
616544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple w600");
617544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
618544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag w600"});
619544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
620544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
621544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 720);
622544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
623544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple w720");
624544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
625544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag w720"});
626544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
627544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
628544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 550);
629544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
630544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple h550");
631544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
632544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag h550"});
633544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
634544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
635544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 670);
636544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
637544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple h670");
638544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
639544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag h670"});
640e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot    }
641e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
642e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot    @MediumTest
643e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot    public void testDensity() throws Exception {
644e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // have 32, 240 and the default 160 content.
645e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // rule is that closest wins, with down scaling (larger content)
646e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // being twice as nice as upscaling.
647e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // transition at H/2 * (-1 +/- sqrt(1+8L/H))
648e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // SO, X < 49 goes to 32
649e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // 49 >= X < 182 goes to 160
650e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        // X >= 182 goes to 240
651544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeClassicConfig();
652e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 2);
653e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        Resources res = config.getResources();
654e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 32dpi");
655e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
656e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 32dpi"});
657ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
658544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
659e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 32);
660ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
661e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 32dpi");
662e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
663e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 32dpi"});
664ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
665544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
666e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 48);
667ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
668e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 32dpi");
669e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
670e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 32dpi"});
671ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
672544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
673e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 49);
674ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
675e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple default");
676e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
677e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag default"});
678ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
679544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
680e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 150);
681ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
682e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple default");
683e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
684e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag default"});
685ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
686544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
687e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 181);
688ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
689e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple default");
690e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
691e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag default"});
692ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
693544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
694e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 182);
695ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
696e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 240dpi");
697e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
698e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 240dpi"});
699ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
700544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
701e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 239);
702e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        res = config.getResources();
703e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 240dpi");
704e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
705e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 240dpi"});
706e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
707544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
708e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.DENSITY, 490);
709ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
710e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 240dpi");
711e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
712e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 240dpi"});
713ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
714ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
7159e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn    @MediumTest
7169e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn    public void testScreenSize() throws Exception {
7179e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        // ensure that we fall back to the best available screen size
7189e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        // for a given configuration.
719544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeClassicConfig();
7209e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_SMALL);
7219e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        Resources res = config.getResources();
7229e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple small");
7239e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.small, "small");
7249e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.normal, "default");
7259e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.large, "default");
7269e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.xlarge, "default");
7279e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
728544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
7299e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_NORMAL);
7309e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
7319e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple normal");
7329e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.small, "default");
7339e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.normal, "normal");
7349e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.large, "default");
7359e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.xlarge, "default");
7369e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
737544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
7389e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
7399e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
7409e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple large");
7419e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.small, "default");
7429e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.normal, "normal");
7439e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.large, "large");
7449e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.xlarge, "default");
7459e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
746544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
7479e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
7489e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        res = config.getResources();
7499e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.simple, "simple xlarge");
7509e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.small, "default");
7519e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.normal, "normal");
7529e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.large, "large");
7539e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn        checkValue(res, R.configVarying.xlarge, "xlarge");
7549e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn    }
7559e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn
756544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    @MediumTest
757544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public void testNewScreenSize() throws Exception {
758544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        // ensure that swNNNdp, wNNNdp, and hNNNdp are working correctly
759544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        // for various common screen configurations.
760544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeClassicConfig();
76163d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 589);
76263d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 589);
76363d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 500);
764544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
765544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
766544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        Resources res = config.getResources();
767544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple large");
768544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "default");
769544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "default");
770544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "default");
771544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "default");
772544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
773544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
77463d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 590);
77563d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 590);
77663d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 500);
77763d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
77863d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
77963d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_MEDIUM);
78063d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
78163d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw590 mdpi");
78263d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "590 mdpi");
78363d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
78463d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_HIGH);
78563d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
78663d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw590 hdpi");
78763d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "590 hdpi");
78863d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
78963d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_XHIGH);
79063d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
79163d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw590 xhdpi");
79263d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "590 xhdpi");
79363d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
79463d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 591);
79563d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 591);
79663d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_MEDIUM);
79763d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
79863d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw591");
79963d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "591");
80063d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
80163d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_HIGH);
80263d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
80363d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw591 hdpi");
80463d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "591 hdpi");
80563d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
80663d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config.setProperty(Properties.DENSITY, DisplayMetrics.DENSITY_XHIGH);
80763d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        res = config.getResources();
80863d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw591 hdpi");
80963d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        checkValue(res, R.configVarying.sw, "591 hdpi");
81063d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn
81163d85b57e49feb83fd91ed027b4893a0e47415aeDianne Hackborn        config = makeClassicConfig();
812544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 480);
813544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 800);
814544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 480);
815544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
816544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
817544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
818544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple w720");
819544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "default");
820544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "720");
821544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "default");
822544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "600");
823544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
824544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
825544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
826544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 1024);
827544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 552);
828544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
829544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
830544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
831544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600 land");
832544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "600 land");
833544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "720");
834544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "550");
835544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "600-550");
836544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
837544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
838544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 600);
839544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 600);
840544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 974);
841544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_PORTRAIT);
842544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
843544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
844544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600");
845544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "600");
846544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "600");
847544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "670");
848544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "600-550");
849544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
850544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
851544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 719);
852544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 1279);
853544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 669);
854544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
855544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_LARGE);
856544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
857544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw600 land");
858544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "600 land");
859544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "720");
860544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "550");
861544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "600-550");
862544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
863544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
864544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 800);
865544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 1280);
866544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 672);
867544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
868544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
869544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
870544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw720");
871544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "720");
872544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "720");
873544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "670");
874544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "720-670");
875544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
876544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
877544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 800);
878544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 720);
879544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 1230);
880544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_PORTRAIT);
881544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
882544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
883544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw720");
884544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.sw, "720");
885544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.w, "720");
886544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.h, "670");
887544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.wh, "720-670");
888544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    }
889544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
890e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot// TODO - add tests for special cases - ie, other key params seem ignored if
891e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot// nokeys is set
892e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
893ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    @MediumTest
894544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public void testPrecidence() {
895ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        /**
896544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * Check for precidence of resources selected when there are multiple
897544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * options matching the current config.
898ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         */
899544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeEmptyConfig();
900544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT, 640);
901544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH, 400);
902ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        Resources res = config.getResources();
903544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 640x400");
904544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
905544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 640x400"});
906544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
907544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_NONAV);
908544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
909544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple nonav");
910544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
911544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag nonav"});
912544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
913544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_NOKEYS);
914544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
915544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple nokeys");
916544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
917544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag nokeys"});
918544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
919544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.KEYBOARDHIDDEN, Configuration.KEYBOARDHIDDEN_NO);
920544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
921544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple keysexposed");
922544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
923544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag keysexposed"});
924544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
925544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_NOTOUCH);
926544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
927544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple notouch");
928544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
929544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag notouch"});
930544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
931544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.DENSITY, 240);
932544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
933544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 240dpi");
934544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
935544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 240dpi"});
936544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
937544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_LANDSCAPE);
938544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
939544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple landscape");
940544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
941544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag landscape"});
942544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
943544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SCREENLAYOUT, Configuration.SCREENLAYOUT_SIZE_XLARGE);
944544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
945544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple xlarge");
946544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
947544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag xlarge"});
948544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
949544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.HEIGHT_DP, 670);
950544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
951544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple h670");
952544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
953544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag h670"});
954544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
955544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.WIDTH_DP, 720);
956544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
957544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple 720-670");
958544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
959544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag 720-670"});
960544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
961544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.SWIDTH_DP, 720);
962544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
963544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple sw720");
964544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
965544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag sw720"});
966ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
967ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
968ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.COUNTRY, "YY");
969ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
970ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple xx-rYY");
971ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.bag,
972544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag xx-rYY"});
973ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
974544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MCC, 111);
975ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
976544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple mcc111 xx-rYY");
977e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
978544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag mcc111 xx-rYY"});
979544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
980544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MNC, 222);
981544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
982544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple mcc111 mnc222");
983544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
984544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag mcc111 mnc222"});
985ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
986ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
987ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    @MediumTest
988544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn    public void testCombinations() {
989ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        /**
990ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         * Verify that in cases of ties, the specific ordering is followed
991ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         */
992ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
993e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        /**
994544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * Precidence order: mcc, mnc, locale, swdp, wdp, hdp, screenlayout-size,
9959e357fa63f60e01c61fc11ce304398233b779558Dianne Hackborn         * screenlayout-long, orientation, density,
996e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot         * touchscreen, hidden, keyboard, navigation, width-height
997e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot         */
998e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
999e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        /**
1000e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot         * verify mcc trumps mnc.  Have 110-xx, 220-xx but no 110-220
1001544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * so which is selected?  Should be mcc110-xx.
1002ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach         */
1003544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        TotalConfig config = makeClassicConfig();
1004e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.MCC, 110);
1005e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.MNC, 220);
1006e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.LANGUAGE, "xx");
1007e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        Resources res = config.getResources();
1008e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple mcc110 xx");
1009e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1010e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag mcc110 xx"});
1011e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
1012e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        /* full A + B + C doesn't exist.  Do we get A + C or B + C?
1013e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot         */
1014544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1015ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.MCC, 111);
1016ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.MNC, 222);
1017ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
1018e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        res = config.getResources();
1019ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple mcc111 mnc222");
1020e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1021e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag mcc111 mnc222"});
1022ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1023544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1024ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.MNC, 222);
1025ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
1026e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.ORIENTATION,
1027e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.ORIENTATION_SQUARE);
1028ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1029ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple mnc222 xx");
1030e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1031e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag mnc222 xx"});
1032ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1033544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1034ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.LANGUAGE, "xx");
1035e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.ORIENTATION,
1036e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.ORIENTATION_SQUARE);
1037ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.DENSITY, 32);
1038ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1039e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple xx square");
1040e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1041e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag xx square"});
1042ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1043544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        /**
1044544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * Verify that proper strings are found for multiple-selectivity case
1045544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * (ie, a string set for locale and mcc is found only when both are
1046544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         * true).
1047544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn         */
1048544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1049544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.LANGUAGE, "xx");
1050544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.COUNTRY, "YY");
1051544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MCC, 111);
1052544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
1053544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple mcc111 xx-rYY");
1054544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag, R.styleable.TestConfig,
1055544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                new String[] { "bag mcc111 xx-rYY" });
1056544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
1057544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1058544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.LANGUAGE, "xx");
1059544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.COUNTRY, "YY");
1060544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MCC, 333);
1061544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
1062544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple xx-rYY");
1063544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
1064544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[] { "bag xx-rYY" });
1065544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
1066544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1067544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config.setProperty(Properties.MNC, 333);
1068544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        res = config.getResources();
1069544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple default");
1070544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.bag,
1071544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag default"});
1072544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn
1073544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1074e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.ORIENTATION,
1075e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.ORIENTATION_SQUARE);
1076ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.DENSITY, 32);
1077e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.TOUCHSCREEN,
1078e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.TOUCHSCREEN_STYLUS);
1079ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1080e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple square 32dpi");
1081e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1082e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag square 32dpi"});
1083ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1084544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1085ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.DENSITY, 32);
1086e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.TOUCHSCREEN,
1087e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.TOUCHSCREEN_STYLUS);
1088e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARDHIDDEN,
1089e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.KEYBOARDHIDDEN_NO);
1090ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1091ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        checkValue(res, R.configVarying.simple, "simple 32dpi stylus");
1092e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1093e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 32dpi stylus"});
1094ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1095544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1096e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.TOUCHSCREEN,
1097e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.TOUCHSCREEN_STYLUS);
1098e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARDHIDDEN,
1099e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.KEYBOARDHIDDEN_NO);
1100ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_12KEY);
1101ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1102e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple stylus keysexposed");
1103e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1104e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag stylus keysexposed"});
1105ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1106544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1107e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.KEYBOARDHIDDEN,
1108e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.KEYBOARDHIDDEN_NO);
1109ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_12KEY);
1110e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION,
1111e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.NAVIGATION_DPAD);
1112ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1113e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple keysexposed 12key");
1114e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1115e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag keysexposed 12key"});
1116ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach
1117544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1118ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_12KEY);
1119e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION,
1120e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.NAVIGATION_DPAD);
1121ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.HEIGHT, 63);
1122ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        config.setProperty(Properties.WIDTH, 57);
1123ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach        res = config.getResources();
1124e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.simple, "simple 12key dpad");
1125e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1126e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                R.styleable.TestConfig, new String[]{"bag 12key dpad"});
1127e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot
1128544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        config = makeClassicConfig();
1129e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.NAVIGATION,
1130e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot                Configuration.NAVIGATION_DPAD);
1131e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.HEIGHT, 640);
1132e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        config.setProperty(Properties.WIDTH, 400);
1133e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        res = config.getResources();
1134544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn        checkValue(res, R.configVarying.simple, "simple dpad 63x57");
1135e947cdc06f481293bbd4466c5e73860ea34fcb87Brett Chabot        checkValue(res, R.configVarying.bag,
1136544d272e5901ed193dd9c55a9ef791a38ffef91eDianne Hackborn                R.styleable.TestConfig, new String[]{"bag dpad 63x57"});
1137ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach    }
1138c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn
1139c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn    @MediumTest
1140c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn    public void testVersions() {
1141c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        // Check that we get the most recent resources that are <= our
1142c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        // current version.  Note the special version adjustment, so that
1143c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        // during development the resource version is incremented to the
1144c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        // next one.
1145c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        int vers = android.os.Build.VERSION.SDK_INT;
1146c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        if (!"REL".equals(android.os.Build.VERSION.CODENAME)) {
1147c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn            vers++;
1148c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        }
1149c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        String expected = "v" + vers + "cur";
1150c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        assertEquals(expected, mContext.getResources().getString(R.string.version_cur));
1151c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        assertEquals("base",  mContext.getResources().getString(R.string.version_old));
1152c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn        assertEquals("v3",  mContext.getResources().getString(R.string.version_v3));
1153c6dd74ed84f79a31b2be4ce52a61fef8e16b54b9Dianne Hackborn    }
115482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
115582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath    @MediumTest
115682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath    public void testExtendedLocales() {
115782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        TotalConfig config = makeClassicConfig();
115882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok
115982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.LANGUAGE, "kok");
116082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        Resources res = config.getResources();
116182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok");
116282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
116382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok"});
116482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
116582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-IN
116682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.COUNTRY, "IN");
116782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
116882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok IN");
116982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
117082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok IN"});
117182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
117282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-419
117382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.COUNTRY, "419");
117482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
117582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok 419");
117682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
117782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok 419"});
117882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
117982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
118082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-419-VARIANT
118182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.VARIANT, "VARIANT");
118282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
118382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok 419 VARIANT");
118482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
118582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok 419 VARIANT"});
118682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
118782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-Knda
118882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config = makeClassicConfig();
118982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.LANGUAGE, "kok");
119082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.SCRIPT, "Knda");
119182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
119282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok Knda");
119382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
119482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok Knda"});
119582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
119682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-Knda-419
119782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.COUNTRY, "419");
119882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
119982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok Knda 419");
120082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
120182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok Knda 419"});
120282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
120382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-Knda-419-VARIANT
120482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.VARIANT, "VARIANT");
120582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
120682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok Knda 419 VARIANT");
120782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
120882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok Knda 419 VARIANT"});
120982ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath
121082ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        // BCP 47 Locale kok-VARIANT
121182ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config = makeClassicConfig();
121282ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.LANGUAGE, "kok");
121382ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        config.setProperty(Properties.VARIANT, "VARIANT");
121482ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        res = config.getResources();
121582ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.simple, "simple kok VARIANT");
121682ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath        checkValue(res, R.configVarying.bag,
121782ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath                R.styleable.TestConfig, new String[]{"bag kok VARIANT"});
121882ee2e50f63c00c3a57ce4f76f1843a58b176e09Narayan Kamath    }
1219532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1220532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    @MediumTest
1221532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    public void testTlAndFilConversion() {
1222532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        TotalConfig config = makeClassicConfig();
1223532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1224532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        // Ensure that "fil" is mapped to "tl" correctly.
1225532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.LANGUAGE, "fil");
1226532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.COUNTRY, "US");
1227532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        Resources res = config.getResources();
1228532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.simple, "simple tl");
1229532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.bag,
1230532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                R.styleable.TestConfig, new String[] { "bag tl" });
1231532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1232532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        // Ensure that "fil-PH" is mapped to "tl-PH" correctly.
1233532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config = makeClassicConfig();
1234532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.LANGUAGE, "fil");
1235532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.COUNTRY, "PH");
1236532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        res = config.getResources();
1237532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.simple, "simple tl PH");
1238532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.bag,
1239532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                R.styleable.TestConfig, new String[] { "bag tl PH" });
1240532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1241532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config = makeClassicConfig();
1242532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.LANGUAGE, "tgl");
1243532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        res = config.getResources();
1244532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.simple, "simple tgl");
1245532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.bag,
1246532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                R.styleable.TestConfig, new String[] { "bag tgl" });
1247532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1248532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config = makeClassicConfig();
1249532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.LANGUAGE, "tgl");
1250532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        config.setProperty(Properties.COUNTRY, "PH");
1251532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        res = config.getResources();
1252532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.simple, "simple tgl PH");
1253532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        checkValue(res, R.configVarying.bag,
1254532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                R.styleable.TestConfig, new String[] { "bag tgl PH" });
1255532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    }
1256532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1257532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    @MediumTest
1258532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    public void testGetLocalesConvertsTlToFil() {
1259532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        TotalConfig config = makeClassicConfig();
1260532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1261532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        // Check that the list of locales doesn't contain any of the
1262532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        // "tl" variants. They should've been converted to "fil"
1263532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        // locales.
1264532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        AssetManager am = config.getResources().getAssets();
1265532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        String[] locales = am.getLocales();
1266532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        final List<String> tlLocales = new ArrayList<String>(4);
1267532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        final List<String> filLocales = new ArrayList<String>(4);
1268532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        for (String locale : locales) {
1269532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath            if (locale.startsWith("tl-") || locale.equals("tl")) {
1270532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                tlLocales.add(locale);
1271532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath            }
1272532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1273532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath            if (locale.startsWith("fil-") || locale.equals("fil")) {
1274532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath                filLocales.add(locale);
1275532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath            }
1276532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        }
1277532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath
1278532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        assertEquals(0, tlLocales.size());
1279532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        assertEquals(2, filLocales.size());
1280532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        assertTrue(filLocales.contains("fil"));
1281532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath        assertTrue(filLocales.contains("fil-PH"));
1282532d77f22fc86721f319e9bd20e9767e936622e4Narayan Kamath    }
1283ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach}
1284