Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Unified Diff: Source/bindings/core/v8/V8BindingTest.cpp

Issue 440243003: Add NativeValueTraits for ScriptValue to V8Bindings. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« Source/bindings/core/v8/V8Binding.h ('K') | « Source/bindings/core/v8/V8Binding.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/v8/V8BindingTest.cpp
diff --git a/Source/bindings/core/v8/V8BindingTest.cpp b/Source/bindings/core/v8/V8BindingTest.cpp
index ebefed491b3fa09595c193216b8a72344663ac5d..37392cb4a5641a74c3e3e338d1e86b648e56aba5 100644
--- a/Source/bindings/core/v8/V8BindingTest.cpp
+++ b/Source/bindings/core/v8/V8BindingTest.cpp
@@ -5,6 +5,7 @@
#include "config.h"
#include "bindings/core/v8/V8Binding.h"
+#include "bindings/core/v8/ExceptionState.h"
#include "core/testing/GarbageCollectedScriptWrappable.h"
#include "core/testing/RefCountedScriptWrappable.h"
#include "platform/heap/Heap.h"
@@ -297,6 +298,67 @@ TEST_F(V8ValueTraitsTest, v8Value)
CHECK_TOV8VALUE("5678", handleValue);
}
+TEST_F(V8ValueTraitsTest, toNativeArray)
+{
+ {
+ v8::Handle<v8::Array> v8StringArray = v8::Array::New(m_scope.isolate(), 2);
+ v8StringArray->Set(toV8Value(0), toV8Value("Hello, World!"));
+ v8StringArray->Set(toV8Value(1), toV8Value("Hi, Mom!"));
+
+ Vector<String> stringVector = toNativeArray<String>(v8StringArray, 0, m_scope.isolate());
+ EXPECT_EQ(2U, stringVector.size());
+ EXPECT_EQ("Hello, World!", stringVector[0]);
+ EXPECT_EQ("Hi, Mom!", stringVector[1]);
+ }
+ {
+ v8::Handle<v8::Array> v8UnsignedArray = v8::Array::New(m_scope.isolate(), 3);
+ v8UnsignedArray->Set(toV8Value(0), toV8Value(42));
+ v8UnsignedArray->Set(toV8Value(1), toV8Value(1729));
+ v8UnsignedArray->Set(toV8Value(2), toV8Value(31773));
+
+ Vector<unsigned> unsignedVector = toNativeArray<unsigned>(v8UnsignedArray, 0, m_scope.isolate());
+ EXPECT_EQ(3U, unsignedVector.size());
+ EXPECT_EQ(42U, unsignedVector[0]);
+ EXPECT_EQ(1729U, unsignedVector[1]);
+ EXPECT_EQ(31773U, unsignedVector[2]);
+ }
+ {
+ const double doublePi = 3.141592653589793238;
+ const float floatPi = doublePi;
+ v8::Handle<v8::Array> v8RealArray = v8::Array::New(m_scope.isolate(), 1);
+ v8RealArray->Set(toV8Value(0), toV8Value(doublePi));
+
+ Vector<double> doubleVector = toNativeArray<double>(v8RealArray, 0, m_scope.isolate());
+ EXPECT_EQ(1U, doubleVector.size());
+ EXPECT_EQ(doublePi, doubleVector[0]);
+
+ Vector<float> floatVector = toNativeArray<float>(v8RealArray, 0, m_scope.isolate());
+ EXPECT_EQ(1U, floatVector.size());
+ EXPECT_EQ(floatPi, floatVector[0]);
+ }
+ {
+ v8::Handle<v8::Array> v8Array = v8::Array::New(m_scope.isolate(), 3);
+ v8Array->Set(toV8Value(0), toV8Value("Vini, vidi, vici."));
+ v8Array->Set(toV8Value(1), toV8Value(65535));
+ v8Array->Set(toV8Value(2), toV8Value(0.125));
+
+ Vector<v8::Handle<v8::Value> > v8HandleVector = toNativeArray<v8::Handle<v8::Value> >(v8Array, 0, m_scope.isolate());
+ EXPECT_EQ(3U, v8HandleVector.size());
+ NonThrowableExceptionState exceptionState;
+ EXPECT_EQ("Vini, vidi, vici.", toScalarValueString(v8HandleVector[0], exceptionState));
+ EXPECT_EQ(65535U, toUInt32(v8HandleVector[1]));
+ EXPECT_EQ(0.125, toFloat(v8HandleVector[2]));
+
+ Vector<ScriptValue> scriptValueVector = toNativeArray<ScriptValue>(v8Array, 0, m_scope.isolate());
+ EXPECT_EQ(3U, scriptValueVector.size());
+ String reportOnZela;
+ EXPECT_TRUE(scriptValueVector[0].toString(reportOnZela));
+ EXPECT_EQ("Vini, vidi, vici.", reportOnZela);
+ EXPECT_EQ(65535U, toUInt32(scriptValueVector[1].v8Value()));
+ EXPECT_EQ(0.125, toFloat(scriptValueVector[2].v8Value()));
+ }
+}
+
} // namespace
} // namespace blink
« Source/bindings/core/v8/V8Binding.h ('K') | « Source/bindings/core/v8/V8Binding.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698