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