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

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

Issue 669153: Change allocations in test-heap to use handles. This makes the test... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-heap.cc
===================================================================
--- test/cctest/test-heap.cc (revision 4032)
+++ test/cctest/test-heap.cc (working copy)
@@ -149,14 +149,9 @@
CHECK(Heap::nan_value()->IsNumber());
CHECK(isnan(Heap::nan_value()->Number()));
- Object* str = Heap::AllocateStringFromAscii(CStrVector("fisk hest "));
- if (!str->IsFailure()) {
- String* s = String::cast(str);
- CHECK(s->IsString());
- CHECK_EQ(10, s->length());
- } else {
- CHECK(false);
- }
+ Handle<String> s = Factory::NewStringFromAscii(CStrVector("fisk hest "));
+ CHECK(s->IsString());
+ CHECK_EQ(10, s->length());
String* object_symbol = String::cast(Heap::Object_symbol());
CHECK(Top::context()->global()->HasLocalProperty(object_symbol));
@@ -201,69 +196,68 @@
InitializeVM();
v8::HandleScope sc;
- // check GC when heap is empty
+ // Check GC.
int free_bytes = Heap::MaxObjectSizeInPagedSpace();
CHECK(Heap::CollectGarbage(free_bytes, NEW_SPACE));
- // allocate a function and keep it in global object's property
- String* func_name = String::cast(Heap::LookupAsciiSymbol("theFunction"));
- SharedFunctionInfo* function_share =
- SharedFunctionInfo::cast(Heap::AllocateSharedFunctionInfo(func_name));
- JSFunction* function =
- JSFunction::cast(Heap::AllocateFunction(*Top::function_map(),
- function_share,
- Heap::undefined_value()));
- Map* initial_map =
- Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize));
- function->set_initial_map(initial_map);
- Top::context()->global()->SetProperty(func_name, function, NONE);
+ Handle<String> name = Factory::LookupAsciiSymbol("theFunction");
+ Handle<String> prop_name = Factory::LookupAsciiSymbol("theSlot");
+ Handle<String> prop_namex = Factory::LookupAsciiSymbol("theSlotx");
+ Handle<String> obj_name = Factory::LookupAsciiSymbol("theObject");
- // allocate an object, but it is unrooted
- String* prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot"));
- String* prop_namex = String::cast(Heap::LookupAsciiSymbol("theSlotx"));
- JSObject* obj = JSObject::cast(Heap::AllocateJSObject(function));
- obj->SetProperty(prop_name, Smi::FromInt(23), NONE);
- obj->SetProperty(prop_namex, Smi::FromInt(24), NONE);
+ {
+ v8::HandleScope inner_scope;
+ // Allocate a function and keep it in global object's property.
+ Handle<JSFunction> function =
+ Factory::NewFunction(name, Factory::undefined_value());
+ Handle<Map> initial_map =
+ Factory::NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
+ function->set_initial_map(*initial_map);
+ Top::context()->global()->SetProperty(*name, *function, NONE);
+ // Allocate an object. Unrooted after leaving the scope.
+ Handle<JSObject> obj = Factory::NewJSObject(function);
+ obj->SetProperty(*prop_name, Smi::FromInt(23), NONE);
+ obj->SetProperty(*prop_namex, Smi::FromInt(24), NONE);
- CHECK_EQ(Smi::FromInt(23), obj->GetProperty(prop_name));
- CHECK_EQ(Smi::FromInt(24), obj->GetProperty(prop_namex));
+ CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name));
+ CHECK_EQ(Smi::FromInt(24), obj->GetProperty(*prop_namex));
+ }
CHECK(Heap::CollectGarbage(free_bytes, NEW_SPACE));
- // function should be alive, func_name might be invalid after GC
- func_name = String::cast(Heap::LookupAsciiSymbol("theFunction"));
- CHECK(Top::context()->global()->HasLocalProperty(func_name));
- // check function is retained
- Object* func_value = Top::context()->global()->GetProperty(func_name);
+ // Function should be alive.
+ CHECK(Top::context()->global()->HasLocalProperty(*name));
+ // Check function is retained.
+ Object* func_value = Top::context()->global()->GetProperty(*name);
CHECK(func_value->IsJSFunction());
- // old function pointer may not be valid
- function = JSFunction::cast(func_value);
+ Handle<JSFunction> function(JSFunction::cast(func_value));
- // allocate another object, make it reachable from global
- obj = JSObject::cast(Heap::AllocateJSObject(function));
- String* obj_name = String::cast(Heap::LookupAsciiSymbol("theObject"));
- Top::context()->global()->SetProperty(obj_name, obj, NONE);
- // set property
- prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot"));
- obj->SetProperty(prop_name, Smi::FromInt(23), NONE);
+ {
+ HandleScope inner_scope;
+ // Allocate another object, make it reachable from global.
+ Handle<JSObject> obj = Factory::NewJSObject(function);
+ Top::context()->global()->SetProperty(*obj_name, *obj, NONE);
+ obj->SetProperty(*prop_name, Smi::FromInt(23), NONE);
+ }
- // after gc, it should survive
+ // After gc, it should survive.
CHECK(Heap::CollectGarbage(free_bytes, NEW_SPACE));
- obj_name = String::cast(Heap::LookupAsciiSymbol("theObject"));
- CHECK(Top::context()->global()->HasLocalProperty(obj_name));
- CHECK(Top::context()->global()->GetProperty(obj_name)->IsJSObject());
- obj = JSObject::cast(Top::context()->global()->GetProperty(obj_name));
- prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot"));
- CHECK_EQ(Smi::FromInt(23), obj->GetProperty(prop_name));
+ CHECK(Top::context()->global()->HasLocalProperty(*obj_name));
+ CHECK(Top::context()->global()->GetProperty(*obj_name)->IsJSObject());
+ JSObject* obj =
+ JSObject::cast(Top::context()->global()->GetProperty(*obj_name));
+ CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name));
}
static void VerifyStringAllocation(const char* string) {
- String* s = String::cast(Heap::AllocateStringFromUtf8(CStrVector(string)));
+ v8::HandleScope scope;
+ Handle<String> s = Factory::NewStringFromUtf8(CStrVector(string));
CHECK_EQ(StrLength(string), s->length());
for (int index = 0; index < s->length(); index++) {
- CHECK_EQ(static_cast<uint16_t>(string[index]), s->Get(index)); }
+ CHECK_EQ(static_cast<uint16_t>(string[index]), s->Get(index));
+ }
}
@@ -291,14 +285,23 @@
TEST(GlobalHandles) {
InitializeVM();
- Object* i = Heap::AllocateStringFromAscii(CStrVector("fisk"));
- Object* u = Heap::AllocateHeapNumber(1.12344);
+ Handle<Object> h1;
+ Handle<Object> h2;
+ Handle<Object> h3;
+ Handle<Object> h4;
- Handle<Object> h1 = GlobalHandles::Create(i);
- Handle<Object> h2 = GlobalHandles::Create(u);
- Handle<Object> h3 = GlobalHandles::Create(i);
- Handle<Object> h4 = GlobalHandles::Create(u);
+ {
+ HandleScope scope;
+ Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk"));
+ Handle<Object> u = Factory::NewNumber(1.12344);
+
+ h1 = GlobalHandles::Create(*i);
+ h2 = GlobalHandles::Create(*u);
+ h3 = GlobalHandles::Create(*i);
+ h4 = GlobalHandles::Create(*u);
+ }
+
// after gc, it should survive
CHECK(Heap::CollectGarbage(0, NEW_SPACE));
@@ -331,12 +334,19 @@
WeakPointerCleared = false;
- Object* i = Heap::AllocateStringFromAscii(CStrVector("fisk"));
- Object* u = Heap::AllocateHeapNumber(1.12344);
+ Handle<Object> h1;
+ Handle<Object> h2;
- Handle<Object> h1 = GlobalHandles::Create(i);
- Handle<Object> h2 = GlobalHandles::Create(u);
+ {
+ HandleScope scope;
+ Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk"));
+ Handle<Object> u = Factory::NewNumber(1.12344);
+
+ h1 = GlobalHandles::Create(*i);
+ h2 = GlobalHandles::Create(*u);
+ }
+
GlobalHandles::MakeWeak(h2.location(),
reinterpret_cast<void*>(1234),
&TestWeakGlobalHandleCallback);
@@ -361,12 +371,19 @@
WeakPointerCleared = false;
- Object* i = Heap::AllocateStringFromAscii(CStrVector("fisk"));
- Object* u = Heap::AllocateHeapNumber(1.12344);
+ Handle<Object> h1;
+ Handle<Object> h2;
- Handle<Object> h1 = GlobalHandles::Create(i);
- Handle<Object> h2 = GlobalHandles::Create(u);
+ {
+ HandleScope scope;
+ Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk"));
+ Handle<Object> u = Factory::NewNumber(1.12344);
+
+ h1 = GlobalHandles::Create(*i);
+ h2 = GlobalHandles::Create(*u);
+ }
+
CHECK(Heap::CollectGarbage(0, OLD_POINTER_SPACE));
CHECK(Heap::CollectGarbage(0, NEW_SPACE));
// Make sure the object is promoted.
@@ -401,9 +418,15 @@
WeakPointerCleared = false;
- Object* i = Heap::AllocateStringFromAscii(CStrVector("fisk"));
- Handle<Object> h = GlobalHandles::Create(i);
+ Handle<Object> h;
+ {
+ HandleScope scope;
+
+ Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk"));
+ h = GlobalHandles::Create(*i);
+ }
+
GlobalHandles::MakeWeak(h.location(),
reinterpret_cast<void*>(1234),
&TestDeleteWeakGlobalHandleCallback);
@@ -509,24 +532,20 @@
InitializeVM();
v8::HandleScope sc;
- String* name = String::cast(Heap::LookupAsciiSymbol("theFunction"));
- SharedFunctionInfo* function_share =
- SharedFunctionInfo::cast(Heap::AllocateSharedFunctionInfo(name));
- JSFunction* function =
- JSFunction::cast(Heap::AllocateFunction(*Top::function_map(),
- function_share,
- Heap::undefined_value()));
- Map* initial_map =
- Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize));
- function->set_initial_map(initial_map);
+ Handle<String> name = Factory::LookupAsciiSymbol("theFunction");
+ Handle<JSFunction> function =
+ Factory::NewFunction(name, Factory::undefined_value());
+ Handle<Map> initial_map =
+ Factory::NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
+ function->set_initial_map(*initial_map);
- String* prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot"));
- JSObject* obj = JSObject::cast(Heap::AllocateJSObject(function));
- obj->SetProperty(prop_name, Smi::FromInt(23), NONE);
- CHECK_EQ(Smi::FromInt(23), obj->GetProperty(prop_name));
+ Handle<String> prop_name = Factory::LookupAsciiSymbol("theSlot");
+ Handle<JSObject> obj = Factory::NewJSObject(function);
+ obj->SetProperty(*prop_name, Smi::FromInt(23), NONE);
+ CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name));
// Check that we can add properties to function objects.
- function->SetProperty(prop_name, Smi::FromInt(24), NONE);
- CHECK_EQ(Smi::FromInt(24), function->GetProperty(prop_name));
+ function->SetProperty(*prop_name, Smi::FromInt(24), NONE);
+ CHECK_EQ(Smi::FromInt(24), function->GetProperty(*prop_name));
}
@@ -534,64 +553,64 @@
InitializeVM();
v8::HandleScope sc;
- JSFunction* constructor =
- JSFunction::cast(
- Top::context()->global()->GetProperty(String::cast(
- Heap::Object_symbol())));
- JSObject* obj = JSObject::cast(Heap::AllocateJSObject(constructor));
- String* first = String::cast(Heap::LookupAsciiSymbol("first"));
- String* second = String::cast(Heap::LookupAsciiSymbol("second"));
+ String* object_symbol = String::cast(Heap::Object_symbol());
+ JSFunction* object_function =
+ JSFunction::cast(Top::context()->global()->GetProperty(object_symbol));
+ Handle<JSFunction> constructor(object_function);
+ Handle<JSObject> obj = Factory::NewJSObject(constructor);
+ Handle<String> first = Factory::LookupAsciiSymbol("first");
+ Handle<String> second = Factory::LookupAsciiSymbol("second");
// check for empty
- CHECK(!obj->HasLocalProperty(first));
+ CHECK(!obj->HasLocalProperty(*first));
// add first
- obj->SetProperty(first, Smi::FromInt(1), NONE);
- CHECK(obj->HasLocalProperty(first));
+ obj->SetProperty(*first, Smi::FromInt(1), NONE);
+ CHECK(obj->HasLocalProperty(*first));
// delete first
- CHECK(obj->DeleteProperty(first, JSObject::NORMAL_DELETION));
- CHECK(!obj->HasLocalProperty(first));
+ CHECK(obj->DeleteProperty(*first, JSObject::NORMAL_DELETION));
+ CHECK(!obj->HasLocalProperty(*first));
// add first and then second
- obj->SetProperty(first, Smi::FromInt(1), NONE);
- obj->SetProperty(second, Smi::FromInt(2), NONE);
- CHECK(obj->HasLocalProperty(first));
- CHECK(obj->HasLocalProperty(second));
+ obj->SetProperty(*first, Smi::FromInt(1), NONE);
+ obj->SetProperty(*second, Smi::FromInt(2), NONE);
+ CHECK(obj->HasLocalProperty(*first));
+ CHECK(obj->HasLocalProperty(*second));
// delete first and then second
- CHECK(obj->DeleteProperty(first, JSObject::NORMAL_DELETION));
- CHECK(obj->HasLocalProperty(second));
- CHECK(obj->DeleteProperty(second, JSObject::NORMAL_DELETION));
- CHECK(!obj->HasLocalProperty(first));
- CHECK(!obj->HasLocalProperty(second));
+ CHECK(obj->DeleteProperty(*first, JSObject::NORMAL_DELETION));
+ CHECK(obj->HasLocalProperty(*second));
+ CHECK(obj->DeleteProperty(*second, JSObject::NORMAL_DELETION));
+ CHECK(!obj->HasLocalProperty(*first));
+ CHECK(!obj->HasLocalProperty(*second));
// add first and then second
- obj->SetProperty(first, Smi::FromInt(1), NONE);
- obj->SetProperty(second, Smi::FromInt(2), NONE);
- CHECK(obj->HasLocalProperty(first));
- CHECK(obj->HasLocalProperty(second));
+ obj->SetProperty(*first, Smi::FromInt(1), NONE);
+ obj->SetProperty(*second, Smi::FromInt(2), NONE);
+ CHECK(obj->HasLocalProperty(*first));
+ CHECK(obj->HasLocalProperty(*second));
// delete second and then first
- CHECK(obj->DeleteProperty(second, JSObject::NORMAL_DELETION));
- CHECK(obj->HasLocalProperty(first));
- CHECK(obj->DeleteProperty(first, JSObject::NORMAL_DELETION));
- CHECK(!obj->HasLocalProperty(first));
- CHECK(!obj->HasLocalProperty(second));
+ CHECK(obj->DeleteProperty(*second, JSObject::NORMAL_DELETION));
+ CHECK(obj->HasLocalProperty(*first));
+ CHECK(obj->DeleteProperty(*first, JSObject::NORMAL_DELETION));
+ CHECK(!obj->HasLocalProperty(*first));
+ CHECK(!obj->HasLocalProperty(*second));
// check string and symbol match
static const char* string1 = "fisk";
- String* s1 =
- String::cast(Heap::AllocateStringFromAscii(CStrVector(string1)));
- obj->SetProperty(s1, Smi::FromInt(1), NONE);
- CHECK(obj->HasLocalProperty(String::cast(Heap::LookupAsciiSymbol(string1))));
+ Handle<String> s1 = Factory::NewStringFromAscii(CStrVector(string1));
+ obj->SetProperty(*s1, Smi::FromInt(1), NONE);
+ Handle<String> s1_symbol = Factory::LookupAsciiSymbol(string1);
+ CHECK(obj->HasLocalProperty(*s1_symbol));
// check symbol and string match
static const char* string2 = "fugl";
- String* s2 = String::cast(Heap::LookupAsciiSymbol(string2));
- obj->SetProperty(s2, Smi::FromInt(1), NONE);
- CHECK(obj->HasLocalProperty(
- String::cast(Heap::AllocateStringFromAscii(CStrVector(string2)))));
+ Handle<String> s2_symbol = Factory::LookupAsciiSymbol(string2);
+ obj->SetProperty(*s2_symbol, Smi::FromInt(1), NONE);
+ Handle<String> s2 = Factory::NewStringFromAscii(CStrVector(string2));
+ CHECK(obj->HasLocalProperty(*s2));
}
@@ -599,25 +618,22 @@
InitializeVM();
v8::HandleScope sc;
- String* name = String::cast(Heap::LookupAsciiSymbol("theFunction"));
- SharedFunctionInfo* function_share =
- SharedFunctionInfo::cast(Heap::AllocateSharedFunctionInfo(name));
- JSFunction* function =
- JSFunction::cast(Heap::AllocateFunction(*Top::function_map(),
- function_share,
- Heap::undefined_value()));
- Map* initial_map =
- Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize));
- function->set_initial_map(initial_map);
- String* prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot"));
- JSObject* obj = JSObject::cast(Heap::AllocateJSObject(function));
+ Handle<String> name = Factory::LookupAsciiSymbol("theFunction");
+ Handle<JSFunction> function =
+ Factory::NewFunction(name, Factory::undefined_value());
+ Handle<Map> initial_map =
+ Factory::NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
+ function->set_initial_map(*initial_map);
+ Handle<String> prop_name = Factory::LookupAsciiSymbol("theSlot");
+ Handle<JSObject> obj = Factory::NewJSObject(function);
+
// Set a propery
- obj->SetProperty(prop_name, Smi::FromInt(23), NONE);
- CHECK_EQ(Smi::FromInt(23), obj->GetProperty(prop_name));
+ obj->SetProperty(*prop_name, Smi::FromInt(23), NONE);
+ CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name));
// Check the map has changed
- CHECK(initial_map != obj->map());
+ CHECK(*initial_map != obj->map());
}
@@ -625,12 +641,13 @@
InitializeVM();
v8::HandleScope sc;
- String* name = String::cast(Heap::LookupAsciiSymbol("Array"));
- JSFunction* function =
- JSFunction::cast(Top::context()->global()->GetProperty(name));
+ Handle<String> name = Factory::LookupAsciiSymbol("Array");
+ Handle<JSFunction> function = Handle<JSFunction>(
+ JSFunction::cast(Top::context()->global()->GetProperty(*name)));
// Allocate the object.
- JSArray* array = JSArray::cast(Heap::AllocateJSObject(function));
+ Handle<JSObject> object = Factory::NewJSObject(function);
+ Handle<JSArray> array = Handle<JSArray>::cast(object);
array->Initialize(0);
// Set array length to 0.
@@ -639,27 +656,27 @@
CHECK(array->HasFastElements()); // Must be in fast mode.
// array[length] = name.
- array->SetElement(0, name);
+ array->SetElement(0, *name);
CHECK_EQ(Smi::FromInt(1), array->length());
- CHECK_EQ(array->GetElement(0), name);
+ CHECK_EQ(array->GetElement(0), *name);
-// Set array length with larger than smi value.
- Object* length =
- Heap::NumberFromUint32(static_cast<uint32_t>(Smi::kMaxValue) + 1);
- array->SetElementsLength(length);
+ // Set array length with larger than smi value.
+ Handle<Object> length =
+ Factory::NewNumberFromUint(static_cast<uint32_t>(Smi::kMaxValue) + 1);
+ array->SetElementsLength(*length);
uint32_t int_length = 0;
- CHECK(Array::IndexFromObject(length, &int_length));
- CHECK_EQ(length, array->length());
+ CHECK(Array::IndexFromObject(*length, &int_length));
+ CHECK_EQ(*length, array->length());
CHECK(array->HasDictionaryElements()); // Must be in slow mode.
// array[length] = name.
- array->SetElement(int_length, name);
+ array->SetElement(int_length, *name);
uint32_t new_int_length = 0;
CHECK(Array::IndexFromObject(array->length(), &new_int_length));
CHECK_EQ(static_cast<double>(int_length), new_int_length - 1);
- CHECK_EQ(array->GetElement(int_length), name);
- CHECK_EQ(array->GetElement(0), name);
+ CHECK_EQ(array->GetElement(int_length), *name);
+ CHECK_EQ(array->GetElement(0), *name);
}
@@ -667,41 +684,42 @@
InitializeVM();
v8::HandleScope sc;
- String* name = String::cast(Heap::Object_symbol());
- JSFunction* constructor =
- JSFunction::cast(Top::context()->global()->GetProperty(name));
- JSObject* obj = JSObject::cast(Heap::AllocateJSObject(constructor));
- String* first = String::cast(Heap::LookupAsciiSymbol("first"));
- String* second = String::cast(Heap::LookupAsciiSymbol("second"));
+ String* object_symbol = String::cast(Heap::Object_symbol());
+ JSFunction* object_function =
+ JSFunction::cast(Top::context()->global()->GetProperty(object_symbol));
+ Handle<JSFunction> constructor(object_function);
+ Handle<JSObject> obj = Factory::NewJSObject(constructor);
+ Handle<String> first = Factory::LookupAsciiSymbol("first");
+ Handle<String> second = Factory::LookupAsciiSymbol("second");
- obj->SetProperty(first, Smi::FromInt(1), NONE);
- obj->SetProperty(second, Smi::FromInt(2), NONE);
+ obj->SetProperty(*first, Smi::FromInt(1), NONE);
+ obj->SetProperty(*second, Smi::FromInt(2), NONE);
- obj->SetElement(0, first);
- obj->SetElement(1, second);
+ obj->SetElement(0, *first);
+ obj->SetElement(1, *second);
// Make the clone.
- JSObject* clone = JSObject::cast(Heap::CopyJSObject(obj));
- CHECK(clone != obj);
+ Handle<JSObject> clone = Copy(obj);
+ CHECK(!clone.is_identical_to(obj));
CHECK_EQ(obj->GetElement(0), clone->GetElement(0));
CHECK_EQ(obj->GetElement(1), clone->GetElement(1));
- CHECK_EQ(obj->GetProperty(first), clone->GetProperty(first));
- CHECK_EQ(obj->GetProperty(second), clone->GetProperty(second));
+ CHECK_EQ(obj->GetProperty(*first), clone->GetProperty(*first));
+ CHECK_EQ(obj->GetProperty(*second), clone->GetProperty(*second));
// Flip the values.
- clone->SetProperty(first, Smi::FromInt(2), NONE);
- clone->SetProperty(second, Smi::FromInt(1), NONE);
+ clone->SetProperty(*first, Smi::FromInt(2), NONE);
+ clone->SetProperty(*second, Smi::FromInt(1), NONE);
- clone->SetElement(0, second);
- clone->SetElement(1, first);
+ clone->SetElement(0, *second);
+ clone->SetElement(1, *first);
CHECK_EQ(obj->GetElement(1), clone->GetElement(0));
CHECK_EQ(obj->GetElement(0), clone->GetElement(1));
- CHECK_EQ(obj->GetProperty(second), clone->GetProperty(first));
- CHECK_EQ(obj->GetProperty(first), clone->GetProperty(second));
+ CHECK_EQ(obj->GetProperty(*second), clone->GetProperty(*first));
+ CHECK_EQ(obj->GetProperty(*first), clone->GetProperty(*second));
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698