// Copyright 2015 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.

#ifndef MOJO_EDK_SYSTEM_MESSAGE_IN_TRANSIT_TEST_UTILS_H_
#define MOJO_EDK_SYSTEM_MESSAGE_IN_TRANSIT_TEST_UTILS_H_

#include "base/memory/scoped_ptr.h"
#include "mojo/edk/system/message_in_transit.h"

namespace mojo {
namespace edk {
namespace test {

// Makes a test message. It will be of type
// |MessageInTransit::Type::ENDPOINT_CLIENT| and subtype
// |MessageInTransit::Subtype::ENDPOINT_CLIENT_DATA|, and contain data
// associated with |id| (so that test messages with different |id|s are
// distinguishable).
scoped_ptr<MessageInTransit> MakeTestMessage(unsigned id);

// Verifies a test message: ASSERTs that |message| is non-null, and EXPECTs that
// it looks like a message created using |MakeTestMessage(id)| (see above).
void VerifyTestMessage(const MessageInTransit* message, unsigned id);

// Checks if |message| looks like a test message created using
// |MakeTestMessage()|, in which case it returns true and sets |*id|. (Otherwise
// it returns false and leaves |*id| alone.)
bool IsTestMessage(MessageInTransit* message, unsigned* id);

}  // namespace test
}  // namespace edk
}  // namespace mojo

#endif  // MOJO_EDK_SYSTEM_MESSAGE_IN_TRANSIT_TEST_UTILS_H_
