1d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy/*
2d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * Copyright (C) 2007 The Android Open Source Project
3d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy *
4d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * you may not use this file except in compliance with the License.
6d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * You may obtain a copy of the License at
7d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy *
8d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy *
10d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * Unless required by applicable law or agreed to in writing, software
11d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * See the License for the specific language governing permissions and
14d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * limitations under the License.
15d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy */
16d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.view;
18d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
191d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenimport com.android.frameworks.coretests.R;
20d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guyimport android.test.suitebuilder.annotation.MediumTest;
21d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
22d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guyimport android.test.ActivityInstrumentationTestCase2;
23d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guyimport android.widget.Button;
24d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
25d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy/**
26d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy * Exercises {@link android.view.View}'s tags property.
27d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy */
28d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guypublic class SetTagsTest extends ActivityInstrumentationTestCase2<Disabled> {
29d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    private Button mView;
30d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
31d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public SetTagsTest() {
321d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyen        super("com.android.frameworks.coretests", Disabled.class);
33d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
34d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
35d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @Override
36d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void setUp() throws Exception {
37d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        super.setUp();
38d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
39d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView = (Button) getActivity().findViewById(R.id.disabledButton);
40d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
41d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
42d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
43d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetUpConditions() throws Exception {
44d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertNotNull(mView);
45d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
46d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
47d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
48d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTag() throws Exception {
49d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView.setTag("1");
50d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
51d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
52d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
53d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testGetTag() throws Exception {
54d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        Object o = new Object();
55d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView.setTag(o);
56d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
57d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        final Object stored = mView.getTag();
58d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertNotNull(stored);
59d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertSame("The stored tag is inccorect", o, stored);
60d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
61d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
62d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
63d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTagWithKey() throws Exception {
64d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView.setTag(R.id.a, "2");
65d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
66d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
67d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
68d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testGetTagWithKey() throws Exception {
69d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        Object o = new Object();
70d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView.setTag(R.id.a, o);
71d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
72d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        final Object stored = mView.getTag(R.id.a);
73d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertNotNull(stored);
74d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertSame("The stored tag is inccorect", o, stored);
75d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
76d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
77d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
78d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTagWithFrameworkId() throws Exception {
79d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        boolean result = false;
80d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        try {
81d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            mView.setTag(android.R.id.list, "2");
82d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        } catch (IllegalArgumentException e) {
83d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            result = true;
84d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        }
85d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertTrue("Setting a tag with a framework id did not throw an exception", result);
86d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
87d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
88d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
89d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTagWithNoPackageId() throws Exception {
90d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        boolean result = false;
91d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        try {
92d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            mView.setTag(0x000000AA, "2");
93d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        } catch (IllegalArgumentException e) {
94d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            result = true;
95d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        }
96d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertTrue("Setting a tag with an id with no package did not throw an exception", result);
97d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
98d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
99d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
100d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTagInternalWithFrameworkId() throws Exception {
101d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        mView.setTagInternal(android.R.id.list, "2");
102d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
103d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy
104d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    @MediumTest
105d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    public void testSetTagInternalWithApplicationId() throws Exception {
106d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        boolean result = false;
107d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        try {
108d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            mView.setTagInternal(R.id.a, "2");
109d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        } catch (IllegalArgumentException e) {
110d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy            result = true;
111d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        }
112d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy        assertTrue("Setting a tag with an id with app package did not throw an exception", result);
113d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy    }
114d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3aRomain Guy}
115