// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/file_util.h" #include "base/path_service.h" #include "base/string_util.h" #include "chrome/common/chrome_paths.h" #include "chrome/test/base/v8_unit_test.h" #include "grit/renderer_resources.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/layout.h" #include "ui/base/resource/resource_bundle.h" static const char kJsonSchema[] = "json_schema.js"; static const char kJsonSchemaTest[] = "json_schema_test.js"; namespace extensions { class JsonSchemaTest : public V8UnitTest { public: JsonSchemaTest() {} virtual void SetUp() { V8UnitTest::SetUp(); // Add the json schema code to the context. std::string code = ResourceBundle::GetSharedInstance().GetRawDataResource( IDR_JSON_SCHEMA_JS, ui::SCALE_FACTOR_NONE).as_string(); // json_schema.js expects to have requireNative() defined. ExecuteScriptInContext( "function requireNative(id) {" " return {" " GetChromeHidden: function() { return {}; }," " };" "}", "test-code"); ExecuteScriptInContext(code, kJsonSchema); // Add the test functions to the context. FilePath test_js_file_path; ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_js_file_path)); test_js_file_path = test_js_file_path.AppendASCII("extensions"); test_js_file_path = test_js_file_path.AppendASCII(kJsonSchemaTest); std::string test_js; ASSERT_TRUE(file_util::ReadFileToString(test_js_file_path, &test_js)); ExecuteScriptInContext(test_js, kJsonSchemaTest); } }; TEST_F(JsonSchemaTest, TestFormatError) { TestFunction("testFormatError"); } TEST_F(JsonSchemaTest, TestComplex) { TestFunction("testComplex"); } TEST_F(JsonSchemaTest, TestEnum) { TestFunction("testEnum"); } TEST_F(JsonSchemaTest, TestExtends) { TestFunction("testExtends"); } TEST_F(JsonSchemaTest, TestObject) { TestFunction("testObject"); } TEST_F(JsonSchemaTest, TestArrayTuple) { TestFunction("testArrayTuple"); } TEST_F(JsonSchemaTest, TestArrayNonTuple) { TestFunction("testArrayNonTuple"); } TEST_F(JsonSchemaTest, TestString) { TestFunction("testString"); } TEST_F(JsonSchemaTest, TestNumber) { TestFunction("testNumber"); } TEST_F(JsonSchemaTest, TestIntegerBounds) { TestFunction("testIntegerBounds"); } TEST_F(JsonSchemaTest, TestType) { TestFunction("testType"); } TEST_F(JsonSchemaTest, TestTypeReference) { TestFunction("testTypeReference"); } TEST_F(JsonSchemaTest, TestGetAllTypesForSchema) { TestFunction("testGetAllTypesForSchema"); } TEST_F(JsonSchemaTest, TestIsValidSchemaType) { TestFunction("testIsValidSchemaType"); } TEST_F(JsonSchemaTest, TestCheckSchemaOverlap) { TestFunction("testCheckSchemaOverlap"); } } // namespace extensions