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

Fix message_lifetime unit test

parent de9c9d78
...@@ -42,14 +42,8 @@ public: ...@@ -42,14 +42,8 @@ public:
} }
behavior make_behavior() override { behavior make_behavior() override {
auto f = [](local_actor* self, const type_erased_tuple* x) { // reflecting a message increases its reference count by one
auto ptr = dynamic_cast<const detail::message_data*>(x); set_unexpected_handler(reflect_unexpected_and_quit);
CAF_REQUIRE(ptr);
CAF_CHECK_EQUAL(ptr->get_reference_count(), 2u);
self->quit();
return message::from(x);
};
set_unexpected_handler(f);
return { return {
[] { [] {
// nop // nop
...@@ -67,32 +61,31 @@ public: ...@@ -67,32 +61,31 @@ public:
// nop // nop
} }
behavior make_behavior() override; behavior make_behavior() override {
monitor(aut_);
send(aut_, msg_);
return {
[=](int a, int b, int c) {
CAF_CHECK_EQUAL(a, 1);
CAF_CHECK_EQUAL(b, 2);
CAF_CHECK_EQUAL(c, 3);
CAF_CHECK_GREATER(current_message().cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(current_message().cvals().get(), msg_.cvals().get());
},
[=](const down_msg& dm) {
CAF_CHECK_EQUAL(dm.reason, exit_reason::normal);
CAF_CHECK_EQUAL(current_message().cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(dm.source, aut_.address());
quit();
}
};
}
private: private:
actor aut_; actor aut_;
message msg_; message msg_;
}; };
behavior tester::make_behavior() {
monitor(aut_);
send(aut_, msg_);
return {
[=](int a, int b, int c) {
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_EQUAL(current_message().cvals().get(), msg_.cvals().get());
},
[=](const down_msg& dm) {
CAF_CHECK_EQUAL(dm.reason, exit_reason::normal);
CAF_CHECK_EQUAL(current_message().cvals()->get_reference_count(), 1u);
CAF_CHECK_EQUAL(dm.source, aut_.address());
quit();
}
};
}
struct fixture { struct fixture {
actor_system system; actor_system system;
...@@ -118,7 +111,6 @@ CAF_TEST(message_lifetime_in_scoped_actor) { ...@@ -118,7 +111,6 @@ CAF_TEST(message_lifetime_in_scoped_actor) {
CAF_CHECK_EQUAL(b, 2); CAF_CHECK_EQUAL(b, 2);
CAF_CHECK_EQUAL(c, 3); CAF_CHECK_EQUAL(c, 3);
CAF_CHECK_EQUAL(msg.cvals()->get_reference_count(), 2u); 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()); CAF_CHECK_EQUAL(self->current_message().cvals().get(), msg.cvals().get());
} }
); );
...@@ -128,7 +120,8 @@ CAF_TEST(message_lifetime_in_scoped_actor) { ...@@ -128,7 +120,8 @@ CAF_TEST(message_lifetime_in_scoped_actor) {
self->receive( self->receive(
[&](int& value) { [&](int& value) {
CAF_CHECK_EQUAL(msg.cvals()->get_reference_count(), 1u); 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(), CAF_CHECK_NOT_EQUAL(self->current_message().cvals().get(),
msg.cvals().get()); msg.cvals().get());
value = 10; 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