Home | History | Annotate | Download | only in test
      1 // Copyright 2015 The Weave Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <weave/test/unittest_utils.h>
      6 
      7 #include <base/json/json_reader.h>
      8 #include <base/json/json_writer.h>
      9 #include <base/logging.h>
     10 
     11 namespace weave {
     12 namespace test {
     13 
     14 std::unique_ptr<base::Value> CreateValue(const std::string& json) {
     15   std::string json2(json);
     16   // Convert apostrophes to double-quotes so JSONReader can parse the string.
     17   std::replace(json2.begin(), json2.end(), '\'', '"');
     18   int error = 0;
     19   std::string message;
     20   std::unique_ptr<base::Value> value{
     21       base::JSONReader::ReadAndReturnError(json2, base::JSON_PARSE_RFC, &error,
     22                                            &message)
     23           .release()};
     24   CHECK(value) << "Failed to load JSON: " << message << ", " << json;
     25   return value;
     26 }
     27 
     28 std::string ValueToString(const base::Value& value) {
     29   std::string json;
     30   base::JSONWriter::WriteWithOptions(
     31       value, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
     32   return json;
     33 }
     34 
     35 std::unique_ptr<base::DictionaryValue> CreateDictionaryValue(
     36     const std::string& json) {
     37   std::unique_ptr<base::Value> value = CreateValue(json);
     38   base::DictionaryValue* dict = nullptr;
     39   value->GetAsDictionary(&dict);
     40   CHECK(dict) << "Value is not dictionary: " << json;
     41   value.release();
     42   return std::unique_ptr<base::DictionaryValue>(dict);
     43 }
     44 
     45 }  // namespace test
     46 }  // namespace weave
     47