Index: third_party/WebKit/Source/bindings/core/v8/V8ObjectBuilderTest.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8ObjectBuilderTest.cpp b/third_party/WebKit/Source/bindings/core/v8/V8ObjectBuilderTest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..247ddb2eabe0af0dc2395eeb5dc4052e2470b875 |
--- /dev/null |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8ObjectBuilderTest.cpp |
@@ -0,0 +1,139 @@ |
+// Copyright 2016 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 "bindings/core/v8/V8ObjectBuilder.h" |
+ |
+#include "bindings/core/v8/V8Binding.h" |
+#include "bindings/core/v8/V8BindingForTesting.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace blink { |
+ |
+namespace { |
+ |
+TEST(V8ObjectBuilderTest, addString) { |
+ V8TestingScope scope; |
+ { |
+ ScriptState* scriptState = scope.getScriptState(); |
+ V8ObjectBuilder builder(scriptState); |
+ |
+ WTF::String test1 = "test1"; |
+ WTF::String test2; |
+ WTF::String test3 = "test3"; |
+ WTF::String test4; |
+ WTF::String test5 = "test5"; |
+ WTF::String test6; |
+ |
+ builder.addString("test1", test1); |
+ builder.addString("test2", test2); |
+ builder.addString("test3", test3, true); |
+ builder.addString("test4", test4, true); |
+ builder.addString("test5", test5, false); |
+ builder.addString("test6", test6, false); |
+ ScriptValue jsonObject = builder.scriptValue(); |
+ EXPECT_TRUE(jsonObject.isObject()); |
+ |
+ String jsonString = v8StringToWebCoreString<String>( |
+ v8::JSON::Stringify(scope.context(), |
+ jsonObject.v8Value().As<v8::Object>()) |
+ .ToLocalChecked(), |
+ DoNotExternalize); |
+ |
+ String expected = |
+ "{\"test1\":\"test1\",\"test2\":\"\",\"test3\":\"test3\",\"test4\":" |
+ "null,\"test5\":\"test5\",\"test6\":\"\"}"; |
+ EXPECT_EQ(expected, jsonString); |
+ } |
+} |
+ |
+TEST(V8ObjectBuilderTest, addBoolean) { |
+ V8TestingScope scope; |
+ { |
+ ScriptState* scriptState = scope.getScriptState(); |
+ V8ObjectBuilder builder(scriptState); |
+ builder.addBoolean("b1", true); |
+ builder.addBoolean("b2", false); |
+ ScriptValue jsonObject = builder.scriptValue(); |
+ EXPECT_TRUE(jsonObject.isObject()); |
+ |
+ String jsonString = v8StringToWebCoreString<String>( |
+ v8::JSON::Stringify(scope.context(), |
+ jsonObject.v8Value().As<v8::Object>()) |
+ .ToLocalChecked(), |
+ DoNotExternalize); |
+ |
+ String expected = "{\"b1\":true,\"b2\":false}"; |
+ EXPECT_EQ(expected, jsonString); |
+ } |
+} |
+ |
+TEST(V8ObjectBuilderTest, addNumber) { |
+ V8TestingScope scope; |
+ { |
+ ScriptState* scriptState = scope.getScriptState(); |
+ V8ObjectBuilder builder(scriptState); |
+ builder.addNumber("n1", 123); |
+ builder.addNumber("n2", 123.456); |
+ ScriptValue jsonObject = builder.scriptValue(); |
+ EXPECT_TRUE(jsonObject.isObject()); |
+ |
+ String jsonString = v8StringToWebCoreString<String>( |
+ v8::JSON::Stringify(scope.context(), |
+ jsonObject.v8Value().As<v8::Object>()) |
+ .ToLocalChecked(), |
+ DoNotExternalize); |
+ |
+ String expected = "{\"n1\":123,\"n2\":123.456}"; |
+ EXPECT_EQ(expected, jsonString); |
+ } |
+} |
+ |
+TEST(V8ObjectBuilderTest, addNull) { |
+ V8TestingScope scope; |
+ { |
+ ScriptState* scriptState = scope.getScriptState(); |
+ V8ObjectBuilder builder(scriptState); |
+ builder.addNull("null_check"); |
+ ScriptValue jsonObject = builder.scriptValue(); |
+ EXPECT_TRUE(jsonObject.isObject()); |
+ |
+ String jsonString = v8StringToWebCoreString<String>( |
+ v8::JSON::Stringify(scope.context(), |
+ jsonObject.v8Value().As<v8::Object>()) |
+ .ToLocalChecked(), |
+ DoNotExternalize); |
+ |
+ String expected = "{\"null_check\":null}"; |
+ EXPECT_EQ(expected, jsonString); |
+ } |
+} |
+ |
+TEST(V8ObjectBuilderTest, add) { |
+ V8TestingScope scope; |
+ { |
+ ScriptState* scriptState = scope.getScriptState(); |
+ V8ObjectBuilder builder(scriptState); |
+ V8ObjectBuilder result(scriptState); |
+ builder.addNumber("n1", 123); |
+ builder.addNumber("n2", 123.456); |
+ result.add("builder", builder); |
+ ScriptValue builderJsonObject = builder.scriptValue(); |
+ ScriptValue resultJsonObject = result.scriptValue(); |
+ EXPECT_TRUE(builderJsonObject.isObject()); |
+ EXPECT_TRUE(resultJsonObject.isObject()); |
+ |
+ String jsonString = v8StringToWebCoreString<String>( |
+ v8::JSON::Stringify(scope.context(), |
+ resultJsonObject.v8Value().As<v8::Object>()) |
+ .ToLocalChecked(), |
+ DoNotExternalize); |
+ |
+ String expected = "{\"builder\":{\"n1\":123,\"n2\":123.456}}"; |
+ EXPECT_EQ(expected, jsonString); |
+ } |
+} |
+ |
+} // namespace |
+ |
+} // namespace blink |