Initialize ClassLinker from image
Change-Id: Ibaf47b4181f7c6603a8b37e2eba8fa6509c927ed
diff --git a/src/class_linker_test.cc b/src/class_linker_test.cc
index 42a773c..88ddd07 100644
--- a/src/class_linker_test.cc
+++ b/src/class_linker_test.cc
@@ -134,11 +134,15 @@
Method* method = klass->GetDirectMethod(i);
EXPECT_TRUE(method != NULL);
EXPECT_EQ(klass, method->GetDeclaringClass());
+ EXPECT_TRUE(method->GetName() != NULL);
+ EXPECT_TRUE(method->GetSignature() != NULL);
}
for (size_t i = 0; i < klass->NumVirtualMethods(); i++) {
Method* method = klass->GetVirtualMethod(i);
EXPECT_TRUE(method != NULL);
+ EXPECT_TRUE(method->GetName() != NULL);
+ EXPECT_TRUE(method->GetSignature() != NULL);
}
for (size_t i = 0; i < klass->NumInstanceFields(); i++) {
@@ -146,6 +150,8 @@
EXPECT_TRUE(field != NULL);
EXPECT_FALSE(field->IsStatic());
EXPECT_EQ(klass, field->GetDeclaringClass());
+ EXPECT_TRUE(field->GetName() != NULL);
+ EXPECT_TRUE(field->GetDescriptor() != NULL);
}
for (size_t i = 0; i < klass->NumStaticFields(); i++) {
@@ -153,22 +159,20 @@
EXPECT_TRUE(field != NULL);
EXPECT_TRUE(field->IsStatic());
EXPECT_EQ(klass, field->GetDeclaringClass());
- }
+ EXPECT_TRUE(field->GetName() != NULL);
+ EXPECT_TRUE(field->GetDescriptor() != NULL);
+ }
// Confirm that all instances fields are packed together at the start
EXPECT_GE(klass->NumInstanceFields(), klass->NumReferenceInstanceFields());
for (size_t i = 0; i < klass->NumReferenceInstanceFields(); i++) {
Field* field = klass->GetInstanceField(i);
- ASSERT_TRUE(field != NULL);
- ASSERT_TRUE(field->GetDescriptor() != NULL);
Class* field_type = class_linker_->FindClass(field->GetDescriptor(), class_loader);
ASSERT_TRUE(field_type != NULL);
EXPECT_FALSE(field_type->IsPrimitive());
}
for (size_t i = klass->NumReferenceInstanceFields(); i < klass->NumInstanceFields(); i++) {
Field* field = klass->GetInstanceField(i);
- ASSERT_TRUE(field != NULL);
- ASSERT_TRUE(field->GetDescriptor() != NULL);
Class* field_type = class_linker_->FindClass(field->GetDescriptor(), class_loader);
ASSERT_TRUE(field_type != NULL);
EXPECT_TRUE(field_type->IsPrimitive());
@@ -207,7 +211,7 @@
}
TEST_F(ClassLinkerTest, FindClassNested) {
- scoped_ptr<DexFile> dex(OpenDexFileBase64(kNestedDex));
+ scoped_ptr<DexFile> dex(OpenDexFileBase64(kNestedDex, "kNestedDex"));
PathClassLoader* class_loader = AllocPathClassLoader(dex.get());
Class* outer = class_linker_->FindClass("LNested;", class_loader);
@@ -262,7 +266,7 @@
EXPECT_EQ(0U, JavaLangObject->NumInterfaces());
- scoped_ptr<DexFile> dex(OpenDexFileBase64(kMyClassDex));
+ scoped_ptr<DexFile> dex(OpenDexFileBase64(kMyClassDex, "kMyClassDex"));
PathClassLoader* class_loader = AllocPathClassLoader(dex.get());
EXPECT_TRUE(linker->FindSystemClass("LMyClass;") == NULL);
Class* MyClass = linker->FindClass("LMyClass;", class_loader);
@@ -378,8 +382,8 @@
}
TEST_F(ClassLinkerTest, TwoClassLoadersOneClass) {
- scoped_ptr<DexFile> dex_1(OpenDexFileBase64(kMyClassDex));
- scoped_ptr<DexFile> dex_2(OpenDexFileBase64(kMyClassDex));
+ scoped_ptr<DexFile> dex_1(OpenDexFileBase64(kMyClassDex, "kMyClassDex"));
+ scoped_ptr<DexFile> dex_2(OpenDexFileBase64(kMyClassDex, "kMyClassDex"));
PathClassLoader* class_loader_1 = AllocPathClassLoader(dex_1.get());
PathClassLoader* class_loader_2 = AllocPathClassLoader(dex_2.get());
Class* MyClass_1 = class_linker_->FindClass("LMyClass;", class_loader_1);
@@ -391,7 +395,7 @@
TEST_F(ClassLinkerTest, StaticFields) {
// TODO: uncomment expectations of initial values when InitializeClass works
- scoped_ptr<DexFile> dex(OpenDexFileBase64(kStatics));
+ scoped_ptr<DexFile> dex(OpenDexFileBase64(kStatics, "kStatics"));
PathClassLoader* class_loader = AllocPathClassLoader(dex.get());
Class* statics = class_linker_->FindClass("LStatics;", class_loader);
// class_linker_->InitializeClass(statics); // TODO: uncomment this
@@ -441,7 +445,7 @@
Field* s8 = statics->GetStaticField(8);
EXPECT_EQ('L', s8->GetType());
-// EXPECT_TRUE(down_cast<String*>(s8->GetObject())->Equals("android")); // TODO: uncomment this
+// EXPECT_TRUE(s8->GetObject()->AsString()->Equals("android")); // TODO: uncomment this
s8->SetObject(String::AllocFromModifiedUtf8("robot"));
Field* s9 = statics->GetStaticField(9);
@@ -457,7 +461,7 @@
EXPECT_EQ(0x34567890abcdef12LL, s5->GetLong());
EXPECT_EQ(0.75, s6->GetFloat());
EXPECT_EQ(16777219, s7->GetDouble());
- EXPECT_TRUE(down_cast<String*>(s8->GetObject())->Equals("robot"));
+ EXPECT_TRUE(s8->GetObject()->AsString()->Equals("robot"));
}
} // namespace art