Commit 0a7c90f8 authored by Dominik Charousset's avatar Dominik Charousset

Fix message_lifetime unit test

parent de9c9d78
......@@ -42,14 +42,8 @@ public:
}
behavior make_behavior() override {
auto f = [](local_actor* self, const type_erased_tuple* x) {
auto ptr = dynamic_cast<const detail::message_data*>(x);
CAF_REQUIRE(ptr);
CAF_CHECK_EQUAL(ptr->get_reference_count(), 2u);
self->quit();
return message::from(x);
};
set_unexpected_handler(f);
// reflecting a message increases its reference count by one
set_unexpected_handler(reflect_unexpected_and_quit);
return {
[] {
// nop
......@@ -67,13 +61,7 @@ public:
// nop
}
behavior make_behavior() override;
private:
actor aut_;
message msg_;
};
behavior tester::make_behavior() {
behavior make_behavior() override {
monitor(aut_);
send(aut_, msg_);
return {
......@@ -81,7 +69,7 @@ behavior tester::make_behavior() {
CAF_CHECK_EQUAL(a, 1);
CAF_CHECK_EQUAL(b, 2);
CAF_CHECK_EQUAL(c, 3);
CAF_CHECK_EQUAL(current_message().cvals()->get_reference_count(), 2u);
CAF_CHECK_GREATER(current_message().cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(current_message().cvals().get(), msg_.cvals().get());
},
[=](const down_msg& dm) {
......@@ -91,7 +79,12 @@ behavior tester::make_behavior() {
quit();
}
};
}
}
private:
actor aut_;
message msg_;
};
struct fixture {
actor_system system;
......@@ -118,7 +111,6 @@ CAF_TEST(message_lifetime_in_scoped_actor) {
CAF_CHECK_EQUAL(b, 2);
CAF_CHECK_EQUAL(c, 3);
CAF_CHECK_EQUAL(msg.cvals()->get_reference_count(), 2u);
CAF_CHECK_EQUAL(self->current_message().cvals()->get_reference_count(), 2u);
CAF_CHECK_EQUAL(self->current_message().cvals().get(), msg.cvals().get());
}
);
......@@ -128,7 +120,8 @@ CAF_TEST(message_lifetime_in_scoped_actor) {
self->receive(
[&](int& value) {
CAF_CHECK_EQUAL(msg.cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(self->current_message().cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(self->current_message().cvals()->get_reference_count(),
1u);
CAF_CHECK_NOT_EQUAL(self->current_message().cvals().get(),
msg.cvals().get());
value = 10;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment