From aa4c2b9542afe8e060c10de372a7a9b6565739ff Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 5 Dec 2013 09:57:12 +0100 Subject: [PATCH] Add unit test for Stream::ReadLine. Fixes #5077 --- test/CMakeLists.txt | 6 +++-- test/base-stream.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 test/base-stream.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 94c13a626..baee4592b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,8 +20,9 @@ include(BoostTestTargets) add_boost_test(base SOURCES base-array.cpp base-convert.cpp base-dictionary.cpp base-fifo.cpp base-match.cpp base-netstring.cpp base-object.cpp base-serialize.cpp - base-shellescape.cpp base-stacktrace.cpp base-string.cpp base-timer.cpp - base-type.cpp base-value.cpp icinga-perfdata.cpp test.cpp + base-shellescape.cpp base-stacktrace.cpp base-stream.cpp + base-string.cpp base-timer.cpp base-type.cpp base-value.cpp + icinga-perfdata.cpp test.cpp LIBRARIES base config icinga TESTS base_array/construct base_array/getset @@ -54,6 +55,7 @@ add_boost_test(base base_shellescape/escape_basic base_shellescape/escape_quoted base_stacktrace/stacktrace + base_stream/readline_stdio base_string/construct base_string/equal base_string/clear diff --git a/test/base-stream.cpp b/test/base-stream.cpp new file mode 100644 index 000000000..36bdf8f27 --- /dev/null +++ b/test/base-stream.cpp @@ -0,0 +1,54 @@ +/****************************************************************************** + * Icinga 2 * + * Copyright (C) 2012-2013 Icinga Development Team (http://www.icinga.org/) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software Foundation * + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ******************************************************************************/ + +#include "base/stdiostream.h" +#include +#include +#include + +using namespace icinga; + +BOOST_AUTO_TEST_SUITE(base_stream) + +BOOST_AUTO_TEST_CASE(readline_stdio) +{ + std::stringstream msgbuf; + msgbuf << "Hello\nWorld\n\n"; + + StdioStream::Ptr stdstream = make_shared(&msgbuf, false); + + ReadLineContext rlc; + + String line; + BOOST_CHECK(stdstream->ReadLine(&line, rlc)); + BOOST_CHECK(line == "Hello"); + + BOOST_CHECK(stdstream->ReadLine(&line, rlc)); + BOOST_CHECK(line == "World"); + + BOOST_CHECK(stdstream->ReadLine(&line, rlc)); + BOOST_CHECK(line == ""); + + BOOST_CHECK(stdstream->ReadLine(&line, rlc)); + BOOST_CHECK(line == ""); + + stdstream->Close(); +} + +BOOST_AUTO_TEST_SUITE_END() -- 2.40.0