source/*: Allow copies to be made
Sources are now just reference holders so we can copy them freely.
Change-Id: I263219de83341473c333a29cf651ae82428a208a
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/source/signal.cpp b/test/source/signal.cpp
index 209f2a7..9ac0f67 100644
--- a/test/source/signal.cpp
+++ b/test/source/signal.cpp
@@ -161,6 +161,39 @@
}
};
+TEST_F(SignalMethodTest, Copy)
+{
+ EXPECT_CALL(mock, sd_event_ref(expected_event))
+ .WillOnce(Return(expected_event));
+ EXPECT_CALL(mock, sd_event_source_ref(expected_source))
+ .WillOnce(Return(expected_source));
+ auto signal2 = std::make_unique<Signal>(*signal);
+ {
+ EXPECT_CALL(mock, sd_event_ref(expected_event))
+ .WillOnce(Return(expected_event));
+ EXPECT_CALL(mock, sd_event_source_ref(expected_source))
+ .WillOnce(Return(expected_source));
+ Signal signal3(*signal);
+
+ expect_destruct();
+ EXPECT_CALL(mock, sd_event_ref(expected_event))
+ .WillOnce(Return(expected_event));
+ EXPECT_CALL(mock, sd_event_source_ref(expected_source))
+ .WillOnce(Return(expected_source));
+ *signal2 = signal3;
+
+ expect_destruct();
+ }
+
+ // Delete the original signal
+ signal2.swap(signal);
+ expect_destruct();
+ signal2.reset();
+
+ // Make sure our new copy can still access data
+ signal->set_callback(nullptr);
+}
+
TEST_F(SignalMethodTest, GetSignalSuccess)
{
const int sig = SIGTERM;