| Index: mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
|
| diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ab2e871abd079ef87c66db9359f24007af00f995
|
| --- /dev/null
|
| +++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
|
| @@ -0,0 +1,110 @@
|
| +// Copyright 2014 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.mojo.bindings;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.mojo.MojoTestCase;
|
| +import org.chromium.mojo.TestUtils;
|
| +import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
|
| +import org.chromium.mojo.system.Core;
|
| +import org.chromium.mojo.system.DataPipe;
|
| +import org.chromium.mojo.system.Handle;
|
| +import org.chromium.mojo.system.MessagePipeHandle;
|
| +import org.chromium.mojo.system.MojoException;
|
| +import org.chromium.mojo.system.MojoResult;
|
| +import org.chromium.mojo.system.Pair;
|
| +import org.chromium.mojo.system.impl.CoreImpl;
|
| +
|
| +import java.nio.ByteBuffer;
|
| +import java.util.ArrayList;
|
| +import java.util.Arrays;
|
| +import java.util.List;
|
| +
|
| +/**
|
| + * Testing {@link Message}.
|
| + */
|
| +public class MessageTest extends MojoTestCase {
|
| +
|
| + private static final int DATA_SIZE = 1024;
|
| +
|
| + private ByteBuffer mData;
|
| + private Pair<MessagePipeHandle, MessagePipeHandle> mHandles;
|
| + private List<Handle> mHandlesToSend = new ArrayList<Handle>();
|
| + private List<Handle> mHandlesToClose = new ArrayList<Handle>();
|
| + private RecordingMessageReceiver mMessageReceiver;
|
| +
|
| + /**
|
| + * @see org.chromium.mojo.MojoTestCase#setUp()
|
| + */
|
| + @Override
|
| + protected void setUp() throws Exception {
|
| + super.setUp();
|
| + Core core = CoreImpl.getInstance();
|
| + mData = TestUtils.newRandomBuffer(DATA_SIZE);
|
| + mMessageReceiver = new RecordingMessageReceiver();
|
| + mHandles = core.createMessagePipe(new MessagePipeHandle.CreateOptions());
|
| + Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> datapipe = core.createDataPipe(null);
|
| + mHandlesToSend.addAll(Arrays.asList(datapipe.first, datapipe.second));
|
| + mHandlesToClose.addAll(Arrays.asList(mHandles.first, mHandles.second));
|
| + mHandlesToClose.addAll(mHandlesToSend);
|
| + }
|
| +
|
| + /**
|
| + * @see org.chromium.mojo.MojoTestCase#tearDown()
|
| + */
|
| + @Override
|
| + protected void tearDown() throws Exception {
|
| + for (Handle handle : mHandlesToClose) {
|
| + handle.close();
|
| + }
|
| + super.tearDown();
|
| + }
|
| +
|
| + /**
|
| + * Testing {@link Message#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)}
|
| + */
|
| + @SmallTest
|
| + public void testReadAndDispatchMessage() {
|
| + mHandles.first.writeMessage(mData, mHandlesToSend, MessagePipeHandle.WriteFlags.NONE);
|
| + assertEquals(MojoResult.OK,
|
| + Message.readAndDispatchMessage(mHandles.second, mMessageReceiver));
|
| + assertEquals(1, mMessageReceiver.messages.size());
|
| + Message message = mMessageReceiver.messages.get(0);
|
| + mHandlesToClose.addAll(message.handles);
|
| + assertEquals(mData, message.buffer);
|
| + assertEquals(2, message.handles.size());
|
| + for (Handle handle : message.handles) {
|
| + assertTrue(handle.isValid());
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Testing {@link Message#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)} with no
|
| + * message available.
|
| + */
|
| + @SmallTest
|
| + public void testReadAndDispatchMessageOnEmptyHandle() {
|
| + assertEquals(MojoResult.SHOULD_WAIT,
|
| + Message.readAndDispatchMessage(mHandles.second, mMessageReceiver));
|
| + assertEquals(0, mMessageReceiver.messages.size());
|
| + }
|
| +
|
| + /**
|
| + * Testing {@link Message#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)} on closed
|
| + * handle.
|
| + */
|
| + @SmallTest
|
| + public void testReadAndDispatchMessageOnClosedHandle() {
|
| + mHandles.first.close();
|
| + try {
|
| + Message.readAndDispatchMessage(mHandles.second, mMessageReceiver);
|
| + fail("MojoException should have been thrown");
|
| + } catch (MojoException expected) {
|
| + assertEquals(MojoResult.FAILED_PRECONDITION, expected.getMojoResult());
|
| + }
|
| + assertEquals(0, mMessageReceiver.messages.size());
|
| + }
|
| +}
|
|
|