// Copyright 2015 The Weave Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include <weave/test/unittest_utils.h> #include <base/json/json_reader.h> #include <base/json/json_writer.h> #include <base/logging.h> namespace weave { namespace test { std::unique_ptr<base::Value> CreateValue(const std::string& json) { std::string json2(json); // Convert apostrophes to double-quotes so JSONReader can parse the string. std::replace(json2.begin(), json2.end(), '\'', '"'); int error = 0; std::string message; std::unique_ptr<base::Value> value{ base::JSONReader::ReadAndReturnError(json2, base::JSON_PARSE_RFC, &error, &message) .release()}; CHECK(value) << "Failed to load JSON: " << message << ", " << json; return value; } std::string ValueToString(const base::Value& value) { std::string json; base::JSONWriter::WriteWithOptions( value, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json); return json; } std::unique_ptr<base::DictionaryValue> CreateDictionaryValue( const std::string& json) { std::unique_ptr<base::Value> value = CreateValue(json); base::DictionaryValue* dict = nullptr; value->GetAsDictionary(&dict); CHECK(dict) << "Value is not dictionary: " << json; value.release(); return std::unique_ptr<base::DictionaryValue>(dict); } } // namespace test } // namespace weave