OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tests / tests / os / src / android / os / cts / MessageTest.java
diff --git a/cts/tests/tests/os/src/android/os/cts/MessageTest.java b/cts/tests/tests/os/src/android/os/cts/MessageTest.java
new file mode 100644 (file)
index 0000000..e5f4cf8
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ * Copyright (C) 2009 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.os.cts;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Parcel;
+import android.test.AndroidTestCase;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+
+@TestTargetClass(Message.class)
+public class MessageTest extends AndroidTestCase {
+    public static final int SLEEP_TIME = 300;
+    public static final int WHAT = 1;
+    public static final int ARG1 = 1;
+    public static final int ARG2 = 2;
+    public static final String KEY = "android";
+    public static final int VALUE = 3;
+
+    private Message mMessage;
+    private boolean mMessageHandlerCalled;
+
+    private Handler mHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            mMessageHandlerCalled = true;
+        }
+    };
+
+    private Runnable mRunnable = new Runnable() {
+        public void run() {
+        }
+    };
+
+    final Object OBJ = new Object();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mMessage = new Message();
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test constructor(s) of {@link Message}",
+        method = "Message",
+        args = {}
+    )
+    public void testConstructor() {
+        new Message();
+    }
+
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: getWhen",
+            method = "getWhen",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: getTarget",
+            method = "getTarget",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: setTarget",
+            method = "setTarget",
+            args = {android.os.Handler.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: getCallback",
+            method = "getCallback",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: describeContents",
+            method = "describeContents",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: setData",
+            method = "setData",
+            args = {Bundle.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            notes = "Test method: getData",
+            method = "getData",
+            args = {}
+        )
+    })
+    public void testAccessMessageProperties() {
+        assertEquals(0, mMessage.getWhen());
+        mMessage.setTarget(mHandler);
+        assertEquals(mHandler, mMessage.getTarget());
+
+        assertNull(mMessage.getCallback());
+        Message expected = Message.obtain(mHandler, mRunnable);
+        assertEquals(mRunnable, expected.getCallback());
+
+        Bundle bundle = mMessage.getData();
+        assertNotNull(bundle);
+        Bundle expectedBundle = new Bundle();
+        mMessage.setData(expectedBundle);
+        assertNotNull(mMessage.getData());
+        assertNotSame(bundle, mMessage.getData());
+        assertEquals(expectedBundle, mMessage.getData());
+
+        assertEquals(0, mMessage.describeContents());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {}
+    )
+    public void testObtain() {
+        Message message = Message.obtain();
+        assertNotNull(message);
+        assertEquals(0, message.what);
+        assertEquals(0, message.arg1);
+        assertEquals(0, message.arg2);
+        assertNull(message.obj);
+        assertNull(message.replyTo);
+        assertNull(message.getTarget());
+        assertNull(message.getCallback());
+        assertNull(message.peekData());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Message.class}
+    )
+    public void testObtain2() {
+        Message message = Message.obtain(mHandler, WHAT, ARG1, ARG2, OBJ);
+        Message expected = Message.obtain(message);
+
+        assertEquals(message.getTarget(), expected.getTarget());
+        assertEquals(message.what, expected.what);
+        assertEquals(message.arg1, expected.arg1);
+        assertEquals(message.arg2, expected.arg2);
+        assertEquals(message.obj, expected.obj);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class}
+    )
+    public void testObtain3() {
+        Message expected = Message.obtain(mHandler);
+        assertEquals(mHandler, expected.getTarget());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class, Runnable.class}
+    )
+    public void testObtain4() {
+        Message expected = Message.obtain(mHandler, mRunnable);
+        assertEquals(mHandler, expected.getTarget());
+        assertEquals(mRunnable, expected.getCallback());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class, int.class}
+    )
+    public void testObtain5() {
+        Message expected = Message.obtain(mHandler, WHAT);
+        assertEquals(mHandler, expected.getTarget());
+        assertEquals(WHAT, expected.what);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class, int.class, Object.class}
+    )
+    public void testObtain6() {
+        Message expected = Message.obtain(mHandler, WHAT, OBJ);
+        assertEquals(mHandler, expected.getTarget());
+        assertEquals(WHAT, expected.what);
+        assertEquals(OBJ, expected.obj);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class, int.class, int.class, int.class}
+    )
+    public void testObtain7() {
+        Message expected = Message.obtain(mHandler, WHAT, ARG1, ARG2);
+        assertEquals(mHandler, expected.getTarget());
+        assertEquals(WHAT, expected.what);
+        assertEquals(ARG1, expected.arg1);
+        assertEquals(ARG2, expected.arg2);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: obtain",
+        method = "obtain",
+        args = {Handler.class, int.class, int.class, int.class, Object.class}
+    )
+    public void testObtain8() {
+        Message expected = Message.obtain(mHandler, WHAT, ARG1, ARG2, OBJ);
+        assertEquals(mHandler, expected.getTarget());
+        assertEquals(WHAT, expected.what);
+        assertEquals(ARG1, expected.arg1);
+        assertEquals(ARG2, expected.arg2);
+        assertEquals(OBJ, expected.obj);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: toString",
+        method = "toString",
+        args = {}
+    )
+    public void testToString() {
+        assertNotNull(mMessage.toString());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: peekData",
+        method = "peekData",
+        args = {}
+    )
+    public void testPeekData() {
+        Bundle expected = new Bundle();
+        assertNull(mMessage.peekData());
+        mMessage.setData(expected);
+        assertNotNull(mMessage.peekData());
+        assertEquals(expected, mMessage.peekData());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: copyFrom",
+        method = "copyFrom",
+        args = {Message.class}
+    )
+    public void testCopyFrom() {
+        Message message = Message.obtain(mHandler, WHAT, ARG1, ARG2, OBJ);
+        Bundle bundle = new Bundle();
+        bundle.putInt(KEY, VALUE);
+        message.setData(bundle);
+        mMessage.copyFrom(message);
+        assertEquals(WHAT, mMessage.what);
+        assertEquals(ARG1, mMessage.arg1);
+        assertEquals(ARG2, mMessage.arg2);
+        assertEquals(OBJ, mMessage.obj);
+        assertEquals(VALUE, mMessage.getData().getInt(KEY));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: recycle",
+        method = "recycle",
+        args = {}
+    )
+    public void testRecycle() {
+        Message message = Message.obtain(mHandler, WHAT, ARG1, ARG2, OBJ);
+        message.recycle();
+        assertEquals(0, message.what);
+        assertEquals(0, message.arg1);
+        assertEquals(0, message.arg2);
+        assertNull(message.obj);
+        assertNull(message.replyTo);
+        assertNull(message.getTarget());
+        assertNull(message.getCallback());
+        assertNull(message.peekData());
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: writeToParcel",
+        method = "writeToParcel",
+        args = {Parcel.class, int.class}
+    )
+    public void testWriteToParcel() {
+        Message message = Message.obtain(mHandler, WHAT, ARG1, ARG2);
+        Bundle bundle = new Bundle();
+        bundle.putInt(KEY, VALUE);
+        message.setData(bundle);
+        Parcel parcel = Parcel.obtain();
+        message.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        mMessage = Message.CREATOR.createFromParcel(parcel);
+        assertNull(mMessage.getTarget());
+        assertEquals(WHAT, mMessage.what);
+        assertEquals(ARG1, mMessage.arg1);
+        assertEquals(ARG2, mMessage.arg2);
+        assertEquals(VALUE, mMessage.getData().getInt(KEY));
+
+        message = Message.obtain(mHandler, WHAT, ARG1, ARG2, OBJ);
+        try {
+            message.writeToParcel(parcel, 1);
+            fail("should throw excetion");
+        } catch (RuntimeException e) {
+            //expected
+        }
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        notes = "Test method: sendToTarget",
+        method = "sendToTarget",
+        args = {}
+    )
+    public void testSendToTarget() {
+        try {
+            mMessage.sendToTarget();
+            fail("should throw exception");
+        } catch (Exception e) {
+            //expected
+        }
+
+        Message message = Message.obtain(mHandler);
+        assertFalse(mMessageHandlerCalled);
+        message.sendToTarget();
+        sleep(SLEEP_TIME);
+        assertTrue(mMessageHandlerCalled);
+    }
+
+    private void sleep(long time) {
+        try {
+            Thread.sleep(time);
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+    }
+}