a58c89aa818a2c44aff1da1926721c5c2c395731
[libi2ncommon] / test / test_pipestream.cpp
1 /*
2  *  The software in this package is distributed under the GNU General
3  *  Public License version 2 (with a special exception described below).
4  *
5  *  A copy of GNU General Public License (GPL) is included in this distribution,
6  *  in the file COPYING.GPL.
7  *
8  *  As a special exception, if other files instantiate templates or use macros
9  *  or inline functions from this file, or you compile this file and link it
10  *  with other works to produce a work based on this file, this file
11  *  does not by itself cause the resulting work to be covered
12  *  by the GNU General Public License.
13  *
14  *  However the source code for this file must still be made available
15  *  in accordance with section (3) of the GNU General Public License.
16  *
17  *  This exception does not invalidate any other reasons why a work based
18  *  on this file might be covered by the GNU General Public License.
19  *
20  * @file
21  *
22  * unit tests for the module "pipestream"
23  *
24  * Copyright 2018 by Intra2net AG
25  */
26
27
28 #define BOOST_TEST_DYN_LINK
29 #include <boost/test/unit_test.hpp>
30 #include <boost/algorithm/string/replace.hpp>
31
32 #include "stringfunc.hxx"
33 #include "pipestream.hxx"
34
35 #define TO_CHARP_TOK(x) #x
36 #define TO_CHARP(x) TO_CHARP_TOK(x)
37
38 BOOST_AUTO_TEST_SUITE(pipestream)
39
40     BOOST_AUTO_TEST_SUITE(read)
41
42         # define ENOUGH_ZEROS 42
43         const char *const zero_bytes_argv [] =
44                 { "/usr/bin/head", "-c", TO_CHARP(ENOUGH_ZEROS), "/dev/zero", NULL };
45
46         BOOST_AUTO_TEST_CASE(abspath_zeros_shell_ok)
47         {
48             const std::string result =
49                     capture_exec (I2n::join_string (zero_bytes_argv, " "));
50
51             BOOST_CHECK_EQUAL(result.size (), ENOUGH_ZEROS);
52         }
53
54         BOOST_AUTO_TEST_CASE(abspath_zeros_noshell_ok)
55         {
56             const std::string result = capture_exec (zero_bytes_argv);
57
58             BOOST_CHECK_EQUAL(result.size (), ENOUGH_ZEROS);
59         }
60
61     BOOST_AUTO_TEST_SUITE_END() /* [pipestream->read] */
62
63 BOOST_AUTO_TEST_SUITE_END() /* [pipestream] */
64