Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index 7cb3c04087b69d5238b904861e20d4aaf75fc3fa..92ab5b8546959c820af1cd46ddfd485e80e0a83a 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -55,6 +55,8 @@ static const bool kLogThreading = false; |
using ::v8::AccessorInfo; |
using ::v8::Arguments; |
+using ::v8::Boolean; |
+using ::v8::BooleanObject; |
using ::v8::Context; |
using ::v8::Extension; |
using ::v8::Function; |
@@ -1486,13 +1488,13 @@ THREADED_TEST(StringObject) { |
CHECK(!not_object->IsStringObject()); |
v8::Handle<v8::StringObject> as_boxed = boxed_string.As<v8::StringObject>(); |
CHECK(!as_boxed.IsEmpty()); |
- Local<v8::String> the_string = as_boxed->StringValue(); |
+ Local<v8::String> the_string = as_boxed->ValueOf(); |
CHECK(!the_string.IsEmpty()); |
ExpectObject("\"test\"", the_string); |
v8::Handle<v8::Value> new_boxed_string = v8::StringObject::New(the_string); |
CHECK(new_boxed_string->IsStringObject()); |
as_boxed = new_boxed_string.As<v8::StringObject>(); |
- the_string = as_boxed->StringValue(); |
+ the_string = as_boxed->ValueOf(); |
CHECK(!the_string.IsEmpty()); |
ExpectObject("\"test\"", the_string); |
} |
@@ -1509,12 +1511,12 @@ THREADED_TEST(NumberObject) { |
CHECK(!boxed_not_number->IsNumberObject()); |
v8::Handle<v8::NumberObject> as_boxed = boxed_number.As<v8::NumberObject>(); |
CHECK(!as_boxed.IsEmpty()); |
- double the_number = as_boxed->NumberValue(); |
+ double the_number = as_boxed->ValueOf(); |
CHECK_EQ(42.0, the_number); |
v8::Handle<v8::Value> new_boxed_number = v8::NumberObject::New(43); |
CHECK(new_boxed_number->IsNumberObject()); |
as_boxed = new_boxed_number.As<v8::NumberObject>(); |
- the_number = as_boxed->NumberValue(); |
+ the_number = as_boxed->ValueOf(); |
CHECK_EQ(43.0, the_number); |
} |
@@ -1531,16 +1533,68 @@ THREADED_TEST(BooleanObject) { |
v8::Handle<v8::BooleanObject> as_boxed = |
boxed_boolean.As<v8::BooleanObject>(); |
CHECK(!as_boxed.IsEmpty()); |
- bool the_boolean = as_boxed->BooleanValue(); |
+ bool the_boolean = as_boxed->ValueOf(); |
CHECK_EQ(true, the_boolean); |
v8::Handle<v8::Value> boxed_true = v8::BooleanObject::New(true); |
v8::Handle<v8::Value> boxed_false = v8::BooleanObject::New(false); |
CHECK(boxed_true->IsBooleanObject()); |
CHECK(boxed_false->IsBooleanObject()); |
as_boxed = boxed_true.As<v8::BooleanObject>(); |
- CHECK_EQ(true, as_boxed->BooleanValue()); |
+ CHECK_EQ(true, as_boxed->ValueOf()); |
as_boxed = boxed_false.As<v8::BooleanObject>(); |
- CHECK_EQ(false, as_boxed->BooleanValue()); |
+ CHECK_EQ(false, as_boxed->ValueOf()); |
+} |
+ |
+ |
+THREADED_TEST(PrimitiveAndWrappedBooleans) { |
+ LocalContext env; |
+ v8::HandleScope scope(env->GetIsolate()); |
+ |
+ Local<Value> primitive_false = Boolean::New(false); |
+ CHECK(primitive_false->IsBoolean()); |
+ CHECK(!primitive_false->IsBooleanObject()); |
+ CHECK(!primitive_false->BooleanValue()); |
+ CHECK(!primitive_false->IsTrue()); |
+ CHECK(primitive_false->IsFalse()); |
+ |
+ Local<Value> false_value = BooleanObject::New(false); |
+ CHECK(!false_value->IsBoolean()); |
+ CHECK(false_value->IsBooleanObject()); |
+ CHECK(false_value->BooleanValue()); |
+ CHECK(!false_value->IsTrue()); |
+ CHECK(!false_value->IsFalse()); |
+ |
+ Local<BooleanObject> false_boolean_object = false_value.As<BooleanObject>(); |
+ CHECK(!false_boolean_object->IsBoolean()); |
+ CHECK(false_boolean_object->IsBooleanObject()); |
+ // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted. |
+ // CHECK(false_boolean_object->BooleanValue()); |
+ CHECK(!false_boolean_object->ValueOf()); |
+ CHECK(!false_boolean_object->IsTrue()); |
+ CHECK(!false_boolean_object->IsFalse()); |
+ |
+ Local<Value> primitive_true = Boolean::New(true); |
+ CHECK(primitive_true->IsBoolean()); |
+ CHECK(!primitive_true->IsBooleanObject()); |
+ CHECK(primitive_true->BooleanValue()); |
+ CHECK(primitive_true->IsTrue()); |
+ CHECK(!primitive_true->IsFalse()); |
+ |
+ Local<Value> true_value = BooleanObject::New(true); |
+ CHECK(!true_value->IsBoolean()); |
+ CHECK(true_value->IsBooleanObject()); |
+ CHECK(true_value->BooleanValue()); |
+ CHECK(!true_value->IsTrue()); |
+ CHECK(!true_value->IsFalse()); |
+ |
+ Local<BooleanObject> true_boolean_object = true_value.As<BooleanObject>(); |
+ CHECK(!true_boolean_object->IsBoolean()); |
+ CHECK(true_boolean_object->IsBooleanObject()); |
+ // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted. |
+ // CHECK(true_boolean_object->BooleanValue()); |
+ CHECK(true_boolean_object->ValueOf()); |
+ CHECK(!true_boolean_object->IsTrue()); |
+ CHECK(!true_boolean_object->IsFalse()); |
} |
@@ -2566,7 +2620,7 @@ THREADED_TEST(SymbolProperties) { |
CHECK(sym_obj->Equals(sym2)); |
CHECK(!sym_obj->StrictEquals(sym2)); |
CHECK(v8::SymbolObject::Cast(*sym_obj)->Equals(sym_obj)); |
- CHECK(v8::SymbolObject::Cast(*sym_obj)->SymbolValue()->Equals(sym2)); |
+ CHECK(v8::SymbolObject::Cast(*sym_obj)->ValueOf()->Equals(sym2)); |
// Make sure delete of a non-existent symbol property works. |
CHECK(obj->Delete(sym1)); |
@@ -3511,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; |
} |
@@ -3537,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; |
} |
@@ -3561,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; |
} |
@@ -3582,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()); |
@@ -13174,7 +13337,7 @@ THREADED_TEST(DateAccess) { |
v8::HandleScope scope(context->GetIsolate()); |
v8::Handle<v8::Value> date = v8::Date::New(1224744689038.0); |
CHECK(date->IsDate()); |
- CHECK_EQ(1224744689038.0, date.As<v8::Date>()->NumberValue()); |
+ CHECK_EQ(1224744689038.0, date.As<v8::Date>()->ValueOf()); |
} |