100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam/* 200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * Copyright (C) 2016 The Android Open Source Project 300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * 400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License"); 500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * you may not use this file except in compliance with the License. 600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * You may obtain a copy of the License at 700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * 800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * http://www.apache.org/licenses/LICENSE-2.0 900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * 1000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * Unless required by applicable law or agreed to in writing, software 1100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS, 1200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * See the License for the specific language governing permissions and 1400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam * limitations under the License. 1500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam */ 1600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 1700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lampackage com.android.setupwizardlib.test; 1800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 192614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.assertEquals; 202614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.assertNull; 212614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.fail; 222614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam 232614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.InstrumentationRegistry; 242614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.filters.SmallTest; 252614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.runner.AndroidJUnit4; 2600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport android.view.ViewGroup; 2700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport android.widget.Button; 2800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport android.widget.LinearLayout; 2900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 3000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport com.android.setupwizardlib.items.ButtonBarItem; 3100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport com.android.setupwizardlib.items.ButtonItem; 3200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport com.android.setupwizardlib.items.Item; 3300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lamimport com.android.setupwizardlib.items.ItemHierarchy; 3400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 352614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.Before; 362614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.Test; 372614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.runner.RunWith; 382614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam 392614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam@RunWith(AndroidJUnit4.class) 402614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam@SmallTest 412614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lampublic class ButtonBarItemTest { 4200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 4300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam private ButtonItem mChild1; 4400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam private ButtonItem mChild2; 4500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam private ButtonItem mChild3; 4600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 472614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam @Before 482614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam public void setUp() throws Exception { 4900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild1 = new ButtonItem(); 5000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild2 = new ButtonItem(); 5100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild3 = new ButtonItem(); 5200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 5300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 542614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam @Test 5500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam public void testFindItemById() { 5600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ButtonBarItem item = new ButtonBarItem(); 5700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.setId(888); 5800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 5900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild1.setId(123); 6000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild2.setId(456); 6100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild3.setId(789); 6200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild1); 6300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild2); 6400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild3); 6500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 6600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Finding 123 should return child1", mChild1, item.findItemById(123)); 6700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Finding 456 should return child2", mChild2, item.findItemById(456)); 6800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Finding 789 should return child3", mChild3, item.findItemById(789)); 6900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 7000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Finding 888 should return ButtonBarItem itself", item, 7100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.findItemById(888)); 7200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 7300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertNull("Finding 999 should return null", item.findItemById(999)); 7400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 7500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 762614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam @Test 7700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam public void testBindEmpty() { 7800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ButtonBarItem item = new ButtonBarItem(); 7900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam final ViewGroup layout = createLayout(); 8000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.onBindView(layout); 8100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 8200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Binding empty ButtonBar should not create any children", 0, 8300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam layout.getChildCount()); 8400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 8500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 862614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam @Test 8700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam public void testBind() { 8800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ButtonBarItem item = new ButtonBarItem(); 8900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 9000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild1); 9100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild1.setText("child1"); 9200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild2); 9300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild2.setText("child2"); 9400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(mChild3); 9500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam mChild3.setText("child3"); 9600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 9700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam final ViewGroup layout = createLayout(); 9800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.onBindView(layout); 9900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 10000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Binding ButtonBar should create 3 children", 3, layout.getChildCount()); 10100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("First button should have text \"child1\"", "child1", 10200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ((Button) layout.getChildAt(0)).getText()); 10300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Second button should have text \"child2\"", "child2", 10400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ((Button) layout.getChildAt(1)).getText()); 10500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam assertEquals("Third button should have text \"child3\"", "child3", 10600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ((Button) layout.getChildAt(2)).getText()); 10700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 10800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 1092614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam @Test 11000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam public void testAddInvalidChild() { 11100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ButtonBarItem item = new ButtonBarItem(); 11200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 11300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam ItemHierarchy invalidChild = new Item(); 11400358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 11500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam try { 11600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam item.addChild(invalidChild); 11700358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam fail("Adding non ButtonItem to ButtonBarItem should throw exception"); 11800358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } catch (UnsupportedOperationException e) { 11900358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam // pass 12000358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 12100358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 12200358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam 12300358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam private ViewGroup createLayout() { 1242614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam return new LinearLayout(InstrumentationRegistry.getContext()); 12500358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam } 12600358e4d12e6c7ba0f1da1fa9ad57f87da9b3b1aMaurice Lam} 127