| Index: chrome/android/javatests/src/org/chromium/chrome/browser/widget/RadioButtonLayoutTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/widget/RadioButtonLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/widget/RadioButtonLayoutTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..49bd2515c287c254722145e6d5b512c23e9f3b5b
|
| --- /dev/null
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/widget/RadioButtonLayoutTest.java
|
| @@ -0,0 +1,166 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.widget;
|
| +
|
| +import android.content.Context;
|
| +import android.support.test.InstrumentationRegistry;
|
| +import android.support.test.annotation.UiThreadTest;
|
| +import android.support.test.filters.SmallTest;
|
| +import android.support.test.rule.UiThreadTestRule;
|
| +import android.view.View;
|
| +import android.view.ViewGroup.MarginLayoutParams;
|
| +import android.widget.RadioButton;
|
| +
|
| +import org.junit.Assert;
|
| +import org.junit.Before;
|
| +import org.junit.Rule;
|
| +import org.junit.Test;
|
| +import org.junit.runner.RunWith;
|
| +
|
| +import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
|
| +
|
| +import java.util.ArrayList;
|
| +import java.util.Arrays;
|
| +import java.util.List;
|
| +
|
| +/**
|
| + * Tests for {@link RadioButtonLayout}.
|
| + */
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +public class RadioButtonLayoutTest {
|
| + @Rule
|
| + public UiThreadTestRule mRule = new UiThreadTestRule();
|
| +
|
| + private Context mContext;
|
| +
|
| + @Before
|
| + public void setUp() {
|
| + mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
| + }
|
| +
|
| + @Test
|
| + @SmallTest
|
| + @UiThreadTest
|
| + public void testMargins() {
|
| + RadioButtonLayout layout = new RadioButtonLayout(mContext);
|
| +
|
| + // Add one set of options.
|
| + List<CharSequence> messages = new ArrayList<CharSequence>();
|
| + messages.add("a");
|
| + messages.add("b");
|
| + messages.add("c");
|
| + layout.addOptions(messages, null);
|
| +
|
| + // Test the margins.
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + View child = layout.getChildAt(i);
|
| + MarginLayoutParams params = (MarginLayoutParams) child.getLayoutParams();
|
| +
|
| + if (i < layout.getChildCount() - 1) {
|
| + Assert.assertNotEquals(0, params.bottomMargin);
|
| + } else {
|
| + Assert.assertEquals(0, params.bottomMargin);
|
| + }
|
| + }
|
| +
|
| + // Add more options.
|
| + List<CharSequence> moreMessages = new ArrayList<CharSequence>();
|
| + moreMessages.add("d");
|
| + moreMessages.add("e");
|
| + moreMessages.add("f");
|
| + layout.addOptions(moreMessages, null);
|
| +
|
| + // Test the margins.
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + View child = layout.getChildAt(i);
|
| + MarginLayoutParams params = (MarginLayoutParams) child.getLayoutParams();
|
| +
|
| + if (i < layout.getChildCount() - 1) {
|
| + Assert.assertNotEquals(0, params.bottomMargin);
|
| + } else {
|
| + Assert.assertEquals(0, params.bottomMargin);
|
| + }
|
| + }
|
| + }
|
| +
|
| + @Test
|
| + @SmallTest
|
| + @UiThreadTest
|
| + public void testAddOptions() {
|
| + RadioButtonLayout layout = new RadioButtonLayout(mContext);
|
| +
|
| + // Add one set of options.
|
| + List<CharSequence> messages = new ArrayList<CharSequence>();
|
| + messages.add("a");
|
| + messages.add("b");
|
| + messages.add("c");
|
| + List<String> tags = Arrays.asList("tag 1", "tag 2", "tag 3");
|
| + layout.addOptions(messages, tags);
|
| + Assert.assertEquals(3, layout.getChildCount());
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + Assert.assertEquals(messages.get(i), ((RadioButton) layout.getChildAt(i)).getText());
|
| + Assert.assertEquals(tags.get(i), ((RadioButton) layout.getChildAt(i)).getTag());
|
| + }
|
| +
|
| + // Add even more options, but without tags.
|
| + List<CharSequence> moreMessages = new ArrayList<CharSequence>();
|
| + moreMessages.add("d");
|
| + moreMessages.add("e");
|
| + moreMessages.add("f");
|
| + layout.addOptions(moreMessages, null);
|
| + Assert.assertEquals(6, layout.getChildCount());
|
| + for (int i = 0; i < 3; i++) {
|
| + Assert.assertEquals(messages.get(i), ((RadioButton) layout.getChildAt(i)).getText());
|
| + Assert.assertEquals(tags.get(i), ((RadioButton) layout.getChildAt(i)).getTag());
|
| + }
|
| + for (int i = 3; i < 6; i++) {
|
| + Assert.assertEquals(
|
| + moreMessages.get(i - 3), ((RadioButton) layout.getChildAt(i)).getText());
|
| + Assert.assertNull(((RadioButton) layout.getChildAt(i)).getTag());
|
| + }
|
| + }
|
| +
|
| + @Test
|
| + @SmallTest
|
| + @UiThreadTest
|
| + public void testSelection() {
|
| + final RadioButtonLayout layout = new RadioButtonLayout(mContext);
|
| +
|
| + // Add one set of options.
|
| + List<CharSequence> messages = new ArrayList<CharSequence>();
|
| + messages.add("a");
|
| + messages.add("b");
|
| + messages.add("c");
|
| + layout.addOptions(messages, null);
|
| + Assert.assertEquals(3, layout.getChildCount());
|
| +
|
| + // Nothing should be selected by default.
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + RadioButton child = (RadioButton) layout.getChildAt(i);
|
| + Assert.assertFalse(child.isChecked());
|
| + }
|
| +
|
| + // Select the second one.
|
| + layout.selectChildAtIndex(1);
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + RadioButton child = (RadioButton) layout.getChildAt(i);
|
| + Assert.assertEquals(i == 1, child.isChecked());
|
| + }
|
| +
|
| + // Add even more options.
|
| + List<CharSequence> moreMessages = new ArrayList<CharSequence>();
|
| + moreMessages.add("d");
|
| + moreMessages.add("e");
|
| + moreMessages.add("f");
|
| + layout.addOptions(moreMessages, null);
|
| + Assert.assertEquals(6, layout.getChildCount());
|
| +
|
| + // Second child should still be checked.
|
| + for (int i = 0; i < layout.getChildCount(); i++) {
|
| + RadioButton child = (RadioButton) layout.getChildAt(i);
|
| + Assert.assertEquals(i == 1, child.isChecked());
|
| + }
|
| + }
|
| +}
|
|
|