Change the event-loop restriction
It's weird but acceptable to create as many fetchers as you want.
RobotState is a common thing that multiple people want. We don't want
to support senders and watchers on the same loop (do you get your own
messages?) until there's a valid use case.
Change-Id: I215f452311d3f47ffd487d78885ae2848c6ffe9b
diff --git a/aos/events/event-loop_param_test.cc b/aos/events/event-loop_param_test.cc
index 78e744a..efac8f9 100644
--- a/aos/events/event-loop_param_test.cc
+++ b/aos/events/event-loop_param_test.cc
@@ -55,44 +55,54 @@
EXPECT_TRUE(happened);
}
-// Verify that making a fetcher and handler for "/test" dies.
-TEST_P(AbstractEventLoopTest, FetcherAndHandler) {
+// Verify that making a fetcher and watcher for "/test" succeeds.
+TEST_P(AbstractEventLoopTest, FetcherAndWatcher) {
auto loop = Make();
auto fetcher = loop->MakeFetcher<TestMessage>("/test");
- EXPECT_DEATH(loop->MakeWatcher("/test", [&](const TestMessage &) {}), "/test");
+ loop->MakeWatcher("/test", [&](const TestMessage &) {});
}
-// Verify that making 2 fetchers for "/test" fails.
+// Verify that making 2 fetchers for "/test" succeeds.
TEST_P(AbstractEventLoopTest, TwoFetcher) {
auto loop = Make();
auto fetcher = loop->MakeFetcher<TestMessage>("/test");
- EXPECT_DEATH(loop->MakeFetcher<TestMessage>("/test"), "/test");
+ auto fetcher2 = loop->MakeFetcher<TestMessage>("/test");
}
-// Verify that registering a handler twice for "/test" fails.
-TEST_P(AbstractEventLoopTest, TwoHandler) {
+// Verify that registering a watcher twice for "/test" fails.
+TEST_P(AbstractEventLoopTest, TwoWatcher) {
auto loop = Make();
loop->MakeWatcher("/test", [&](const TestMessage &) {});
- EXPECT_DEATH(loop->MakeWatcher("/test", [&](const TestMessage &) {}), "/test");
+ EXPECT_DEATH(loop->MakeWatcher("/test", [&](const TestMessage &) {}),
+ "/test");
+}
+
+// Verify that registering a watcher and a sender for "/test" fails.
+TEST_P(AbstractEventLoopTest, WatcherAndSender) {
+ auto loop = Make();
+ auto sender = loop->MakeSender<TestMessage>("/test");
+ EXPECT_DEATH(loop->MakeWatcher("/test", [&](const TestMessage &) {}),
+ "/test");
}
// Verify that Quit() works when there are multiple watchers.
-TEST_P(AbstractEventLoopTest, MultipleFetcherQuit) {
- auto loop = Make();
+TEST_P(AbstractEventLoopTest, MultipleWatcherQuit) {
+ auto loop1 = Make();
+ auto loop2 = Make();
- auto sender = loop->MakeSender<TestMessage>("/test2");
+ auto sender = loop1->MakeSender<TestMessage>("/test2");
{
auto msg = sender.MakeMessage();
msg->msg_value = 200;
msg.Send();
}
- loop->MakeWatcher("/test1", [&](const TestMessage &) {});
- loop->MakeWatcher("/test2", [&](const TestMessage &message) {
+ loop2->MakeWatcher("/test1", [&](const TestMessage &) {});
+ loop2->MakeWatcher("/test2", [&](const TestMessage &message) {
EXPECT_EQ(message.msg_value, 200);
- loop->Exit();
+ loop2->Exit();
});
- loop->Run();
+ loop2->Run();
}
// Verify that timer intervals and duration function properly.