| 20 | #include <thread> |
| 21 | |
| 22 | TEST(ChanTest, PutTakeClose) { |
| 23 | dap::Chan<int> chan; |
| 24 | auto thread = std::thread([&] { |
| 25 | chan.put(10); |
| 26 | chan.put(20); |
| 27 | chan.put(30); |
| 28 | chan.close(); |
| 29 | }); |
| 30 | EXPECT_EQ(chan.take(), dap::optional<int>(10)); |
| 31 | EXPECT_EQ(chan.take(), dap::optional<int>(20)); |
| 32 | EXPECT_EQ(chan.take(), dap::optional<int>(30)); |
| 33 | EXPECT_EQ(chan.take(), dap::optional<int>()); |
| 34 | thread.join(); |
| 35 | } |