// Copyright 2020 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 V8_CRDTP_STATUS_TEST_SUPPORT_H_
#define V8_CRDTP_STATUS_TEST_SUPPORT_H_

#include <ostream>
#include "status.h"
#include "test_platform.h"

namespace v8_crdtp {
// Supports gtest, to conveniently match Status objects and
// get useful error messages when tests fail.
// Typically used with EXPECT_THAT, e.g.
//
// EXPECT_THAT(status, StatusIs(Error::JSON_PARSER_COLON_EXPECTED, 42));
//
// EXPECT_THAT(status, StatusIsOk());

// Prints a |status|, including its generated error message, error code, and
// position. This is used by gtest for pretty printing actual vs. expected.
void PrintTo(const Status& status, std::ostream* os);

// Matches any status with |status.ok()|.
testing::Matcher<Status> StatusIsOk();

// Matches any status with |error| and |pos|.
testing::Matcher<Status> StatusIs(Error error, size_t pos);
}  // namespace v8_crdtp

#endif  // V8_CRDTP_STATUS_TEST_SUPPORT_H_
