Chromium Code Reviews| Index: chrome/renderer/extensions/json_js_unittest.cc |
| diff --git a/chrome/renderer/extensions/json_js_unittest.cc b/chrome/renderer/extensions/json_js_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b90c3dcef4bd7a941a0224a1d3f3133a754473b7 |
| --- /dev/null |
| +++ b/chrome/renderer/extensions/json_js_unittest.cc |
| @@ -0,0 +1,57 @@ |
| +// Copyright 2013 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 "chrome/test/base/module_system_test.h" |
| +#include "grit/renderer_resources.h" |
| + |
| +namespace extensions { |
| +namespace { |
| + |
| +// Tests chrome/renderer/resources/json.js. |
| +class JsonJsTest : public ModuleSystemTest { |
| + virtual void SetUp() OVERRIDE { |
| + ModuleSystemTest::SetUp(); |
| + RegisterModule("json", IDR_JSON_JS); |
| + } |
| + |
| + protected: |
| + std::string requires() { |
| + return |
| + "var assert = requireNative('assert');" |
|
koz (OOO until 15th September)
2013/02/19 23:19:08
Nit: if you add \n to your lines you get line numb
not at google - send to devlin
2013/02/19 23:52:13
Done.
|
| + "var json = require('json');"; |
| + } |
| + |
| + std::string test_body() { |
| + return |
| + "var str = '{\"a\":1,\"b\":true,\"c\":[\"hi\"]}';" |
| + "var obj = json.parse(str);" |
| + "assert.AssertTrue(json.stringify(obj) === str);" |
| + "assert.AssertTrue(obj.a === 1);" |
| + "assert.AssertTrue(obj.b === true);" |
| + "assert.AssertTrue(obj.c.length === 1);" |
| + "assert.AssertTrue(obj.c[0] === 'hi');"; |
| + } |
| +}; |
| + |
| +TEST_F(JsonJsTest, NoOverrides) { |
| + ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
| + RegisterModule("test", requires() + test_body()); |
| + module_system_->Require("test"); |
| +} |
| + |
| +TEST_F(JsonJsTest, EverythingOverridden) { |
| + ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
| + std::string overrides = |
| + "function fakeToJSON() { throw '42'; }" |
| + "Object.prototype.toJSON = fakeToJSON;" |
| + "Array.prototype.toJSON = fakeToJSON;" |
| + "Number.prototype.toJSON = fakeToJSON;" |
| + "Boolean.prototype.toJSON = fakeToJSON;" |
| + "String.prototype.toJSON = fakeToJSON;"; |
| + RegisterModule("test", requires() + overrides + test_body()); |
|
koz (OOO until 15th September)
2013/02/19 23:19:08
Cool test :-)
You may want to test that after the
not at google - send to devlin
2013/02/19 23:52:13
Done.
not at google - send to devlin
2013/02/19 23:52:13
Done.
|
| + module_system_->Require("test"); |
| +} |
| + |
| +} // namespace |
| +} // namespace extensions |