1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.mojo.bindings;
7 import org.chromium.mojo.TestUtils;
8 import org.chromium.mojo.system.Handle;
9 import org.chromium.mojo.system.MojoException;
10 import org.chromium.mojo.system.Pair;
12 import java.nio.ByteBuffer;
13 import java.util.ArrayList;
14 import java.util.List;
17 * Utility class for bindings tests.
19 public class BindingsTestUtils {
22 * {@link MessageReceiver} that records any message it receives.
24 public static class RecordingMessageReceiver extends SideEffectFreeCloseable
25 implements MessageReceiver {
27 public final List<Message> messages = new ArrayList<Message>();
30 * @see MessageReceiver#accept(Message)
33 public boolean accept(Message message) {
34 messages.add(message);
40 * {@link MessageReceiverWithResponder} that records any message it receives.
42 public static class RecordingMessageReceiverWithResponder extends RecordingMessageReceiver
43 implements MessageReceiverWithResponder {
45 public final List<Pair<Message, MessageReceiver>> messagesWithReceivers =
46 new ArrayList<Pair<Message, MessageReceiver>>();
49 * @see MessageReceiverWithResponder#acceptWithResponder(Message, MessageReceiver)
52 public boolean acceptWithResponder(Message message, MessageReceiver responder) {
53 messagesWithReceivers.add(Pair.create(message, responder));
59 * {@link ConnectionErrorHandler} that records any error it received.
61 public static class CapturingErrorHandler implements ConnectionErrorHandler {
63 private MojoException mLastMojoException = null;
66 * @see ConnectionErrorHandler#onConnectionError(MojoException)
69 public void onConnectionError(MojoException e) {
70 mLastMojoException = e;
74 * Returns the last recorded exception.
76 public MojoException getLastMojoException() {
77 return mLastMojoException;
83 * Creates a new valid {@link Message}. The message will have a valid header.
85 public static Message newRandomMessage(int size) {
87 ByteBuffer message = TestUtils.newRandomBuffer(size);
88 int[] headerAsInts = { 16, 2, 0, 0 };
89 for (int i = 0; i < 4; ++i) {
90 message.putInt(4 * i, headerAsInts[i]);
93 return new Message(message, new ArrayList<Handle>());