15bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam/*
25bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * Copyright (C) 2015 The Android Open Source Project
35bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam *
45bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
55bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * you may not use this file except in compliance with the License.
65bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * You may obtain a copy of the License at
75bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam *
85bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
95bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam *
105bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * Unless required by applicable law or agreed to in writing, software
115bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
125bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * See the License for the specific language governing permissions and
145bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam * limitations under the License.
155bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam */
165bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam
175bf291fde3dfd64f264d525534730514a279c8fcMaurice Lampackage com.android.setupwizardlib.test;
185bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam
195bf291fde3dfd64f264d525534730514a279c8fcMaurice Lamimport android.test.AndroidTestCase;
205bf291fde3dfd64f264d525534730514a279c8fcMaurice Lamimport android.test.suitebuilder.annotation.SmallTest;
215bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam
225bf291fde3dfd64f264d525534730514a279c8fcMaurice Lamimport com.android.setupwizardlib.items.Item;
235bf291fde3dfd64f264d525534730514a279c8fcMaurice Lamimport com.android.setupwizardlib.items.ItemGroup;
245bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam
255bf291fde3dfd64f264d525534730514a279c8fcMaurice Lampublic class ItemGroupTest extends AndroidTestCase {
265bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam
27960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public static final Item CHILD_1 = new Item();
28960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public static final Item CHILD_2 = new Item();
29960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public static final Item CHILD_3 = new Item();
30960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public static final Item CHILD_4 = new Item();
31960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
32960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
33960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testGroup() {
34960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup itemGroup = new ItemGroup();
35960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_1);
36960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_2);
37960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
38960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Item at position 0 should be child1", CHILD_1, itemGroup.getItemAt(0));
39960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Item at position 1 should be child2", CHILD_2, itemGroup.getItemAt(1));
40960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertEquals("Should have 2 children", 2, itemGroup.getCount());
41960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
42960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
43960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
44960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testRemoveChild() {
45960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup itemGroup = new ItemGroup();
46960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_1);
47960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_2);
48960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
49960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.removeChild(CHILD_1);
50960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
51960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Item at position 0 should be child2", CHILD_2, itemGroup.getItemAt(0));
52960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertEquals("Should have 1 child", 1, itemGroup.getCount());
53960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
54960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
55960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
56960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testClear() {
57960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup itemGroup = new ItemGroup();
58960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_1);
59960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_2);
60960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
61960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.clear();
62960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
63960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertEquals("Should have 0 child", 0, itemGroup.getCount());
64960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
65960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
66960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
67960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testNestedGroup() {
68960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup parentGroup = new ItemGroup();
69960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup childGroup = new ItemGroup();
70960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
71960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(CHILD_1);
72960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        childGroup.addChild(CHILD_2);
73960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        childGroup.addChild(CHILD_3);
74960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(childGroup);
75960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(CHILD_4);
76960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
77960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_1.setTitle("CHILD1");
78960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_2.setTitle("CHILD2");
79960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_3.setTitle("CHILD3");
80960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_4.setTitle("CHILD4");
81960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
82960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 0 should be child 1", CHILD_1, parentGroup.getItemAt(0));
83960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 1 should be child 2", CHILD_2, parentGroup.getItemAt(1));
84960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 2 should be child 3", CHILD_3, parentGroup.getItemAt(2));
85960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 3 should be child 4", CHILD_4, parentGroup.getItemAt(3));
86960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
87960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
885bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam    @SmallTest
89960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testEmptyChildGroup() {
90960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup parentGroup = new ItemGroup();
91960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup childGroup = new ItemGroup();
92960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
93960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(CHILD_1);
94960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(childGroup);
95960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        parentGroup.addChild(CHILD_2);
96960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
97960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 0 should be child 1", CHILD_1, parentGroup.getItemAt(0));
98960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Position 1 should be child 2", CHILD_2, parentGroup.getItemAt(1));
99960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
100960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
101960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
102960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testFindItemById() {
103960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup itemGroup = new ItemGroup();
104960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_1.setId(12345);
105960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_2.setId(23456);
106960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
107960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_1);
108960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_2);
109960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
110960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertSame("Find item 23456 should return child 2", CHILD_2, itemGroup.findItemById(23456));
111960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    }
112960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
113960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    @SmallTest
114960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam    public void testFindItemByIdNotFound() {
115960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        ItemGroup itemGroup = new ItemGroup();
116960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_1.setId(12345);
117960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        CHILD_2.setId(23456);
118960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
119960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_1);
120960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        itemGroup.addChild(CHILD_2);
121960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam
122960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam        assertNull("ID not found should return null", itemGroup.findItemById(56789));
1235bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam    }
1245bf291fde3dfd64f264d525534730514a279c8fcMaurice Lam}
125