17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "tools/json_schema_compiler/test/test_util.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <string>
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/json/json_reader.h"
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/logging.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace json_schema_compiler {
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace test_util {
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::Value> ReadJson(const base::StringPiece& json) {
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int error_code;
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  std::string error_msg;
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::Value> result(base::JSONReader::ReadAndReturnError(
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      json,
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      base::JSON_ALLOW_TRAILING_COMMAS,
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      &error_code,
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      &error_msg));
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // CHECK not ASSERT since passing invalid |json| is a test error.
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CHECK(result) << error_msg;
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return result.Pass();
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::ListValue> List(base::Value* a) {
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::ListValue> list(new base::ListValue());
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  list->Append(a);
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return list.Pass();
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::ListValue> List(base::Value* a, base::Value* b) {
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::ListValue> list = List(a);
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  list->Append(b);
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return list.Pass();
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::ListValue> List(base::Value* a,
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                 base::Value* b,
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                 base::Value* c) {
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::ListValue> list = List(a, b);
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  list->Append(c);
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return list.Pass();
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::DictionaryValue> Dictionary(
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& ak, base::Value* av) {
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  dict->SetWithoutPathExpansion(ak, av);
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return dict.Pass();
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::DictionaryValue> Dictionary(
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& ak, base::Value* av,
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& bk, base::Value* bv) {
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::DictionaryValue> dict = Dictionary(ak, av);
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  dict->SetWithoutPathExpansion(bk, bv);
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return dict.Pass();
587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochscoped_ptr<base::DictionaryValue> Dictionary(
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& ak, base::Value* av,
617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& bk, base::Value* bv,
627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const std::string& ck, base::Value* cv) {
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<base::DictionaryValue> dict = Dictionary(ak, av, bk, bv);
647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  dict->SetWithoutPathExpansion(ck, cv);
657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return dict.Pass();
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace test_util
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace json_schema_compiler
70