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

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

Issue 149413010: A64: Synchronize with r16024. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 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:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/x64/stub-cache-x64.cc ('k') | test/cctest/test-assembler-arm.cc » ('j') | 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "platform.h" 48 #include "platform.h"
49 #include "snapshot.h" 49 #include "snapshot.h"
50 #include "unicode-inl.h" 50 #include "unicode-inl.h"
51 #include "utils.h" 51 #include "utils.h"
52 #include "vm-state.h" 52 #include "vm-state.h"
53 53
54 static const bool kLogThreading = false; 54 static const bool kLogThreading = false;
55 55
56 using ::v8::AccessorInfo; 56 using ::v8::AccessorInfo;
57 using ::v8::Arguments; 57 using ::v8::Arguments;
58 using ::v8::Boolean;
59 using ::v8::BooleanObject;
58 using ::v8::Context; 60 using ::v8::Context;
59 using ::v8::Extension; 61 using ::v8::Extension;
60 using ::v8::Function; 62 using ::v8::Function;
61 using ::v8::FunctionTemplate; 63 using ::v8::FunctionTemplate;
62 using ::v8::Handle; 64 using ::v8::Handle;
63 using ::v8::HandleScope; 65 using ::v8::HandleScope;
64 using ::v8::Local; 66 using ::v8::Local;
65 using ::v8::Message; 67 using ::v8::Message;
66 using ::v8::MessageCallback; 68 using ::v8::MessageCallback;
67 using ::v8::Object; 69 using ::v8::Object;
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1479 v8::Handle<Value> boxed_string = CompileRun("new String(\"test\")"); 1481 v8::Handle<Value> boxed_string = CompileRun("new String(\"test\")");
1480 CHECK(boxed_string->IsStringObject()); 1482 CHECK(boxed_string->IsStringObject());
1481 v8::Handle<Value> unboxed_string = CompileRun("\"test\""); 1483 v8::Handle<Value> unboxed_string = CompileRun("\"test\"");
1482 CHECK(!unboxed_string->IsStringObject()); 1484 CHECK(!unboxed_string->IsStringObject());
1483 v8::Handle<Value> boxed_not_string = CompileRun("new Number(42)"); 1485 v8::Handle<Value> boxed_not_string = CompileRun("new Number(42)");
1484 CHECK(!boxed_not_string->IsStringObject()); 1486 CHECK(!boxed_not_string->IsStringObject());
1485 v8::Handle<Value> not_object = CompileRun("0"); 1487 v8::Handle<Value> not_object = CompileRun("0");
1486 CHECK(!not_object->IsStringObject()); 1488 CHECK(!not_object->IsStringObject());
1487 v8::Handle<v8::StringObject> as_boxed = boxed_string.As<v8::StringObject>(); 1489 v8::Handle<v8::StringObject> as_boxed = boxed_string.As<v8::StringObject>();
1488 CHECK(!as_boxed.IsEmpty()); 1490 CHECK(!as_boxed.IsEmpty());
1489 Local<v8::String> the_string = as_boxed->StringValue(); 1491 Local<v8::String> the_string = as_boxed->ValueOf();
1490 CHECK(!the_string.IsEmpty()); 1492 CHECK(!the_string.IsEmpty());
1491 ExpectObject("\"test\"", the_string); 1493 ExpectObject("\"test\"", the_string);
1492 v8::Handle<v8::Value> new_boxed_string = v8::StringObject::New(the_string); 1494 v8::Handle<v8::Value> new_boxed_string = v8::StringObject::New(the_string);
1493 CHECK(new_boxed_string->IsStringObject()); 1495 CHECK(new_boxed_string->IsStringObject());
1494 as_boxed = new_boxed_string.As<v8::StringObject>(); 1496 as_boxed = new_boxed_string.As<v8::StringObject>();
1495 the_string = as_boxed->StringValue(); 1497 the_string = as_boxed->ValueOf();
1496 CHECK(!the_string.IsEmpty()); 1498 CHECK(!the_string.IsEmpty());
1497 ExpectObject("\"test\"", the_string); 1499 ExpectObject("\"test\"", the_string);
1498 } 1500 }
1499 1501
1500 1502
1501 THREADED_TEST(NumberObject) { 1503 THREADED_TEST(NumberObject) {
1502 LocalContext env; 1504 LocalContext env;
1503 v8::HandleScope scope(env->GetIsolate()); 1505 v8::HandleScope scope(env->GetIsolate());
1504 v8::Handle<Value> boxed_number = CompileRun("new Number(42)"); 1506 v8::Handle<Value> boxed_number = CompileRun("new Number(42)");
1505 CHECK(boxed_number->IsNumberObject()); 1507 CHECK(boxed_number->IsNumberObject());
1506 v8::Handle<Value> unboxed_number = CompileRun("42"); 1508 v8::Handle<Value> unboxed_number = CompileRun("42");
1507 CHECK(!unboxed_number->IsNumberObject()); 1509 CHECK(!unboxed_number->IsNumberObject());
1508 v8::Handle<Value> boxed_not_number = CompileRun("new Boolean(false)"); 1510 v8::Handle<Value> boxed_not_number = CompileRun("new Boolean(false)");
1509 CHECK(!boxed_not_number->IsNumberObject()); 1511 CHECK(!boxed_not_number->IsNumberObject());
1510 v8::Handle<v8::NumberObject> as_boxed = boxed_number.As<v8::NumberObject>(); 1512 v8::Handle<v8::NumberObject> as_boxed = boxed_number.As<v8::NumberObject>();
1511 CHECK(!as_boxed.IsEmpty()); 1513 CHECK(!as_boxed.IsEmpty());
1512 double the_number = as_boxed->NumberValue(); 1514 double the_number = as_boxed->ValueOf();
1513 CHECK_EQ(42.0, the_number); 1515 CHECK_EQ(42.0, the_number);
1514 v8::Handle<v8::Value> new_boxed_number = v8::NumberObject::New(43); 1516 v8::Handle<v8::Value> new_boxed_number = v8::NumberObject::New(43);
1515 CHECK(new_boxed_number->IsNumberObject()); 1517 CHECK(new_boxed_number->IsNumberObject());
1516 as_boxed = new_boxed_number.As<v8::NumberObject>(); 1518 as_boxed = new_boxed_number.As<v8::NumberObject>();
1517 the_number = as_boxed->NumberValue(); 1519 the_number = as_boxed->ValueOf();
1518 CHECK_EQ(43.0, the_number); 1520 CHECK_EQ(43.0, the_number);
1519 } 1521 }
1520 1522
1521 1523
1522 THREADED_TEST(BooleanObject) { 1524 THREADED_TEST(BooleanObject) {
1523 LocalContext env; 1525 LocalContext env;
1524 v8::HandleScope scope(env->GetIsolate()); 1526 v8::HandleScope scope(env->GetIsolate());
1525 v8::Handle<Value> boxed_boolean = CompileRun("new Boolean(true)"); 1527 v8::Handle<Value> boxed_boolean = CompileRun("new Boolean(true)");
1526 CHECK(boxed_boolean->IsBooleanObject()); 1528 CHECK(boxed_boolean->IsBooleanObject());
1527 v8::Handle<Value> unboxed_boolean = CompileRun("true"); 1529 v8::Handle<Value> unboxed_boolean = CompileRun("true");
1528 CHECK(!unboxed_boolean->IsBooleanObject()); 1530 CHECK(!unboxed_boolean->IsBooleanObject());
1529 v8::Handle<Value> boxed_not_boolean = CompileRun("new Number(42)"); 1531 v8::Handle<Value> boxed_not_boolean = CompileRun("new Number(42)");
1530 CHECK(!boxed_not_boolean->IsBooleanObject()); 1532 CHECK(!boxed_not_boolean->IsBooleanObject());
1531 v8::Handle<v8::BooleanObject> as_boxed = 1533 v8::Handle<v8::BooleanObject> as_boxed =
1532 boxed_boolean.As<v8::BooleanObject>(); 1534 boxed_boolean.As<v8::BooleanObject>();
1533 CHECK(!as_boxed.IsEmpty()); 1535 CHECK(!as_boxed.IsEmpty());
1534 bool the_boolean = as_boxed->BooleanValue(); 1536 bool the_boolean = as_boxed->ValueOf();
1535 CHECK_EQ(true, the_boolean); 1537 CHECK_EQ(true, the_boolean);
1536 v8::Handle<v8::Value> boxed_true = v8::BooleanObject::New(true); 1538 v8::Handle<v8::Value> boxed_true = v8::BooleanObject::New(true);
1537 v8::Handle<v8::Value> boxed_false = v8::BooleanObject::New(false); 1539 v8::Handle<v8::Value> boxed_false = v8::BooleanObject::New(false);
1538 CHECK(boxed_true->IsBooleanObject()); 1540 CHECK(boxed_true->IsBooleanObject());
1539 CHECK(boxed_false->IsBooleanObject()); 1541 CHECK(boxed_false->IsBooleanObject());
1540 as_boxed = boxed_true.As<v8::BooleanObject>(); 1542 as_boxed = boxed_true.As<v8::BooleanObject>();
1541 CHECK_EQ(true, as_boxed->BooleanValue()); 1543 CHECK_EQ(true, as_boxed->ValueOf());
1542 as_boxed = boxed_false.As<v8::BooleanObject>(); 1544 as_boxed = boxed_false.As<v8::BooleanObject>();
1543 CHECK_EQ(false, as_boxed->BooleanValue()); 1545 CHECK_EQ(false, as_boxed->ValueOf());
1544 } 1546 }
1545 1547
1546 1548
1549 THREADED_TEST(PrimitiveAndWrappedBooleans) {
1550 LocalContext env;
1551 v8::HandleScope scope(env->GetIsolate());
1552
1553 Local<Value> primitive_false = Boolean::New(false);
1554 CHECK(primitive_false->IsBoolean());
1555 CHECK(!primitive_false->IsBooleanObject());
1556 CHECK(!primitive_false->BooleanValue());
1557 CHECK(!primitive_false->IsTrue());
1558 CHECK(primitive_false->IsFalse());
1559
1560 Local<Value> false_value = BooleanObject::New(false);
1561 CHECK(!false_value->IsBoolean());
1562 CHECK(false_value->IsBooleanObject());
1563 CHECK(false_value->BooleanValue());
1564 CHECK(!false_value->IsTrue());
1565 CHECK(!false_value->IsFalse());
1566
1567 Local<BooleanObject> false_boolean_object = false_value.As<BooleanObject>();
1568 CHECK(!false_boolean_object->IsBoolean());
1569 CHECK(false_boolean_object->IsBooleanObject());
1570 // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted.
1571 // CHECK(false_boolean_object->BooleanValue());
1572 CHECK(!false_boolean_object->ValueOf());
1573 CHECK(!false_boolean_object->IsTrue());
1574 CHECK(!false_boolean_object->IsFalse());
1575
1576 Local<Value> primitive_true = Boolean::New(true);
1577 CHECK(primitive_true->IsBoolean());
1578 CHECK(!primitive_true->IsBooleanObject());
1579 CHECK(primitive_true->BooleanValue());
1580 CHECK(primitive_true->IsTrue());
1581 CHECK(!primitive_true->IsFalse());
1582
1583 Local<Value> true_value = BooleanObject::New(true);
1584 CHECK(!true_value->IsBoolean());
1585 CHECK(true_value->IsBooleanObject());
1586 CHECK(true_value->BooleanValue());
1587 CHECK(!true_value->IsTrue());
1588 CHECK(!true_value->IsFalse());
1589
1590 Local<BooleanObject> true_boolean_object = true_value.As<BooleanObject>();
1591 CHECK(!true_boolean_object->IsBoolean());
1592 CHECK(true_boolean_object->IsBooleanObject());
1593 // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted.
1594 // CHECK(true_boolean_object->BooleanValue());
1595 CHECK(true_boolean_object->ValueOf());
1596 CHECK(!true_boolean_object->IsTrue());
1597 CHECK(!true_boolean_object->IsFalse());
1598 }
1599
1600
1547 THREADED_TEST(Number) { 1601 THREADED_TEST(Number) {
1548 LocalContext env; 1602 LocalContext env;
1549 v8::HandleScope scope(env->GetIsolate()); 1603 v8::HandleScope scope(env->GetIsolate());
1550 double PI = 3.1415926; 1604 double PI = 3.1415926;
1551 Local<v8::Number> pi_obj = v8::Number::New(PI); 1605 Local<v8::Number> pi_obj = v8::Number::New(PI);
1552 CHECK_EQ(PI, pi_obj->NumberValue()); 1606 CHECK_EQ(PI, pi_obj->NumberValue());
1553 } 1607 }
1554 1608
1555 1609
1556 THREADED_TEST(ToNumber) { 1610 THREADED_TEST(ToNumber) {
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
2559 CHECK(sym_val->StrictEquals(sym2)); 2613 CHECK(sym_val->StrictEquals(sym2));
2560 CHECK(v8::Symbol::Cast(*sym_val)->Equals(sym2)); 2614 CHECK(v8::Symbol::Cast(*sym_val)->Equals(sym2));
2561 2615
2562 v8::Local<v8::Value> sym_obj = v8::SymbolObject::New(isolate, sym2); 2616 v8::Local<v8::Value> sym_obj = v8::SymbolObject::New(isolate, sym2);
2563 CHECK(sym_obj->IsSymbolObject()); 2617 CHECK(sym_obj->IsSymbolObject());
2564 CHECK(!sym2->IsSymbolObject()); 2618 CHECK(!sym2->IsSymbolObject());
2565 CHECK(!obj->IsSymbolObject()); 2619 CHECK(!obj->IsSymbolObject());
2566 CHECK(sym_obj->Equals(sym2)); 2620 CHECK(sym_obj->Equals(sym2));
2567 CHECK(!sym_obj->StrictEquals(sym2)); 2621 CHECK(!sym_obj->StrictEquals(sym2));
2568 CHECK(v8::SymbolObject::Cast(*sym_obj)->Equals(sym_obj)); 2622 CHECK(v8::SymbolObject::Cast(*sym_obj)->Equals(sym_obj));
2569 CHECK(v8::SymbolObject::Cast(*sym_obj)->SymbolValue()->Equals(sym2)); 2623 CHECK(v8::SymbolObject::Cast(*sym_obj)->ValueOf()->Equals(sym2));
2570 2624
2571 // Make sure delete of a non-existent symbol property works. 2625 // Make sure delete of a non-existent symbol property works.
2572 CHECK(obj->Delete(sym1)); 2626 CHECK(obj->Delete(sym1));
2573 CHECK(!obj->Has(sym1)); 2627 CHECK(!obj->Has(sym1));
2574 2628
2575 CHECK(obj->Set(sym1, v8::Integer::New(1503))); 2629 CHECK(obj->Set(sym1, v8::Integer::New(1503)));
2576 CHECK(obj->Has(sym1)); 2630 CHECK(obj->Has(sym1));
2577 CHECK_EQ(1503, obj->Get(sym1)->Int32Value()); 2631 CHECK_EQ(1503, obj->Get(sym1)->Int32Value());
2578 CHECK(obj->Set(sym1, v8::Integer::New(2002))); 2632 CHECK(obj->Set(sym1, v8::Integer::New(2002)));
2579 CHECK(obj->Has(sym1)); 2633 CHECK(obj->Has(sym1));
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after
3504 3558
3505 3559
3506 bool message_received; 3560 bool message_received;
3507 3561
3508 3562
3509 static void check_message_0(v8::Handle<v8::Message> message, 3563 static void check_message_0(v8::Handle<v8::Message> message,
3510 v8::Handle<Value> data) { 3564 v8::Handle<Value> data) {
3511 CHECK_EQ(5.76, data->NumberValue()); 3565 CHECK_EQ(5.76, data->NumberValue());
3512 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); 3566 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue());
3513 CHECK_EQ(7.56, message->GetScriptData()->NumberValue()); 3567 CHECK_EQ(7.56, message->GetScriptData()->NumberValue());
3568 CHECK(!message->IsSharedCrossOrigin());
3514 message_received = true; 3569 message_received = true;
3515 } 3570 }
3516 3571
3517 3572
3518 THREADED_TEST(MessageHandler0) { 3573 THREADED_TEST(MessageHandler0) {
3519 message_received = false; 3574 message_received = false;
3520 v8::HandleScope scope(v8::Isolate::GetCurrent()); 3575 v8::HandleScope scope(v8::Isolate::GetCurrent());
3521 CHECK(!message_received); 3576 CHECK(!message_received);
3522 v8::V8::AddMessageListener(check_message_0, v8_num(5.76)); 3577 v8::V8::AddMessageListener(check_message_0, v8_num(5.76));
3523 LocalContext context; 3578 LocalContext context;
3524 v8::ScriptOrigin origin = 3579 v8::ScriptOrigin origin =
3525 v8::ScriptOrigin(v8_str("6.75")); 3580 v8::ScriptOrigin(v8_str("6.75"));
3526 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), 3581 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"),
3527 &origin); 3582 &origin);
3528 script->SetData(v8_str("7.56")); 3583 script->SetData(v8_str("7.56"));
3529 script->Run(); 3584 script->Run();
3530 CHECK(message_received); 3585 CHECK(message_received);
3531 // clear out the message listener 3586 // clear out the message listener
3532 v8::V8::RemoveMessageListeners(check_message_0); 3587 v8::V8::RemoveMessageListeners(check_message_0);
3533 } 3588 }
3534 3589
3535 3590
3536 static void check_message_1(v8::Handle<v8::Message> message, 3591 static void check_message_1(v8::Handle<v8::Message> message,
3537 v8::Handle<Value> data) { 3592 v8::Handle<Value> data) {
3538 CHECK(data->IsNumber()); 3593 CHECK(data->IsNumber());
3539 CHECK_EQ(1337, data->Int32Value()); 3594 CHECK_EQ(1337, data->Int32Value());
3595 CHECK(!message->IsSharedCrossOrigin());
3540 message_received = true; 3596 message_received = true;
3541 } 3597 }
3542 3598
3543 3599
3544 TEST(MessageHandler1) { 3600 TEST(MessageHandler1) {
3545 message_received = false; 3601 message_received = false;
3546 v8::HandleScope scope(v8::Isolate::GetCurrent()); 3602 v8::HandleScope scope(v8::Isolate::GetCurrent());
3547 CHECK(!message_received); 3603 CHECK(!message_received);
3548 v8::V8::AddMessageListener(check_message_1); 3604 v8::V8::AddMessageListener(check_message_1);
3549 LocalContext context; 3605 LocalContext context;
3550 CompileRun("throw 1337;"); 3606 CompileRun("throw 1337;");
3551 CHECK(message_received); 3607 CHECK(message_received);
3552 // clear out the message listener 3608 // clear out the message listener
3553 v8::V8::RemoveMessageListeners(check_message_1); 3609 v8::V8::RemoveMessageListeners(check_message_1);
3554 } 3610 }
3555 3611
3556 3612
3557 static void check_message_2(v8::Handle<v8::Message> message, 3613 static void check_message_2(v8::Handle<v8::Message> message,
3558 v8::Handle<Value> data) { 3614 v8::Handle<Value> data) {
3559 LocalContext context; 3615 LocalContext context;
3560 CHECK(data->IsObject()); 3616 CHECK(data->IsObject());
3561 v8::Local<v8::Value> hidden_property = 3617 v8::Local<v8::Value> hidden_property =
3562 v8::Object::Cast(*data)->GetHiddenValue(v8_str("hidden key")); 3618 v8::Object::Cast(*data)->GetHiddenValue(v8_str("hidden key"));
3563 CHECK(v8_str("hidden value")->Equals(hidden_property)); 3619 CHECK(v8_str("hidden value")->Equals(hidden_property));
3620 CHECK(!message->IsSharedCrossOrigin());
3564 message_received = true; 3621 message_received = true;
3565 } 3622 }
3566 3623
3567 3624
3568 TEST(MessageHandler2) { 3625 TEST(MessageHandler2) {
3569 message_received = false; 3626 message_received = false;
3570 v8::HandleScope scope(v8::Isolate::GetCurrent()); 3627 v8::HandleScope scope(v8::Isolate::GetCurrent());
3571 CHECK(!message_received); 3628 CHECK(!message_received);
3572 v8::V8::AddMessageListener(check_message_2); 3629 v8::V8::AddMessageListener(check_message_2);
3573 LocalContext context; 3630 LocalContext context;
3574 v8::Local<v8::Value> error = v8::Exception::Error(v8_str("custom error")); 3631 v8::Local<v8::Value> error = v8::Exception::Error(v8_str("custom error"));
3575 v8::Object::Cast(*error)->SetHiddenValue(v8_str("hidden key"), 3632 v8::Object::Cast(*error)->SetHiddenValue(v8_str("hidden key"),
3576 v8_str("hidden value")); 3633 v8_str("hidden value"));
3577 context->Global()->Set(v8_str("error"), error); 3634 context->Global()->Set(v8_str("error"), error);
3578 CompileRun("throw error;"); 3635 CompileRun("throw error;");
3579 CHECK(message_received); 3636 CHECK(message_received);
3580 // clear out the message listener 3637 // clear out the message listener
3581 v8::V8::RemoveMessageListeners(check_message_2); 3638 v8::V8::RemoveMessageListeners(check_message_2);
3582 } 3639 }
3583 3640
3584 3641
3642 static void check_message_3(v8::Handle<v8::Message> message,
3643 v8::Handle<Value> data) {
3644 CHECK(message->IsSharedCrossOrigin());
3645 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue());
3646 message_received = true;
3647 }
3648
3649
3650 TEST(MessageHandler3) {
3651 message_received = false;
3652 v8::HandleScope scope(v8::Isolate::GetCurrent());
3653 CHECK(!message_received);
3654 v8::V8::AddMessageListener(check_message_3);
3655 LocalContext context;
3656 v8::ScriptOrigin origin =
3657 v8::ScriptOrigin(v8_str("6.75"),
3658 v8::Integer::New(1),
3659 v8::Integer::New(2),
3660 v8::True());
3661 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"),
3662 &origin);
3663 script->Run();
3664 CHECK(message_received);
3665 // clear out the message listener
3666 v8::V8::RemoveMessageListeners(check_message_3);
3667 }
3668
3669
3670 static void check_message_4(v8::Handle<v8::Message> message,
3671 v8::Handle<Value> data) {
3672 CHECK(!message->IsSharedCrossOrigin());
3673 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue());
3674 message_received = true;
3675 }
3676
3677
3678 TEST(MessageHandler4) {
3679 message_received = false;
3680 v8::HandleScope scope(v8::Isolate::GetCurrent());
3681 CHECK(!message_received);
3682 v8::V8::AddMessageListener(check_message_4);
3683 LocalContext context;
3684 v8::ScriptOrigin origin =
3685 v8::ScriptOrigin(v8_str("6.75"),
3686 v8::Integer::New(1),
3687 v8::Integer::New(2),
3688 v8::False());
3689 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"),
3690 &origin);
3691 script->Run();
3692 CHECK(message_received);
3693 // clear out the message listener
3694 v8::V8::RemoveMessageListeners(check_message_4);
3695 }
3696
3697
3698 static void check_message_5a(v8::Handle<v8::Message> message,
3699 v8::Handle<Value> data) {
3700 CHECK(message->IsSharedCrossOrigin());
3701 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue());
3702 message_received = true;
3703 }
3704
3705
3706 static void check_message_5b(v8::Handle<v8::Message> message,
3707 v8::Handle<Value> data) {
3708 CHECK(!message->IsSharedCrossOrigin());
3709 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue());
3710 message_received = true;
3711 }
3712
3713
3714 TEST(MessageHandler5) {
3715 message_received = false;
3716 v8::HandleScope scope(v8::Isolate::GetCurrent());
3717 CHECK(!message_received);
3718 v8::V8::AddMessageListener(check_message_5a);
3719 LocalContext context;
3720 v8::ScriptOrigin origin =
3721 v8::ScriptOrigin(v8_str("6.75"),
3722 v8::Integer::New(1),
3723 v8::Integer::New(2),
3724 v8::True());
3725 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"),
3726 &origin);
3727 script->Run();
3728 CHECK(message_received);
3729 // clear out the message listener
3730 v8::V8::RemoveMessageListeners(check_message_5a);
3731
3732 message_received = false;
3733 v8::V8::AddMessageListener(check_message_5b);
3734 origin =
3735 v8::ScriptOrigin(v8_str("6.75"),
3736 v8::Integer::New(1),
3737 v8::Integer::New(2),
3738 v8::False());
3739 script = Script::Compile(v8_str("throw 'error'"),
3740 &origin);
3741 script->Run();
3742 CHECK(message_received);
3743 // clear out the message listener
3744 v8::V8::RemoveMessageListeners(check_message_5b);
3745 }
3746
3747
3585 THREADED_TEST(GetSetProperty) { 3748 THREADED_TEST(GetSetProperty) {
3586 LocalContext context; 3749 LocalContext context;
3587 v8::HandleScope scope(context->GetIsolate()); 3750 v8::HandleScope scope(context->GetIsolate());
3588 context->Global()->Set(v8_str("foo"), v8_num(14)); 3751 context->Global()->Set(v8_str("foo"), v8_num(14));
3589 context->Global()->Set(v8_str("12"), v8_num(92)); 3752 context->Global()->Set(v8_str("12"), v8_num(92));
3590 context->Global()->Set(v8::Integer::New(16), v8_num(32)); 3753 context->Global()->Set(v8::Integer::New(16), v8_num(32));
3591 context->Global()->Set(v8_num(13), v8_num(56)); 3754 context->Global()->Set(v8_num(13), v8_num(56));
3592 Local<Value> foo = Script::Compile(v8_str("this.foo"))->Run(); 3755 Local<Value> foo = Script::Compile(v8_str("this.foo"))->Run();
3593 CHECK_EQ(14, foo->Int32Value()); 3756 CHECK_EQ(14, foo->Int32Value());
3594 Local<Value> twelve = Script::Compile(v8_str("this[12]"))->Run(); 3757 Local<Value> twelve = Script::Compile(v8_str("this[12]"))->Run();
(...skipping 9572 matching lines...) Expand 10 before | Expand all | Expand 10 after
13167 v8::String::Utf8Value name(value); 13330 v8::String::Utf8Value name(value);
13168 CHECK_EQ("asdf", *name); 13331 CHECK_EQ("asdf", *name);
13169 } 13332 }
13170 13333
13171 13334
13172 THREADED_TEST(DateAccess) { 13335 THREADED_TEST(DateAccess) {
13173 LocalContext context; 13336 LocalContext context;
13174 v8::HandleScope scope(context->GetIsolate()); 13337 v8::HandleScope scope(context->GetIsolate());
13175 v8::Handle<v8::Value> date = v8::Date::New(1224744689038.0); 13338 v8::Handle<v8::Value> date = v8::Date::New(1224744689038.0);
13176 CHECK(date->IsDate()); 13339 CHECK(date->IsDate());
13177 CHECK_EQ(1224744689038.0, date.As<v8::Date>()->NumberValue()); 13340 CHECK_EQ(1224744689038.0, date.As<v8::Date>()->ValueOf());
13178 } 13341 }
13179 13342
13180 13343
13181 void CheckProperties(v8::Handle<v8::Value> val, int elmc, const char* elmv[]) { 13344 void CheckProperties(v8::Handle<v8::Value> val, int elmc, const char* elmv[]) {
13182 v8::Handle<v8::Object> obj = val.As<v8::Object>(); 13345 v8::Handle<v8::Object> obj = val.As<v8::Object>();
13183 v8::Handle<v8::Array> props = obj->GetPropertyNames(); 13346 v8::Handle<v8::Array> props = obj->GetPropertyNames();
13184 CHECK_EQ(elmc, props->Length()); 13347 CHECK_EQ(elmc, props->Length());
13185 for (int i = 0; i < elmc; i++) { 13348 for (int i = 0; i < elmc; i++) {
13186 v8::String::Utf8Value elm(props->Get(v8::Integer::New(i))); 13349 v8::String::Utf8Value elm(props->Get(v8::Integer::New(i)));
13187 CHECK_EQ(elmv[i], *elm); 13350 CHECK_EQ(elmv[i], *elm);
(...skipping 6744 matching lines...) Expand 10 before | Expand all | Expand 10 after
19932 CheckCorrectThrow("%HasProperty(other, 'x')"); 20095 CheckCorrectThrow("%HasProperty(other, 'x')");
19933 CheckCorrectThrow("%HasElement(other, 1)"); 20096 CheckCorrectThrow("%HasElement(other, 1)");
19934 CheckCorrectThrow("%IsPropertyEnumerable(other, 'x')"); 20097 CheckCorrectThrow("%IsPropertyEnumerable(other, 'x')");
19935 CheckCorrectThrow("%GetPropertyNames(other)"); 20098 CheckCorrectThrow("%GetPropertyNames(other)");
19936 CheckCorrectThrow("%GetLocalPropertyNames(other, true)"); 20099 CheckCorrectThrow("%GetLocalPropertyNames(other, true)");
19937 CheckCorrectThrow("%DefineOrRedefineAccessorProperty(" 20100 CheckCorrectThrow("%DefineOrRedefineAccessorProperty("
19938 "other, 'x', null, null, 1)"); 20101 "other, 'x', null, null, 1)");
19939 } 20102 }
19940 20103
19941 #endif // WIN32 20104 #endif // WIN32
OLDNEW
« no previous file with comments | « src/x64/stub-cache-x64.cc ('k') | test/cctest/test-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698