1// Copyright (c) 2010 The Chromium 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 "base/values.h" 6#include "chrome/common/json_schema_validator.h" 7#include "chrome/common/json_schema_validator_unittest_base.h" 8#include "testing/gtest/include/gtest/gtest.h" 9 10class JSONSchemaValidatorCPPTest : public JSONSchemaValidatorTestBase { 11 public: 12 JSONSchemaValidatorCPPTest() 13 : JSONSchemaValidatorTestBase(JSONSchemaValidatorTestBase::CPP) { 14 } 15 16 protected: 17 virtual void ExpectValid(const std::string& test_source, 18 Value* instance, DictionaryValue* schema, 19 ListValue* types) { 20 JSONSchemaValidator validator(schema, types); 21 if (validator.Validate(instance)) 22 return; 23 24 for (size_t i = 0; i < validator.errors().size(); ++i) { 25 ADD_FAILURE() << test_source << ": " 26 << validator.errors()[i].path << ": " 27 << validator.errors()[i].message; 28 } 29 } 30 31 virtual void ExpectNotValid(const std::string& test_source, 32 Value* instance, DictionaryValue* schema, 33 ListValue* types, 34 const std::string& expected_error_path, 35 const std::string& expected_error_message) { 36 JSONSchemaValidator validator(schema, types); 37 if (validator.Validate(instance)) { 38 ADD_FAILURE() << test_source; 39 return; 40 } 41 42 ASSERT_EQ(1u, validator.errors().size()) << test_source; 43 EXPECT_EQ(expected_error_path, validator.errors()[0].path) << test_source; 44 EXPECT_EQ(expected_error_message, validator.errors()[0].message) 45 << test_source; 46 } 47}; 48 49TEST_F(JSONSchemaValidatorCPPTest, Test) { 50 RunTests(); 51} 52