90 lines
3.1 KiB
C++
90 lines
3.1 KiB
C++
|
|
// Copyright 2021 The Chromium Authors
|
||
|
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
|
// found in the LICENSE file.
|
||
|
|
|
||
|
|
#include "net/dns/host_resolver_results_test_util.h"
|
||
|
|
|
||
|
|
#include <ostream>
|
||
|
|
#include <utility>
|
||
|
|
#include <vector>
|
||
|
|
|
||
|
|
#include "net/base/connection_endpoint_metadata.h"
|
||
|
|
#include "net/base/ip_endpoint.h"
|
||
|
|
#include "net/dns/public/host_resolver_results.h"
|
||
|
|
#include "testing/gmock/include/gmock/gmock.h"
|
||
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
||
|
|
|
||
|
|
namespace net {
|
||
|
|
|
||
|
|
namespace {
|
||
|
|
|
||
|
|
class EndpointResultMatcher
|
||
|
|
: public testing::MatcherInterface<const HostResolverEndpointResult&> {
|
||
|
|
public:
|
||
|
|
EndpointResultMatcher(
|
||
|
|
testing::Matcher<std::vector<IPEndPoint>> ip_endpoints_matcher,
|
||
|
|
testing::Matcher<const ConnectionEndpointMetadata&> metadata_matcher)
|
||
|
|
: ip_endpoints_matcher_(std::move(ip_endpoints_matcher)),
|
||
|
|
metadata_matcher_(std::move(metadata_matcher)) {}
|
||
|
|
|
||
|
|
~EndpointResultMatcher() override = default;
|
||
|
|
|
||
|
|
EndpointResultMatcher(const EndpointResultMatcher&) = default;
|
||
|
|
EndpointResultMatcher& operator=(const EndpointResultMatcher&) = default;
|
||
|
|
EndpointResultMatcher(EndpointResultMatcher&&) = default;
|
||
|
|
EndpointResultMatcher& operator=(EndpointResultMatcher&&) = default;
|
||
|
|
|
||
|
|
bool MatchAndExplain(
|
||
|
|
const HostResolverEndpointResult& endpoint,
|
||
|
|
testing::MatchResultListener* result_listener) const override {
|
||
|
|
return ExplainMatchResult(
|
||
|
|
testing::Field("ip_endpoints",
|
||
|
|
&HostResolverEndpointResult::ip_endpoints,
|
||
|
|
ip_endpoints_matcher_),
|
||
|
|
endpoint, result_listener) &&
|
||
|
|
ExplainMatchResult(
|
||
|
|
testing::Field("metadata", &HostResolverEndpointResult::metadata,
|
||
|
|
metadata_matcher_),
|
||
|
|
endpoint, result_listener);
|
||
|
|
}
|
||
|
|
|
||
|
|
void DescribeTo(std::ostream* os) const override {
|
||
|
|
*os << "matches ";
|
||
|
|
Describe(*os);
|
||
|
|
}
|
||
|
|
|
||
|
|
void DescribeNegationTo(std::ostream* os) const override {
|
||
|
|
*os << "does not match ";
|
||
|
|
Describe(*os);
|
||
|
|
}
|
||
|
|
|
||
|
|
private:
|
||
|
|
void Describe(std::ostream& os) const {
|
||
|
|
os << "HostResolverEndpointResult {\nip_endpoints: "
|
||
|
|
<< testing::PrintToString(ip_endpoints_matcher_)
|
||
|
|
<< "\nmetadata: " << testing::PrintToString(metadata_matcher_) << "\n}";
|
||
|
|
}
|
||
|
|
|
||
|
|
testing::Matcher<std::vector<IPEndPoint>> ip_endpoints_matcher_;
|
||
|
|
testing::Matcher<const ConnectionEndpointMetadata&> metadata_matcher_;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace
|
||
|
|
|
||
|
|
testing::Matcher<const HostResolverEndpointResult&> ExpectEndpointResult(
|
||
|
|
testing::Matcher<std::vector<IPEndPoint>> ip_endpoints_matcher,
|
||
|
|
testing::Matcher<const ConnectionEndpointMetadata&> metadata_matcher) {
|
||
|
|
return testing::MakeMatcher(new EndpointResultMatcher(
|
||
|
|
std::move(ip_endpoints_matcher), std::move(metadata_matcher)));
|
||
|
|
}
|
||
|
|
|
||
|
|
std::ostream& operator<<(std::ostream& os,
|
||
|
|
const HostResolverEndpointResult& endpoint_result) {
|
||
|
|
return os << "HostResolverEndpointResult {\nip_endpoints: "
|
||
|
|
<< testing::PrintToString(endpoint_result.ip_endpoints)
|
||
|
|
<< "\nmetadata: "
|
||
|
|
<< testing::PrintToString(endpoint_result.metadata) << "\n}";
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace net
|