Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index 7dd9fc7889d8e2806a763b5251f2b4d13a71b2a5..cf9522486cb051913ea84767130046f9551e8362 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -7554,9 +7554,18 @@ THREADED_TEST(AccessControlGetOwnPropertyNames) { |
} |
+static v8::Handle<v8::Array> IndexedPropertyEnumerator(const AccessorInfo&) { |
+ v8::Handle<v8::Array> result = v8::Array::New(2); |
+ result->Set(0, v8::Integer::New(7)); |
+ result->Set(1, v8::Object::New()); |
+ return result; |
+} |
+ |
+ |
static v8::Handle<v8::Array> NamedPropertyEnumerator(const AccessorInfo& info) { |
- v8::Handle<v8::Array> result = v8::Array::New(1); |
+ v8::Handle<v8::Array> result = v8::Array::New(2); |
result->Set(0, v8_str("x")); |
+ result->Set(1, v8::Object::New()); |
return result; |
} |
@@ -7565,7 +7574,10 @@ THREADED_TEST(GetOwnPropertyNamesWithInterceptor) { |
v8::HandleScope handle_scope; |
v8::Handle<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(); |
+ obj_template->Set(v8_str("7"), v8::Integer::New(7)); |
obj_template->Set(v8_str("x"), v8::Integer::New(42)); |
+ obj_template->SetIndexedPropertyHandler(NULL, NULL, NULL, NULL, |
+ IndexedPropertyEnumerator); |
obj_template->SetNamedPropertyHandler(NULL, NULL, NULL, NULL, |
NamedPropertyEnumerator); |
@@ -7573,9 +7585,17 @@ THREADED_TEST(GetOwnPropertyNamesWithInterceptor) { |
v8::Handle<v8::Object> global = context->Global(); |
global->Set(v8_str("object"), obj_template->NewInstance()); |
- v8::Handle<Value> value = |
- CompileRun("Object.getOwnPropertyNames(object).join(',')"); |
- CHECK_EQ(v8_str("x"), value); |
+ v8::Handle<v8::Value> result = |
+ CompileRun("Object.getOwnPropertyNames(object)"); |
+ CHECK(result->IsArray()); |
+ v8::Handle<v8::Array> result_array = v8::Handle<v8::Array>::Cast(result); |
+ CHECK_EQ(3, result_array->Length()); |
+ CHECK(result_array->Get(0)->IsString()); |
+ CHECK(result_array->Get(1)->IsString()); |
+ CHECK(result_array->Get(2)->IsString()); |
+ CHECK_EQ(v8_str("7"), result_array->Get(0)); |
+ CHECK_EQ(v8_str("[object Object]"), result_array->Get(1)); |
+ CHECK_EQ(v8_str("x"), result_array->Get(2)); |
} |