summaryrefslogtreecommitdiff
path: root/src/class_linker_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/class_linker_test.cc')
-rw-r--r--src/class_linker_test.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/class_linker_test.cc b/src/class_linker_test.cc
index d30f4bfea5..71cb22eb82 100644
--- a/src/class_linker_test.cc
+++ b/src/class_linker_test.cc
@@ -537,26 +537,38 @@ TEST_F(ClassLinkerTest, Interfaces) {
const ClassLoader* class_loader = LoadDex("Interfaces");
Class* I = class_linker_->FindClass("LInterfaces$I;", class_loader);
Class* J = class_linker_->FindClass("LInterfaces$J;", class_loader);
+ Class* K = class_linker_->FindClass("LInterfaces$K;", class_loader);
Class* A = class_linker_->FindClass("LInterfaces$A;", class_loader);
+ Class* B = class_linker_->FindClass("LInterfaces$B;", class_loader);
EXPECT_TRUE(I->IsAssignableFrom(A));
EXPECT_TRUE(J->IsAssignableFrom(A));
+ EXPECT_TRUE(J->IsAssignableFrom(K));
+ EXPECT_TRUE(K->IsAssignableFrom(B));
+ EXPECT_TRUE(J->IsAssignableFrom(B));
Method* Ii = I->FindVirtualMethod("i", "()V");
Method* Jj1 = J->FindVirtualMethod("j1", "()V");
Method* Jj2 = J->FindVirtualMethod("j2", "()V");
+ Method* Kj1 = K->FindInterfaceMethod("j1", "()V");
+ Method* Kj2 = K->FindInterfaceMethod("j2", "()V");
+ Method* Kk = K->FindInterfaceMethod("k", "()V");
Method* Ai = A->FindVirtualMethod("i", "()V");
Method* Aj1 = A->FindVirtualMethod("j1", "()V");
Method* Aj2 = A->FindVirtualMethod("j2", "()V");
ASSERT_TRUE(Ii != NULL);
ASSERT_TRUE(Jj1 != NULL);
ASSERT_TRUE(Jj2 != NULL);
+ ASSERT_TRUE(Kj1 != NULL);
+ ASSERT_TRUE(Kj2 != NULL);
+ ASSERT_TRUE(Kk != NULL);
ASSERT_TRUE(Ai != NULL);
ASSERT_TRUE(Aj1 != NULL);
ASSERT_TRUE(Aj2 != NULL);
- ASSERT_TRUE(Ii != NULL);
EXPECT_NE(Ii, Ai);
EXPECT_NE(Jj1, Aj1);
EXPECT_NE(Jj2, Aj2);
+ EXPECT_EQ(Kj1, Jj1);
+ EXPECT_EQ(Kj2, Jj2);
EXPECT_EQ(Ai, A->FindVirtualMethodForInterface(Ii));
EXPECT_EQ(Aj1, A->FindVirtualMethodForInterface(Jj1));
EXPECT_EQ(Aj2, A->FindVirtualMethodForInterface(Jj2));