]> granicus.if.org Git - icinga2/blob - test/base-fifo.cpp
Fix cookie with ActivateItems
[icinga2] / test / base-fifo.cpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #include "base/fifo.hpp"
4 #include "base/objectlock.hpp"
5 #include <BoostTestTargetConfig.h>
6
7 using namespace icinga;
8
9 BOOST_AUTO_TEST_SUITE(base_fifo)
10
11 BOOST_AUTO_TEST_CASE(construct)
12 {
13         FIFO::Ptr fifo = new FIFO();
14         BOOST_CHECK(fifo);
15         BOOST_CHECK(fifo->GetAvailableBytes() == 0);
16
17         fifo->Close();
18 }
19
20 BOOST_AUTO_TEST_CASE(io)
21 {
22         FIFO::Ptr fifo = new FIFO();
23
24         fifo->Write("hello", 5);
25         BOOST_CHECK(fifo->GetAvailableBytes() == 5);
26
27         char buffer1[2];
28         fifo->Read(buffer1, 2, true);
29         BOOST_CHECK(memcmp(buffer1, "he", 2) == 0);
30         BOOST_CHECK(fifo->GetAvailableBytes() == 3);
31
32         char buffer2[5];
33         size_t rc = fifo->Read(buffer2, 5, true);
34         BOOST_CHECK(rc == 3);
35         BOOST_CHECK(memcmp(buffer2, "llo", 3) == 0);
36         BOOST_CHECK(fifo->GetAvailableBytes() == 0);
37
38         BOOST_CHECK(!fifo->IsEof());
39
40         fifo->Close();
41 }
42
43 BOOST_AUTO_TEST_SUITE_END()