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

Unified Diff: test/cctest/test-api.cc

Issue 2670833008: Expose more %ArrayPrototype% functions to the public API. (Closed)
Patch Set: Rebased patch Created 3 years, 10 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:
Download patch
« no previous file with comments | « src/js/array.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 55b33da2db7e3dc09740e9d87c3f8a9700b55c62..9bab2e1cc463ee99329379c34192d75f834def07 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -25899,8 +25899,62 @@ TEST(AccessCheckedToStringTag) {
CHECK_EQ(0, strcmp(*result_denied, "[object Object]"));
}
+TEST(ObjectTemplateArrayProtoIntrinsics) {
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(isolate);
+ LocalContext env;
+
+ Local<ObjectTemplate> object_template = v8::ObjectTemplate::New(isolate);
+ object_template->SetIntrinsicDataProperty(v8_str("prop_entries"),
+ v8::kArrayProto_entries);
+ object_template->SetIntrinsicDataProperty(v8_str("prop_forEach"),
+ v8::kArrayProto_forEach);
+ object_template->SetIntrinsicDataProperty(v8_str("prop_keys"),
+ v8::kArrayProto_keys);
+ object_template->SetIntrinsicDataProperty(v8_str("prop_values"),
+ v8::kArrayProto_values);
+ Local<Object> object =
+ object_template->NewInstance(env.local()).ToLocalChecked();
+ CHECK(env->Global()->Set(env.local(), v8_str("obj1"), object).FromJust());
+
+ const struct {
+ const char* const object_property_name;
+ const char* const array_property_name;
+ } intrinsics_comparisons[] = {
+ {"prop_entries", "Array.prototype.entries"},
+ {"prop_forEach", "Array.prototype.forEach"},
+ {"prop_keys", "Array.prototype.keys"},
+ {"prop_values", "Array.prototype[Symbol.iterator]"},
+ };
+
+ for (unsigned i = 0; i < arraysize(intrinsics_comparisons); i++) {
+ i::ScopedVector<char> test_string(64);
+
+ i::SNPrintF(test_string, "typeof obj1.%s",
+ intrinsics_comparisons[i].object_property_name);
+ ExpectString(test_string.start(), "function");
+
+ i::SNPrintF(test_string, "obj1.%s === %s",
+ intrinsics_comparisons[i].object_property_name,
+ intrinsics_comparisons[i].array_property_name);
+ ExpectTrue(test_string.start());
+
+ i::SNPrintF(test_string, "obj1.%s = 42",
+ intrinsics_comparisons[i].object_property_name);
+ CompileRun(test_string.start());
+
+ i::SNPrintF(test_string, "obj1.%s === %s",
+ intrinsics_comparisons[i].object_property_name,
+ intrinsics_comparisons[i].array_property_name);
+ ExpectFalse(test_string.start());
+
+ i::SNPrintF(test_string, "typeof obj1.%s",
+ intrinsics_comparisons[i].object_property_name);
+ ExpectString(test_string.start(), "number");
+ }
+}
-TEST(ObjectTemplateIntrinsics) {
+TEST(ObjectTemplatePerContextIntrinsics) {
v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope scope(isolate);
LocalContext env;
« no previous file with comments | « src/js/array.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698