1 // Copyright 2013 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 #ifndef COMPONENTS_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_UNITTEST_BASE_H_
6 #define COMPONENTS_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_UNITTEST_BASE_H_
7 
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace base {
11 class DictionaryValue;
12 class ListValue;
13 class Value;
14 }
15 
16 // Base class for unit tests for JSONSchemaValidator. There is currently only
17 // one implementation, JSONSchemaValidatorCPPTest.
18 //
19 // TODO(aa): Refactor extensions/test/data/json_schema_test.js into
20 // JSONSchemaValidatorJSTest that inherits from this.
21 class JSONSchemaValidatorTestBase : public testing::Test {
22  public:
23   JSONSchemaValidatorTestBase();
24 
25   void RunTests();
26 
27  protected:
28   virtual void ExpectValid(const std::string& test_source,
29                            base::Value* instance,
30                            base::DictionaryValue* schema,
31                            base::ListValue* types) = 0;
32 
33   virtual void ExpectNotValid(const std::string& test_source,
34                               base::Value* instance,
35                               base::DictionaryValue* schema,
36                               base::ListValue* types,
37                               const std::string& expected_error_path,
38                               const std::string& expected_error_message) = 0;
39 
40  private:
41   void TestComplex();
42   void TestStringPattern();
43   void TestEnum();
44   void TestChoices();
45   void TestExtends();
46   void TestObject();
47   void TestTypeReference();
48   void TestArrayTuple();
49   void TestArrayNonTuple();
50   void TestString();
51   void TestNumber();
52   void TestTypeClassifier();
53   void TestTypes();
54 };
55 
56 #endif  // COMPONENTS_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_UNITTEST_BASE_H_
57