Add a testcase for setProperty

Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: Ifade8963ebc8d18dbdca46ece16800cf8ea8a6ad
diff --git a/test/test.cpp b/test/test.cpp
index 0a1fbd9..13b8934 100644
--- a/test/test.cpp
+++ b/test/test.cpp
@@ -261,6 +261,54 @@
         }
     }
 
+    // Validate the set property action.
+    {
+        ObjectPath relChangeMe{"/changeme"};
+        ObjectPath relTriggerTwo{"/trigger2"};
+        ObjectPath changeMe{root + relChangeMe};
+        ObjectPath triggerTwo{root + relTriggerTwo};
+
+        // Create an object to be updated by the set property action.
+        {
+            auto m = notify();
+            m.append(relChangeMe);
+            m.append(obj);
+            b.call(m);
+        }
+
+        // Create the triggering object.
+        {
+            auto m = notify();
+            m.append(relTriggerTwo);
+            m.append(obj);
+            b.call(m);
+        }
+
+        // Trigger and validate the change.
+        {
+            SignalQueue queue(
+                    "path='" + changeMe + "',member='PropertiesChanged'");
+            auto m = set(triggerTwo);
+            m.append("xyz.openbmc_project.Example.Iface2");
+            m.append("ExampleProperty2");
+            m.append(sdbusplus::message::variant<std::string>("yyyxxx"));
+            b.call(m);
+
+            std::string sigInterface;
+            std::map<
+                std::string,
+                sdbusplus::message::variant<std::string>> sigProperties;
+            {
+                std::vector<std::string> interfaces;
+                auto sig{queue.pop()};
+                sig.read(sigInterface);
+                assert(sigInterface == "xyz.openbmc_project.Example.Iface1");
+                sig.read(sigProperties);
+                assert(sigProperties["ExampleProperty1"] == "changed");
+            }
+        }
+    }
+
     mgr.shutdown();
     std::cout << "Success!" << std::endl;
 }