diff options
Diffstat (limited to 'src/class_linker_test.cc')
-rw-r--r-- | src/class_linker_test.cc | 14 |
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)); |