Better service notification test.

Explicitly test/show that service notifications registered for class A
are sent out when a subclass of A is registered.

Bug: 35988664
Test: hidl_test
Change-Id: Id93ad5c56bf44f537718d26f21ac396116032a98
diff --git a/test/hidl_test_client.cpp b/test/hidl_test_client.cpp
index bc87c16..9cbaa4d 100644
--- a/test/hidl_test_client.cpp
+++ b/test/hidl_test_client.cpp
@@ -194,6 +194,27 @@
     int32_t mCookie;
 };
 
+struct SimpleParent : public IParent {
+    Return<void> doGrandparent() override {
+        return Void();
+    }
+    Return<void> doParent() override {
+        return Void();
+    }
+};
+
+struct SimpleChild : public IChild {
+    Return<void> doGrandparent() override {
+        return Void();
+    }
+    Return <void> doParent() override {
+        return Void();
+    }
+    Return <void> doChild() override {
+        return Void();
+    }
+};
+
 struct Complicated : public IComplicated {
     Complicated(int32_t cookie)
         : mCookie(cookie) {
@@ -569,10 +590,10 @@
         ServiceNotification *notification = new ServiceNotification();
 
         std::string instanceName = "test-instance";
-        EXPECT_TRUE(ISimple::registerForNotifications(instanceName, notification));
+        EXPECT_TRUE(IParent::registerForNotifications(instanceName, notification));
 
-        Simple* instance = new Simple(1);
-        EXPECT_EQ(::android::OK, instance->registerAsService(instanceName));
+        EXPECT_EQ(::android::OK, (new SimpleChild())->registerAsService(instanceName));
+        EXPECT_EQ(::android::OK, (new SimpleParent())->registerAsService(instanceName));
 
         std::unique_lock<std::mutex> lock(notification->mutex);
 
@@ -580,15 +601,16 @@
                 lock,
                 std::chrono::milliseconds(2),
                 [&notification]() {
-                   return notification->getRegistrations().size() >= 1;
+                   return notification->getRegistrations().size() >= 2;
                 });
 
         std::vector<std::string> registrations = notification->getRegistrations();
 
-        EXPECT_EQ(registrations.size(), 1u);
+        EXPECT_EQ(registrations.size(), 2u);
 
         EXPECT_EQ(to_string(registrations.data(), registrations.size()),
-                  std::string("['") + Simple::descriptor + "/" + instanceName + "']");
+                  std::string("['") + IParent::descriptor + "/" + instanceName +
+                             "', '" + IParent::descriptor + "/" + instanceName + "']");
     }
 }