chromium/base/test/protobuf_matchers.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BASE_TEST_PROTOBUF_MATCHERS_H_
#define BASE_TEST_PROTOBUF_MATCHERS_H_

#include <string>
#include <tuple>

#include "testing/gmock/include/gmock/gmock-matchers.h"

namespace base::test {

// Parses a binary proto and returns a raw TextProto, where all fields are
// unnamed. The input must be a valid serialized protobuf message.
std::string BinaryProtoToRawTextProto(const std::string& binary_message);

// Matcher that verifies two protobufs contain the same data.
MATCHER_P(EqualsProto,
          message,
          "Match a proto Message equal to the matcher's argument.") {}

// EqualsProto() implementation for 2-tuple matchers.
MATCHER(EqualsProto,
        "Matches if the tuple's proto Message arguments are equal.") {}

}  // namespace base::test

#endif  // BASE_TEST_PROTOBUF_MATCHERS_H_