blob: fa93d376cb392edb6eaee778adb015989a684fd5 [file] [log] [blame]
// 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 org.chromium.mojo.TestUtils;
import org.chromium.mojo.system.Handle;
import org.chromium.mojo.system.MojoException;
import org.chromium.mojo.system.Pair;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
/**
* Utility class for bindings tests.
*/
public class BindingsTestUtils {
/**
* {@link MessageReceiver} that records any message it receives.
*/
public static class RecordingMessageReceiver implements MessageReceiver {
public final List<MessageWithHeader> messages = new ArrayList<MessageWithHeader>();
/**
* @see MessageReceiver#accept(MessageWithHeader)
*/
@Override
public boolean accept(MessageWithHeader message) {
messages.add(message);
return true;
}
}
/**
* {@link MessageReceiverWithResponder} that records any message it receives.
*/
public static class RecordingMessageReceiverWithResponder extends RecordingMessageReceiver
implements MessageReceiverWithResponder {
public final List<Pair<MessageWithHeader, MessageReceiver>> messagesWithReceivers =
new ArrayList<Pair<MessageWithHeader, MessageReceiver>>();
/**
* @see MessageReceiverWithResponder#acceptWithResponder(MessageWithHeader,
* MessageReceiver)
*/
@Override
public boolean acceptWithResponder(MessageWithHeader message, MessageReceiver responder) {
messagesWithReceivers.add(Pair.create(message, responder));
return true;
}
}
/**
* {@link ConnectionErrorHandler} that records any error it received.
*/
public static class CapturingErrorHandler implements ConnectionErrorHandler {
public MojoException exception = null;
/**
* @see ConnectionErrorHandler#onConnectionError(MojoException)
*/
@Override
public void onConnectionError(MojoException e) {
exception = e;
}
}
/**
* Creates a new valid {@link MessageWithHeader}.
*/
public static MessageWithHeader newRandomMessageWithHeader(int size) {
assert size > 16;
ByteBuffer message = TestUtils.newRandomBuffer(size);
int[] headerAsInts = { 16, 2, 0, 0 };
for (int i = 0; i < 4; ++i) {
message.putInt(4 * i, headerAsInts[i]);
}
message.position(0);
return new MessageWithHeader(new Message(message, new ArrayList<Handle>()));
}
}