1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/******************************************************************************
* ____ _ _____ *
* / ___| / \ | ___| C++ *
* | | / _ \ | |_ Actor *
* | |___ / ___ \| _| Framework *
* \____/_/ \_|_| *
* *
* Copyright 2011-2018 Dominik Charousset *
* *
* Distributed under the terms and conditions of the BSD 3-Clause License or *
* (at your option) under the terms and conditions of the Boost Software *
* License 1.0. See accompanying files LICENSE and LICENSE_ALTERNATIVE. *
* *
* If you did not receive a copy of the license files, see *
* http://opensource.org/licenses/BSD-3-Clause and *
* http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/
#define CAF_SUITE unit
#include "caf/unit.hpp"
#include "core-test.hpp"
#include "caf/actor_system.hpp"
#include "caf/actor_system_config.hpp"
#include "caf/event_based_actor.hpp"
#include "caf/scoped_actor.hpp"
using namespace caf;
behavior testee(event_based_actor* self) {
return {
[](add_atom) -> result<unit_t> { return unit; },
[](get_atom) -> result<void> { return {}; },
[](put_atom) -> unit_t { return unit; },
[](resolve_atom) -> void {},
[=](update_atom) -> result<unit_t> {
auto rp = self->make_response_promise<unit_t>();
rp.deliver(unit);
return rp;
},
};
}
CAF_TEST(unit_results) {
actor_system_config cfg;
actor_system sys{cfg};
scoped_actor self{sys};
auto aut = sys.spawn(testee);
message as[] = {
make_message(add_atom_v), make_message(get_atom_v),
make_message(put_atom_v), make_message(resolve_atom_v),
make_message(update_atom_v),
};
for (auto a : as) {
self->request(aut, infinite, a)
.receive(
[&] {
CAF_MESSAGE("actor under test correctly replied to " << to_string(a));
},
[&](const error&) {
CAF_FAIL("actor under test failed at input " << to_string(a));
});
}
}
|