diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2013-08-10 16:27:43 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2013-08-10 16:27:43 +0200 |
commit | f69be329f0d78f19e71ac9e75d6e4ee816e13c97 (patch) | |
tree | 022e53d1aff74dbe50f3984c154461bf6c19efb0 /deps/v8/test/cctest/test-api.cc | |
parent | 39aa894035f9e3b58e04ce1a2b598e496e1f6bd6 (diff) | |
download | node-new-f69be329f0d78f19e71ac9e75d6e4ee816e13c97.tar.gz |
v8: upgrade v8 to 3.20.14.1
Diffstat (limited to 'deps/v8/test/cctest/test-api.cc')
-rw-r--r-- | deps/v8/test/cctest/test-api.cc | 175 |
1 files changed, 173 insertions, 2 deletions
diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 3c6f85ed72..664f905105 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -3565,6 +3565,7 @@ static void check_message_0(v8::Handle<v8::Message> message, CHECK_EQ(5.76, data->NumberValue()); CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); CHECK_EQ(7.56, message->GetScriptData()->NumberValue()); + CHECK(!message->IsSharedCrossOrigin()); message_received = true; } @@ -3591,6 +3592,7 @@ static void check_message_1(v8::Handle<v8::Message> message, v8::Handle<Value> data) { CHECK(data->IsNumber()); CHECK_EQ(1337, data->Int32Value()); + CHECK(!message->IsSharedCrossOrigin()); message_received = true; } @@ -3615,6 +3617,7 @@ static void check_message_2(v8::Handle<v8::Message> message, v8::Local<v8::Value> hidden_property = v8::Object::Cast(*data)->GetHiddenValue(v8_str("hidden key")); CHECK(v8_str("hidden value")->Equals(hidden_property)); + CHECK(!message->IsSharedCrossOrigin()); message_received = true; } @@ -3636,6 +3639,112 @@ TEST(MessageHandler2) { } +static void check_message_3(v8::Handle<v8::Message> message, + v8::Handle<Value> data) { + CHECK(message->IsSharedCrossOrigin()); + CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); + message_received = true; +} + + +TEST(MessageHandler3) { + message_received = false; + v8::HandleScope scope(v8::Isolate::GetCurrent()); + CHECK(!message_received); + v8::V8::AddMessageListener(check_message_3); + LocalContext context; + v8::ScriptOrigin origin = + v8::ScriptOrigin(v8_str("6.75"), + v8::Integer::New(1), + v8::Integer::New(2), + v8::True()); + v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), + &origin); + script->Run(); + CHECK(message_received); + // clear out the message listener + v8::V8::RemoveMessageListeners(check_message_3); +} + + +static void check_message_4(v8::Handle<v8::Message> message, + v8::Handle<Value> data) { + CHECK(!message->IsSharedCrossOrigin()); + CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); + message_received = true; +} + + +TEST(MessageHandler4) { + message_received = false; + v8::HandleScope scope(v8::Isolate::GetCurrent()); + CHECK(!message_received); + v8::V8::AddMessageListener(check_message_4); + LocalContext context; + v8::ScriptOrigin origin = + v8::ScriptOrigin(v8_str("6.75"), + v8::Integer::New(1), + v8::Integer::New(2), + v8::False()); + v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), + &origin); + script->Run(); + CHECK(message_received); + // clear out the message listener + v8::V8::RemoveMessageListeners(check_message_4); +} + + +static void check_message_5a(v8::Handle<v8::Message> message, + v8::Handle<Value> data) { + CHECK(message->IsSharedCrossOrigin()); + CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); + message_received = true; +} + + +static void check_message_5b(v8::Handle<v8::Message> message, + v8::Handle<Value> data) { + CHECK(!message->IsSharedCrossOrigin()); + CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); + message_received = true; +} + + +TEST(MessageHandler5) { + message_received = false; + v8::HandleScope scope(v8::Isolate::GetCurrent()); + CHECK(!message_received); + v8::V8::AddMessageListener(check_message_5a); + LocalContext context; + v8::ScriptOrigin origin = + v8::ScriptOrigin(v8_str("6.75"), + v8::Integer::New(1), + v8::Integer::New(2), + v8::True()); + v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), + &origin); + script->Run(); + CHECK(message_received); + // clear out the message listener + v8::V8::RemoveMessageListeners(check_message_5a); + + message_received = false; + v8::V8::AddMessageListener(check_message_5b); + origin = + v8::ScriptOrigin(v8_str("6.75"), + v8::Integer::New(1), + v8::Integer::New(2), + v8::False()); + script = Script::Compile(v8_str("throw 'error'"), + &origin); + script->Run(); + CHECK(message_received); + // clear out the message listener + v8::V8::RemoveMessageListeners(check_message_5b); +} + + THREADED_TEST(GetSetProperty) { LocalContext context; v8::HandleScope scope(context->GetIsolate()); @@ -4279,7 +4388,7 @@ TEST(APIThrowMessageOverwrittenToString) { } -static void check_custom_error_message( +static void check_custom_error_tostring( v8::Handle<v8::Message> message, v8::Handle<v8::Value> data) { const char* uncaught_error = "Uncaught MyError toString"; @@ -4290,7 +4399,7 @@ static void check_custom_error_message( TEST(CustomErrorToString) { LocalContext context; v8::HandleScope scope(context->GetIsolate()); - v8::V8::AddMessageListener(check_custom_error_message); + v8::V8::AddMessageListener(check_custom_error_tostring); CompileRun( "function MyError(name, message) { " " this.name = name; " @@ -4301,6 +4410,58 @@ TEST(CustomErrorToString) { " return 'MyError toString'; " "}; " "throw new MyError('my name', 'my message'); "); + v8::V8::RemoveMessageListeners(check_custom_error_tostring); +} + + +static void check_custom_error_message( + v8::Handle<v8::Message> message, + v8::Handle<v8::Value> data) { + const char* uncaught_error = "Uncaught MyError: my message"; + printf("%s\n", *v8::String::Utf8Value(message->Get())); + CHECK(message->Get()->Equals(v8_str(uncaught_error))); +} + + +TEST(CustomErrorMessage) { + LocalContext context; + v8::HandleScope scope(context->GetIsolate()); + v8::V8::AddMessageListener(check_custom_error_message); + + // Handlebars. + CompileRun( + "function MyError(msg) { " + " this.name = 'MyError'; " + " this.message = msg; " + "} " + "MyError.prototype = new Error(); " + "throw new MyError('my message'); "); + + // Closure. + CompileRun( + "function MyError(msg) { " + " this.name = 'MyError'; " + " this.message = msg; " + "} " + "inherits = function(childCtor, parentCtor) { " + " function tempCtor() {}; " + " tempCtor.prototype = parentCtor.prototype; " + " childCtor.superClass_ = parentCtor.prototype; " + " childCtor.prototype = new tempCtor(); " + " childCtor.prototype.constructor = childCtor; " + "}; " + "inherits(MyError, Error); " + "throw new MyError('my message'); "); + + // Object.create. + CompileRun( + "function MyError(msg) { " + " this.name = 'MyError'; " + " this.message = msg; " + "} " + "MyError.prototype = Object.create(Error.prototype); " + "throw new MyError('my message'); "); + v8::V8::RemoveMessageListeners(check_custom_error_message); } @@ -19754,6 +19915,16 @@ THREADED_TEST(Regress260106) { } +THREADED_TEST(JSONParse) { + LocalContext context; + HandleScope scope(context->GetIsolate()); + Local<Object> obj = v8::JSON::Parse(v8_str("{\"x\":42}")); + Handle<Object> global = context->Global(); + global->Set(v8_str("obj"), obj); + ExpectString("JSON.stringify(obj)", "{\"x\":42}"); +} + + #ifndef WIN32 class ThreadInterruptTest { public: |