OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tests / tests / widget / src / android / widget / cts / TextSwitcherTest.java
diff --git a/cts/tests/tests/widget/src/android/widget/cts/TextSwitcherTest.java b/cts/tests/tests/widget/src/android/widget/cts/TextSwitcherTest.java
new file mode 100644 (file)
index 0000000..60595e0
--- /dev/null
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2008 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 android.widget.cts;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
+
+import android.content.Context;
+import android.test.InstrumentationTestCase;
+import android.view.ViewGroup;
+import android.widget.ListView;
+import android.widget.TextSwitcher;
+import android.widget.TextView;
+
+/**
+ * Test {@link TextSwitcher}.
+ */
+@TestTargetClass(TextSwitcher.class)
+public class TextSwitcherTest extends InstrumentationTestCase {
+    private Context mContext;
+
+    /**
+     * test width to be used in addView() method.
+     */
+    private static final int PARAMS_WIDTH = 200;
+    /**
+     * test height to be used in addView() method.
+     */
+    private static final int PARAMS_HEIGHT = 300;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+    }
+
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "TextSwitcher",
+            args = {android.content.Context.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "TextSwitcher",
+            args = {android.content.Context.class, android.util.AttributeSet.class}
+        )
+    })
+    public void testConstructor() {
+        new TextSwitcher(mContext);
+
+        new TextSwitcher(mContext, null);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "setText",
+        args = {java.lang.CharSequence.class}
+    )
+    public void testSetText() {
+        final String viewText1 = "Text 1";
+        final String viewText2 = "Text 2";
+        final String changedText = "Changed";
+
+        TextSwitcher textSwitcher = new TextSwitcher(mContext);
+
+        TextView tv1 = new TextView(mContext);
+        TextView tv2 = new TextView(mContext);
+        tv1.setText(viewText1);
+        tv2.setText(viewText2);
+        textSwitcher.addView(tv1, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+        textSwitcher.addView(tv2, 1, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+
+        TextView tvChild1 = (TextView) textSwitcher.getChildAt(0);
+        TextView tvChild2 = (TextView) textSwitcher.getChildAt(1);
+        assertEquals(viewText1, (tvChild1.getText().toString()));
+        assertEquals(viewText2, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+
+        // tvChild2's text is changed
+        textSwitcher.setText(changedText);
+        assertEquals(viewText1, (tvChild1.getText().toString()));
+        assertEquals(changedText, (tvChild2.getText().toString()));
+        assertSame(tv2, textSwitcher.getCurrentView());
+
+        // tvChild1's text is changed
+        textSwitcher.setText(changedText);
+        assertEquals(changedText, (tvChild1.getText().toString()));
+        assertEquals(changedText, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+
+        // tvChild2's text is changed
+        textSwitcher.setText(null);
+        assertEquals(changedText, (tvChild1.getText().toString()));
+        assertEquals("", (tvChild2.getText().toString()));
+        assertSame(tv2, textSwitcher.getCurrentView());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "setCurrentText",
+        args = {java.lang.CharSequence.class}
+    )
+    public void testSetCurrentText() {
+        final String viewText1 = "Text 1";
+        final String viewText2 = "Text 2";
+        final String changedText1 = "Changed 1";
+        final String changedText2 = "Changed 2";
+
+        TextSwitcher textSwitcher = new TextSwitcher(mContext);
+
+        TextView tv1 = new TextView(mContext);
+        TextView tv2 = new TextView(mContext);
+        tv1.setText(viewText1);
+        tv2.setText(viewText2);
+        textSwitcher.addView(tv1, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+        textSwitcher.addView(tv2, 1, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+
+        TextView tvChild1 = (TextView) textSwitcher.getChildAt(0);
+        TextView tvChild2 = (TextView) textSwitcher.getChildAt(1);
+        assertEquals(viewText1, (tvChild1.getText().toString()));
+        assertEquals(viewText2, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+
+        // tvChild1's text is changed
+        textSwitcher.setCurrentText(changedText1);
+        assertEquals(changedText1, (tvChild1.getText().toString()));
+        assertEquals(viewText2, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+
+        // tvChild1's text is changed
+        textSwitcher.setCurrentText(changedText2);
+        assertEquals(changedText2, (tvChild1.getText().toString()));
+        assertEquals(viewText2, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+
+        // tvChild1's text is changed
+        textSwitcher.setCurrentText(null);
+        assertEquals("", (tvChild1.getText().toString()));
+        assertEquals(viewText2, (tvChild2.getText().toString()));
+        assertSame(tv1, textSwitcher.getCurrentView());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "addView",
+        args = {android.view.View.class, int.class, android.view.ViewGroup.LayoutParams.class}
+    )
+    @ToBeFixed(bug = "1695243", explanation = "the javadoc for addView() is incomplete." +
+            "1. not clear what is supposed to happen if the LayoutParams is null.")
+    public void testAddView() {
+        TextSwitcher textSwitcher = new TextSwitcher(mContext);
+
+        TextView tv1 = new TextView(mContext);
+        TextView tv2 = new TextView(mContext);
+
+        textSwitcher.addView(tv1, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+        assertSame(tv1, textSwitcher.getChildAt(0));
+        assertEquals(1, textSwitcher.getChildCount());
+
+        try {
+            // tv1 already has a parent
+            textSwitcher.addView(tv1, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+            fail("Should throw IllegalStateException");
+        } catch (IllegalStateException e) {
+            // expected
+        }
+
+        try {
+            textSwitcher.addView(tv2, Integer.MAX_VALUE,
+                    new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+            fail("Should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        textSwitcher.addView(tv2, 1,
+                new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+        assertSame(tv2, textSwitcher.getChildAt(1));
+        assertEquals(2, textSwitcher.getChildCount());
+
+        TextView tv3 = new TextView(mContext);
+
+        try {
+            // textSwitcher already has 2 children.
+            textSwitcher.addView(tv3, 2, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+            fail("Should throw IllegalStateException");
+        } catch (IllegalStateException e) {
+            // expected
+        }
+
+        textSwitcher = new TextSwitcher(mContext);
+        ListView lv = new ListView(mContext);
+
+        try {
+            textSwitcher.addView(lv, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+            fail("Should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            textSwitcher.addView(null, 0, new ViewGroup.LayoutParams(PARAMS_WIDTH, PARAMS_HEIGHT));
+            fail("Should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            textSwitcher.addView(tv3, 0, null);
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+            // issue 1695243, not clear what is supposed to happen if the LayoutParams is null.
+        }
+    }
+}