ItemTest.java revision 575ec4f0150a3607d0b6902a9b52866c170822f9
1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.setupwizardlib.test;
18
19import android.graphics.drawable.Drawable;
20import android.graphics.drawable.ShapeDrawable;
21import android.test.AndroidTestCase;
22import android.test.suitebuilder.annotation.SmallTest;
23import android.view.View;
24import android.view.ViewGroup;
25import android.widget.FrameLayout;
26import android.widget.ImageView;
27import android.widget.TextView;
28
29import com.android.setupwizardlib.R;
30import com.android.setupwizardlib.items.Item;
31
32public class ItemTest extends AndroidTestCase {
33
34    private TextView mTitleView;
35    private TextView mSummaryView;
36    private ImageView mIconView;
37    private FrameLayout mIconContainer;
38
39    @SmallTest
40    public void testOnBindView() {
41        Item item = new Item();
42        item.setTitle("TestTitle");
43        item.setSummary("TestSummary");
44        Drawable icon = new ShapeDrawable();
45        item.setIcon(icon);
46        View view = createLayout();
47
48        item.onBindView(view);
49
50        assertEquals("Title should be \"TestTitle\"", "TestTitle", mTitleView.getText().toString());
51        assertEquals("Summary should be \"TestSummary\"", "TestSummary",
52                mSummaryView.getText().toString());
53        assertSame("Icon should be the icon shape drawable", icon, mIconView.getDrawable());
54    }
55
56    @SmallTest
57    public void testSingleLineItem() {
58        Item item = new Item();
59        item.setTitle("TestTitle");
60        View view = createLayout();
61
62        item.onBindView(view);
63
64        assertEquals("Title should be \"TestTitle\"", "TestTitle", mTitleView.getText().toString());
65        assertEquals("Summary should be gone", View.GONE, mSummaryView.getVisibility());
66        assertEquals("IconContainer should be gone", View.GONE, mIconContainer.getVisibility());
67    }
68
69    @SmallTest
70    public void testProperties() {
71        Item item = new Item();
72        item.setTitle("TestTitle");
73        item.setSummary("TestSummary");
74        item.setEnabled(false);
75        ShapeDrawable icon = new ShapeDrawable();
76        item.setIcon(icon);
77        item.setId(12345);
78        item.setLayoutResource(56789);
79
80        assertEquals("Title should be \"TestTitle\"", "TestTitle", item.getTitle());
81        assertEquals("Summary should be \"TestSummary\"", "TestSummary", item.getSummary());
82        assertFalse("Enabled should be false", item.isEnabled());
83        assertSame("Icon should be same as set", icon, item.getIcon());
84        assertEquals("ID should be 12345", 12345, item.getId());
85        assertEquals("Layout resource should be 56789", 56789, item.getLayoutResource());
86    }
87
88    @SmallTest
89    public void testDefaultValues() {
90        Item item = new Item();
91
92        assertNull("Default title should be null", item.getTitle());
93        assertNull("Default summary should be null", item.getSummary());
94        assertNull("Default icon should be null", item.getIcon());
95        assertTrue("Default enabled should be true", item.isEnabled());
96        assertEquals("Default ID should be 0", 0, item.getId());
97        assertEquals("Default layout resource should be R.layout.suw_items_text",
98                R.layout.suw_items_default, item.getLayoutResource());
99        assertTrue("Default visible should be true", item.isVisible());
100    }
101
102    @SmallTest
103    public void testHierarchyImplementation() {
104        Item item = new Item();
105        item.setId(12345);
106
107        assertEquals("getCount should be 1", 1, item.getCount());
108        assertSame("getItemAt should return itself", item, item.getItemAt(0));
109        assertSame("findItemById with same ID should return itself", item,
110                item.findItemById(12345));
111        assertNull("findItemById with different ID should return null", item.findItemById(34567));
112    }
113
114    @SmallTest
115    public void testVisible() {
116        Item item = new Item();
117        item.setVisible(false);
118
119        assertFalse("Item should not be visible", item.isVisible());
120        assertEquals("Item count should be 0 when not visible", 0, item.getCount());
121    }
122
123    private ViewGroup createLayout() {
124        ViewGroup root = new FrameLayout(mContext);
125
126        mTitleView = new TextView(mContext);
127        mTitleView.setId(R.id.suw_items_title);
128        root.addView(mTitleView);
129
130        mSummaryView = new TextView(mContext);
131        mSummaryView.setId(R.id.suw_items_summary);
132        root.addView(mSummaryView);
133
134        mIconContainer = new FrameLayout(mContext);
135        mIconContainer.setId(R.id.suw_items_icon_container);
136        root.addView(mIconContainer);
137
138        mIconView = new ImageView(mContext);
139        mIconView.setId(R.id.suw_items_icon);
140        mIconContainer.addView(mIconView);
141
142        return root;
143    }
144}
145