summaryrefslogtreecommitdiffstats
path: root/test/source/base.cpp
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2018-07-17 14:40:14 -0700
committerWilliam A. Kennington III <wak@google.com>2018-07-17 14:40:14 -0700
commit2d943ead4b1c160a163f284fb5b639f1f076ce49 (patch)
tree98ebe31bcb2649639ccdcb43fb3b27c4d86967e7 /test/source/base.cpp
parente3e1df0b549facf175b9201c4e945188eecaa700 (diff)
downloadsdeventplus-2d943ead4b1c160a163f284fb5b639f1f076ce49.tar.gz
sdeventplus-2d943ead4b1c160a163f284fb5b639f1f076ce49.zip
source/base: Support automatically configuring userdata
This makes callbacks work correctly as the systemd callback functions need to know where to look for the object storing the real callback.
Diffstat (limited to 'test/source/base.cpp')
-rw-r--r--test/source/base.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/test/source/base.cpp b/test/source/base.cpp
index 0ca093b..69ae8e2 100644
--- a/test/source/base.cpp
+++ b/test/source/base.cpp
@@ -65,7 +65,11 @@ class BaseTest : public testing::Test
{
EXPECT_CALL(mock, sd_event_ref(event.get()))
.WillOnce(Return(event.get()));
+ void* userdata;
+ EXPECT_CALL(mock, sd_event_source_set_userdata(source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
auto ret = std::make_unique<BaseImpl>(event, source, std::false_type());
+ EXPECT_EQ(ret.get(), userdata);
EXPECT_EQ(source, ret->get());
EXPECT_NE(&event, &ret->get_event());
EXPECT_EQ(event.get(), ret->get_event().get());
@@ -83,7 +87,11 @@ class BaseTest : public testing::Test
void empty_base(BaseImpl&& other)
{
+ void* userdata;
+ EXPECT_CALL(mock, sd_event_source_set_userdata(other.get(), testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
BaseImpl mover(std::move(other));
+ EXPECT_EQ(&mover, userdata);
EXPECT_EQ(nullptr, other.get());
EXPECT_EQ(nullptr, other.get_event().get());
EXPECT_FALSE(other.get_prepare());
@@ -111,7 +119,11 @@ TEST_F(BaseTest, NewBaseRef)
.WillOnce(Return(expected_event));
EXPECT_CALL(mock, sd_event_source_ref(expected_source))
.WillOnce(Return(expected_source));
+ void* userdata;
+ EXPECT_CALL(mock, sd_event_source_set_userdata(expected_source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
BaseImpl source(*event, expected_source);
+ EXPECT_EQ(&source, userdata);
EXPECT_EQ(expected_source, source.get());
EXPECT_NE(event.get(), &source.get_event());
EXPECT_EQ(expected_event, source.get_event().get());
@@ -124,7 +136,11 @@ TEST_F(BaseTest, NewBaseNoRef)
{
EXPECT_CALL(mock, sd_event_ref(expected_event))
.WillOnce(Return(expected_event));
+ void* userdata;
+ EXPECT_CALL(mock, sd_event_source_set_userdata(expected_source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
BaseImpl source(*event, expected_source, std::false_type());
+ EXPECT_EQ(&source, userdata);
EXPECT_EQ(expected_source, source.get());
EXPECT_NE(event.get(), &source.get_event());
EXPECT_EQ(expected_event, source.get_event().get());
@@ -138,7 +154,11 @@ TEST_F(BaseTest, MoveConstruct)
std::unique_ptr<BaseImpl> source1 = make_base(*event, expected_source);
set_prepare_placeholder(*source1);
+ void* userdata;
+ EXPECT_CALL(mock, sd_event_source_set_userdata(expected_source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
BaseImpl source2(std::move(*source1));
+ EXPECT_EQ(&source2, userdata);
EXPECT_EQ(nullptr, source1->get());
EXPECT_EQ(nullptr, source1->get_event().get());
EXPECT_FALSE(source1->get_prepare());
@@ -171,8 +191,12 @@ TEST_F(BaseTest, MoveAssignEmpty)
empty_base(std::move(*source2));
{
- testing::InSequence seq;
+ void* userdata;
+ EXPECT_CALL(mock,
+ sd_event_source_set_userdata(expected_source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
*source2 = std::move(*source1);
+ EXPECT_EQ(source2.get(), userdata);
}
EXPECT_EQ(nullptr, source1->get());
EXPECT_EQ(nullptr, source1->get_event().get());
@@ -200,7 +224,12 @@ TEST_F(BaseTest, MoveAssignExisting)
{
expect_base_destruct(*event2, expected_source2);
+ void* userdata;
+ EXPECT_CALL(mock,
+ sd_event_source_set_userdata(expected_source, testing::_))
+ .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
*source2 = std::move(*source1);
+ EXPECT_EQ(source2.get(), userdata);
}
EXPECT_EQ(nullptr, source1->get());
EXPECT_EQ(nullptr, source1->get_event().get());
OpenPOWER on IntegriCloud