summaryrefslogtreecommitdiff
path: root/libs/iostreams/test/windows_pipe_test.cpp
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2013-08-26 08:15:55 -0400
committerAnas Nashif <anas.nashif@intel.com>2013-08-26 08:15:55 -0400
commitbb4dd8289b351fae6b55e303f189127a394a1edd (patch)
tree77c9c35a31b1459dd7988c2448e797d142530c41 /libs/iostreams/test/windows_pipe_test.cpp
parent1a78a62555be32868418fe52f8e330c9d0f95d5a (diff)
downloadboost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.gz
boost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.bz2
boost-bb4dd8289b351fae6b55e303f189127a394a1edd.zip
Imported Upstream version 1.51.0upstream/1.51.0
Diffstat (limited to 'libs/iostreams/test/windows_pipe_test.cpp')
-rw-r--r--libs/iostreams/test/windows_pipe_test.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/libs/iostreams/test/windows_pipe_test.cpp b/libs/iostreams/test/windows_pipe_test.cpp
new file mode 100644
index 0000000000..b00d1b6a0d
--- /dev/null
+++ b/libs/iostreams/test/windows_pipe_test.cpp
@@ -0,0 +1,63 @@
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2004-2007 Jonathan Turkanis
+// (C) Copyright 2012 Boris Schaeling
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+// See http://www.boost.org/libs/iostreams for documentation.
+
+#include <Windows.h>
+#include <boost/iostreams/device/file_descriptor.hpp>
+#include <boost/iostreams/filtering_stream.hpp>
+#include <boost/iostreams/get.hpp>
+#include <boost/test/test_tools.hpp>
+#include <boost/test/unit_test.hpp>
+
+using namespace boost::iostreams;
+using boost::unit_test::test_suite;
+
+void read_from_file_descriptor_source_test()
+{
+ HANDLE handles[2];
+ ::CreatePipe(&handles[0], &handles[1], NULL, 0);
+
+ char buffer[2] = { 'a', 'b' };
+ DWORD written;
+ ::WriteFile(handles[1], buffer, 2, &written, NULL);
+ ::CloseHandle(handles[1]);
+
+ file_descriptor_source is(handles[0], close_handle);
+
+ BOOST_CHECK_EQUAL('a', get(is));
+ BOOST_CHECK_EQUAL('b', get(is));
+ BOOST_CHECK_EQUAL(-1, get(is));
+ BOOST_CHECK_EQUAL(-1, get(is));
+}
+
+void read_from_filtering_istream_test()
+{
+ HANDLE handles[2];
+ ::CreatePipe(&handles[0], &handles[1], NULL, 0);
+
+ char buffer[2] = { 'a', 'b' };
+ DWORD written;
+ ::WriteFile(handles[1], buffer, 2, &written, NULL);
+ ::CloseHandle(handles[1]);
+
+ file_descriptor_source source(handles[0], close_handle);
+ filtering_istream is;
+ is.push(source);
+
+ BOOST_CHECK_EQUAL('a', get(is));
+ BOOST_CHECK_EQUAL('b', get(is));
+ BOOST_CHECK_EQUAL(-1, get(is));
+ BOOST_CHECK_EQUAL(-1, get(is));
+}
+
+test_suite* init_unit_test_suite(int, char* [])
+{
+ test_suite* test = BOOST_TEST_SUITE("Windows pipe test");
+ test->add(BOOST_TEST_CASE(&read_from_file_descriptor_source_test));
+ test->add(BOOST_TEST_CASE(&read_from_filtering_istream_test));
+ return test;
+}