| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.setupwizardlib.test; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNull; |
| import static org.junit.Assert.fail; |
| |
| import android.support.test.InstrumentationRegistry; |
| import android.support.test.filters.SmallTest; |
| import android.support.test.runner.AndroidJUnit4; |
| import android.view.ViewGroup; |
| import android.widget.Button; |
| import android.widget.LinearLayout; |
| |
| import com.android.setupwizardlib.items.ButtonBarItem; |
| import com.android.setupwizardlib.items.ButtonItem; |
| import com.android.setupwizardlib.items.Item; |
| import com.android.setupwizardlib.items.ItemHierarchy; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| @RunWith(AndroidJUnit4.class) |
| @SmallTest |
| public class ButtonBarItemTest { |
| |
| private ButtonItem mChild1; |
| private ButtonItem mChild2; |
| private ButtonItem mChild3; |
| |
| @Before |
| public void setUp() throws Exception { |
| mChild1 = new ButtonItem(); |
| mChild2 = new ButtonItem(); |
| mChild3 = new ButtonItem(); |
| } |
| |
| @Test |
| public void testFindItemById() { |
| ButtonBarItem item = new ButtonBarItem(); |
| item.setId(888); |
| |
| mChild1.setId(123); |
| mChild2.setId(456); |
| mChild3.setId(789); |
| item.addChild(mChild1); |
| item.addChild(mChild2); |
| item.addChild(mChild3); |
| |
| assertEquals("Finding 123 should return child1", mChild1, item.findItemById(123)); |
| assertEquals("Finding 456 should return child2", mChild2, item.findItemById(456)); |
| assertEquals("Finding 789 should return child3", mChild3, item.findItemById(789)); |
| |
| assertEquals("Finding 888 should return ButtonBarItem itself", item, |
| item.findItemById(888)); |
| |
| assertNull("Finding 999 should return null", item.findItemById(999)); |
| } |
| |
| @Test |
| public void testBindEmpty() { |
| ButtonBarItem item = new ButtonBarItem(); |
| final ViewGroup layout = createLayout(); |
| item.onBindView(layout); |
| |
| assertEquals("Binding empty ButtonBar should not create any children", 0, |
| layout.getChildCount()); |
| } |
| |
| @Test |
| public void testBind() { |
| ButtonBarItem item = new ButtonBarItem(); |
| |
| item.addChild(mChild1); |
| mChild1.setText("child1"); |
| item.addChild(mChild2); |
| mChild2.setText("child2"); |
| item.addChild(mChild3); |
| mChild3.setText("child3"); |
| |
| final ViewGroup layout = createLayout(); |
| item.onBindView(layout); |
| |
| assertEquals("Binding ButtonBar should create 3 children", 3, layout.getChildCount()); |
| assertEquals("First button should have text \"child1\"", "child1", |
| ((Button) layout.getChildAt(0)).getText()); |
| assertEquals("Second button should have text \"child2\"", "child2", |
| ((Button) layout.getChildAt(1)).getText()); |
| assertEquals("Third button should have text \"child3\"", "child3", |
| ((Button) layout.getChildAt(2)).getText()); |
| } |
| |
| @Test |
| public void testAddInvalidChild() { |
| ButtonBarItem item = new ButtonBarItem(); |
| |
| ItemHierarchy invalidChild = new Item(); |
| |
| try { |
| item.addChild(invalidChild); |
| fail("Adding non ButtonItem to ButtonBarItem should throw exception"); |
| } catch (UnsupportedOperationException e) { |
| // pass |
| } |
| } |
| |
| private ViewGroup createLayout() { |
| return new LinearLayout(InstrumentationRegistry.getContext()); |
| } |
| } |