Home | History | Annotate | Download | only in common
      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 
     10 class 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 
     49 TEST_F(JSONSchemaValidatorCPPTest, Test) {
     50   RunTests();
     51 }
     52