19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Resources;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.AndroidTestCase;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.PerformanceTestCase;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.LayoutInflater;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View;
271a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenimport com.android.frameworks.coretests.R;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Map;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class InflateTest extends AndroidTestCase implements PerformanceTestCase {
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private LayoutInflater mInflater;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Resources mResources;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private View mView;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void setUp() throws Exception {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.setUp();
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mInflater = LayoutInflater.from(mContext);
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mResources = mContext.getResources();
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // to try to make things consistent, before doing timing
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // do an initial instantiation of the layout and then clear
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // out the layout cache.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//            mInflater.inflate(mResId, null, null);
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//            mResources.flushLayoutCache();
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isPerformanceOnly() {
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return false;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void inflateTest(int resourceId) {
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mView = mInflater.inflate(resourceId, null);
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mResources.flushLayoutCache();
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void inflateCachedTest(int resourceId) {
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Make sure this layout is in the cache.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mInflater.inflate(resourceId, null);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mInflater.inflate(resourceId, null);
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout1() throws Exception {
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_one);
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout2() throws Exception {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_two);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout3() throws Exception {
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_three);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout4() throws Exception {
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_four);
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout5() throws Exception {
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_five);
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLayout6() throws Exception {
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateTest(R.layout.layout_six);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout1() throws Exception {
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_one);
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout2() throws Exception {
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_two);
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout3() throws Exception {
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_three);
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout4() throws Exception {
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_four);
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout5() throws Exception {
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_five);
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testCachedLayout6() throws Exception {
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        inflateCachedTest(R.layout.layout_six);
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//    public void testLayoutTag() throws Exception {
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        public void setUp
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        (Context
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        context){
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        setUp(context, R.layout.layout_tag);
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//    }
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        public void run
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        ()
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        {
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//            super.run();
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//            if (!"MyTag".equals(mView.getTag())) {
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//                throw new RuntimeException("Incorrect tag: " + mView.getTag());
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//            }
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//        }
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//    }
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class ViewOne extends View {
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ViewOne(Context context) {
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            super(context);
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ViewOne(Context context, AttributeSet attrs) {
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            super(context, attrs);
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
156