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

Side by Side Diff: test/cctest/test-api.cc

Issue 12494012: new style of property/function callbacks (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« include/v8.h ('K') | « include/v8.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4113 matching lines...) Expand 10 before | Expand all | Expand 10 after
4124 CHECK_EQ(v8_num(4), xValue); 4124 CHECK_EQ(v8_num(4), xValue);
4125 xValue.Dispose(context->GetIsolate()); 4125 xValue.Dispose(context->GetIsolate());
4126 xValue = v8::Persistent<Value>(); 4126 xValue = v8::Persistent<Value>();
4127 } 4127 }
4128 } 4128 }
4129 4129
4130 4130
4131 THREADED_TEST(NoAccessors) { 4131 THREADED_TEST(NoAccessors) {
4132 v8::HandleScope scope(v8::Isolate::GetCurrent()); 4132 v8::HandleScope scope(v8::Isolate::GetCurrent());
4133 Local<ObjectTemplate> templ = ObjectTemplate::New(); 4133 Local<ObjectTemplate> templ = ObjectTemplate::New();
4134 templ->SetAccessor(v8_str("x"), NULL, NULL, v8_str("donut")); 4134 templ->SetAccessor(v8_str("x"),
4135 static_cast<v8::AccessorGetter>(NULL),
4136 NULL,
4137 v8_str("donut"));
4135 LocalContext context; 4138 LocalContext context;
4136 context->Global()->Set(v8_str("obj"), templ->NewInstance()); 4139 context->Global()->Set(v8_str("obj"), templ->NewInstance());
4137 Local<Script> script = Script::Compile(v8_str("obj.x = 4; obj.x")); 4140 Local<Script> script = Script::Compile(v8_str("obj.x = 4; obj.x"));
4138 for (int i = 0; i < 10; i++) { 4141 for (int i = 0; i < 10; i++) {
4139 script->Run(); 4142 script->Run();
4140 } 4143 }
4141 } 4144 }
4142 4145
4143 4146
4144 static v8::Handle<Value> XPropertyGetter(Local<String> property, 4147 static v8::Handle<Value> XPropertyGetter(Local<String> property,
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
4785 LocalContext env1; 4788 LocalContext env1;
4786 Local<Script> script1 = Script::Compile(source); 4789 Local<Script> script1 = Script::Compile(source);
4787 CHECK_EQ(8901.0, script1->Run()->NumberValue()); 4790 CHECK_EQ(8901.0, script1->Run()->NumberValue());
4788 } 4791 }
4789 4792
4790 4793
4791 THREADED_TEST(UndetectableObject) { 4794 THREADED_TEST(UndetectableObject) {
4792 LocalContext env; 4795 LocalContext env;
4793 v8::HandleScope scope(env->GetIsolate()); 4796 v8::HandleScope scope(env->GetIsolate());
4794 4797
4795 Local<v8::FunctionTemplate> desc = 4798 Local<v8::FunctionTemplate> desc = v8::FunctionTemplate::New();
4796 v8::FunctionTemplate::New(0, v8::Handle<Value>());
4797 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable 4799 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable
4798 4800
4799 Local<v8::Object> obj = desc->GetFunction()->NewInstance(); 4801 Local<v8::Object> obj = desc->GetFunction()->NewInstance();
4800 env->Global()->Set(v8_str("undetectable"), obj); 4802 env->Global()->Set(v8_str("undetectable"), obj);
4801 4803
4802 ExpectString("undetectable.toString()", "[object Object]"); 4804 ExpectString("undetectable.toString()", "[object Object]");
4803 ExpectString("typeof undetectable", "undefined"); 4805 ExpectString("typeof undetectable", "undefined");
4804 ExpectString("typeof(undetectable)", "undefined"); 4806 ExpectString("typeof(undetectable)", "undefined");
4805 ExpectBoolean("typeof undetectable == 'undefined'", true); 4807 ExpectBoolean("typeof undetectable == 'undefined'", true);
4806 ExpectBoolean("typeof undetectable == 'object'", false); 4808 ExpectBoolean("typeof undetectable == 'object'", false);
(...skipping 22 matching lines...) Expand all
4829 ExpectBoolean("undetectable===undefined", false); 4831 ExpectBoolean("undetectable===undefined", false);
4830 ExpectBoolean("undefined===undetectable", false); 4832 ExpectBoolean("undefined===undetectable", false);
4831 ExpectBoolean("undetectable===undetectable", true); 4833 ExpectBoolean("undetectable===undetectable", true);
4832 } 4834 }
4833 4835
4834 4836
4835 THREADED_TEST(VoidLiteral) { 4837 THREADED_TEST(VoidLiteral) {
4836 LocalContext env; 4838 LocalContext env;
4837 v8::HandleScope scope(env->GetIsolate()); 4839 v8::HandleScope scope(env->GetIsolate());
4838 4840
4839 Local<v8::FunctionTemplate> desc = 4841 Local<v8::FunctionTemplate> desc = v8::FunctionTemplate::New();
4840 v8::FunctionTemplate::New(0, v8::Handle<Value>());
4841 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable 4842 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable
4842 4843
4843 Local<v8::Object> obj = desc->GetFunction()->NewInstance(); 4844 Local<v8::Object> obj = desc->GetFunction()->NewInstance();
4844 env->Global()->Set(v8_str("undetectable"), obj); 4845 env->Global()->Set(v8_str("undetectable"), obj);
4845 4846
4846 ExpectBoolean("undefined == void 0", true); 4847 ExpectBoolean("undefined == void 0", true);
4847 ExpectBoolean("undetectable == void 0", true); 4848 ExpectBoolean("undetectable == void 0", true);
4848 ExpectBoolean("null == void 0", true); 4849 ExpectBoolean("null == void 0", true);
4849 ExpectBoolean("undefined === void 0", true); 4850 ExpectBoolean("undefined === void 0", true);
4850 ExpectBoolean("undetectable === void 0", false); 4851 ExpectBoolean("undetectable === void 0", false);
(...skipping 22 matching lines...) Expand all
4873 " }" 4874 " }"
4874 "})()", 4875 "})()",
4875 "ReferenceError: x is not defined"); 4876 "ReferenceError: x is not defined");
4876 } 4877 }
4877 4878
4878 4879
4879 THREADED_TEST(ExtensibleOnUndetectable) { 4880 THREADED_TEST(ExtensibleOnUndetectable) {
4880 LocalContext env; 4881 LocalContext env;
4881 v8::HandleScope scope(env->GetIsolate()); 4882 v8::HandleScope scope(env->GetIsolate());
4882 4883
4883 Local<v8::FunctionTemplate> desc = 4884 Local<v8::FunctionTemplate> desc = v8::FunctionTemplate::New();
4884 v8::FunctionTemplate::New(0, v8::Handle<Value>());
4885 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable 4885 desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable
4886 4886
4887 Local<v8::Object> obj = desc->GetFunction()->NewInstance(); 4887 Local<v8::Object> obj = desc->GetFunction()->NewInstance();
4888 env->Global()->Set(v8_str("undetectable"), obj); 4888 env->Global()->Set(v8_str("undetectable"), obj);
4889 4889
4890 Local<String> source = v8_str("undetectable.x = 42;" 4890 Local<String> source = v8_str("undetectable.x = 42;"
4891 "undetectable.x"); 4891 "undetectable.x");
4892 4892
4893 Local<Script> script = Script::Compile(source); 4893 Local<Script> script = Script::Compile(source);
4894 4894
(...skipping 5786 matching lines...) Expand 10 before | Expand all | Expand 10 after
10681 "};" 10681 "};"
10682 "f();"); 10682 "f();");
10683 CHECK_EQ(true, value->BooleanValue()); 10683 CHECK_EQ(true, value->BooleanValue());
10684 } 10684 }
10685 10685
10686 10686
10687 // Test that we ignore null interceptors. 10687 // Test that we ignore null interceptors.
10688 THREADED_TEST(NullNamedInterceptor) { 10688 THREADED_TEST(NullNamedInterceptor) {
10689 v8::HandleScope scope(v8::Isolate::GetCurrent()); 10689 v8::HandleScope scope(v8::Isolate::GetCurrent());
10690 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(); 10690 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New();
10691 templ->SetNamedPropertyHandler(0); 10691 templ->SetNamedPropertyHandler(static_cast<v8::NamedPropertyGetter>(0));
10692 LocalContext context; 10692 LocalContext context;
10693 templ->Set("x", v8_num(42)); 10693 templ->Set("x", v8_num(42));
10694 v8::Handle<v8::Object> obj = templ->NewInstance(); 10694 v8::Handle<v8::Object> obj = templ->NewInstance();
10695 context->Global()->Set(v8_str("obj"), obj); 10695 context->Global()->Set(v8_str("obj"), obj);
10696 v8::Handle<Value> value = CompileRun("obj.x"); 10696 v8::Handle<Value> value = CompileRun("obj.x");
10697 CHECK(value->IsInt32()); 10697 CHECK(value->IsInt32());
10698 CHECK_EQ(42, value->Int32Value()); 10698 CHECK_EQ(42, value->Int32Value());
10699 } 10699 }
10700 10700
10701 10701
10702 // Test that we ignore null interceptors. 10702 // Test that we ignore null interceptors.
10703 THREADED_TEST(NullIndexedInterceptor) { 10703 THREADED_TEST(NullIndexedInterceptor) {
10704 v8::HandleScope scope(v8::Isolate::GetCurrent()); 10704 v8::HandleScope scope(v8::Isolate::GetCurrent());
10705 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(); 10705 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New();
10706 templ->SetIndexedPropertyHandler(0); 10706 templ->SetIndexedPropertyHandler(static_cast<v8::IndexedPropertyGetter>(0));
10707 LocalContext context; 10707 LocalContext context;
10708 templ->Set("42", v8_num(42)); 10708 templ->Set("42", v8_num(42));
10709 v8::Handle<v8::Object> obj = templ->NewInstance(); 10709 v8::Handle<v8::Object> obj = templ->NewInstance();
10710 context->Global()->Set(v8_str("obj"), obj); 10710 context->Global()->Set(v8_str("obj"), obj);
10711 v8::Handle<Value> value = CompileRun("obj[42]"); 10711 v8::Handle<Value> value = CompileRun("obj[42]");
10712 CHECK(value->IsInt32()); 10712 CHECK(value->IsInt32());
10713 CHECK_EQ(42, value->Int32Value()); 10713 CHECK_EQ(42, value->Int32Value());
10714 } 10714 }
10715 10715
10716 10716
(...skipping 7600 matching lines...) Expand 10 before | Expand all | Expand 10 after
18317 i::Semaphore* sem_; 18317 i::Semaphore* sem_;
18318 volatile int sem_value_; 18318 volatile int sem_value_;
18319 }; 18319 };
18320 18320
18321 18321
18322 THREADED_TEST(SemaphoreInterruption) { 18322 THREADED_TEST(SemaphoreInterruption) {
18323 ThreadInterruptTest().RunTest(); 18323 ThreadInterruptTest().RunTest();
18324 } 18324 }
18325 18325
18326 #endif // WIN32 18326 #endif // WIN32
OLDNEW
« include/v8.h ('K') | « include/v8.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698