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 |