123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // Copyright (c) 2012 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 BASE_TEST_VALUES_TEST_UTIL_H_
- #define BASE_TEST_VALUES_TEST_UTIL_H_
- #include <iosfwd>
- #include <memory>
- #include <string>
- #include "base/strings/string_piece.h"
- #include "base/values.h"
- #include "testing/gmock/include/gmock/gmock-matchers.h"
- namespace base {
- // All the functions below expect that the value for the given key in
- // the given dictionary equals the given expected value.
- void ExpectDictBooleanValue(bool expected_value,
- const DictionaryValue& value,
- const std::string& key);
- void ExpectDictDictionaryValue(const DictionaryValue& expected_value,
- const DictionaryValue& value,
- const std::string& key);
- void ExpectDictIntegerValue(int expected_value,
- const DictionaryValue& value,
- const std::string& key);
- void ExpectDictListValue(const ListValue& expected_value,
- const DictionaryValue& value,
- const std::string& key);
- void ExpectDictStringValue(const std::string& expected_value,
- const DictionaryValue& value,
- const std::string& key);
- void ExpectStringValue(const std::string& expected_str, const Value& actual);
- namespace test {
- // A custom GMock matcher which matches if a base::Value is a dictionary which
- // has a key |key| that is equal to |value|.
- testing::Matcher<const base::Value&> DictionaryHasValue(
- const std::string& key,
- const base::Value& expected_value);
- // A custom GMock matcher which matches if a base::Value is a dictionary which
- // contains all key/value pairs from |template_value|.
- testing::Matcher<const base::Value&> DictionaryHasValues(
- const base::Value& template_value);
- // A custom GMock matcher. For details, see
- // https://github.com/google/googletest/blob/644319b9f06f6ca9bf69fe791be399061044bc3d/googlemock/docs/CookBook.md#writing-new-polymorphic-matchers
- class IsJsonMatcher {
- public:
- explicit IsJsonMatcher(base::StringPiece json);
- explicit IsJsonMatcher(const base::Value& value);
- IsJsonMatcher(const IsJsonMatcher& other);
- ~IsJsonMatcher();
- bool MatchAndExplain(base::StringPiece json,
- testing::MatchResultListener* listener) const;
- bool MatchAndExplain(const base::Value& value,
- testing::MatchResultListener* listener) const;
- void DescribeTo(std::ostream* os) const;
- void DescribeNegationTo(std::ostream* os) const;
- private:
- IsJsonMatcher& operator=(const IsJsonMatcher& other) = delete;
- base::Value expected_value_;
- };
- // Creates a GMock matcher for testing equivalence of JSON values represented as
- // either JSON strings or base::Value objects. Parsing of the expected value
- // uses ParseJson(), which allows trailing commas for convenience. Parsing of
- // the actual value follows the JSON spec strictly.
- //
- // Although it possible to use this matcher when the actual and expected values
- // are both base::Value objects, there is no advantage in that case to using
- // this matcher in place of GMock's normal equality semantics.
- template <typename T>
- inline testing::PolymorphicMatcher<IsJsonMatcher> IsJson(const T& value) {
- return testing::MakePolymorphicMatcher(IsJsonMatcher(value));
- }
- // Parses |json| as JSON, allowing trailing commas, and returns the resulting
- // value. If |json| fails to parse, causes an EXPECT failure and returns the
- // Null Value.
- Value ParseJson(StringPiece json);
- // DEPRECATED.
- // Parses |json| as JSON, allowing trailing commas, and returns the
- // resulting value. If the json fails to parse, causes an EXPECT
- // failure and returns the Null Value (but never a NULL pointer).
- std::unique_ptr<Value> ParseJsonDeprecated(StringPiece json);
- } // namespace test
- } // namespace base
- #endif // BASE_TEST_VALUES_TEST_UTIL_H_
|