Line data Source code
1 : // Copyright (c) 2018-2023 Made to Order Software Corp. All Rights Reserved 2 : // 3 : // https://snapwebsites.org/project/snapdev 4 : // contact@m2osw.com 5 : // 6 : // This program is free software: you can redistribute it and/or modify 7 : // it under the terms of the GNU General Public License as published by 8 : // the Free Software Foundation, either version 3 of the License, or 9 : // (at your option) any later version. 10 : // 11 : // This program is distributed in the hope that it will be useful, 12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : // GNU General Public License for more details. 15 : // 16 : // You should have received a copy of the GNU General Public License 17 : // along with this program. If not, see <https://www.gnu.org/licenses/>. 18 : 19 : /** \file 20 : * \brief Verify that the safe_stream class works. 21 : * 22 : * This file implements tests for the safe_stream class to make sure that 23 : * the flags are indeed safe. 24 : */ 25 : 26 : // self 27 : // 28 : #include <snapdev/safe_stream.h> 29 : 30 : //#include <snapdev/file_contents.h> 31 : //#include <snapdev/join_strings.h> 32 : //#include <snapdev/ostream_to_buf.h> 33 : //#include <snapdev/tokenize_string.h> 34 : 35 : #include "catch_main.h" 36 : 37 : 38 : // C++ 39 : // 40 : #include <sstream> 41 : 42 : 43 : // last include 44 : // 45 : #include <snapdev/poison.h> 46 : 47 : 48 : 49 : 50 1 : CATCH_TEST_CASE("safe_stream", "[os]") 51 : { 52 1 : CATCH_START_SECTION("safe_stream: hex/oct") 53 : { 54 : { 55 1 : std::stringstream ss; 56 : 57 1 : std::ios_base::fmtflags const flags(ss.flags()); 58 : 59 : { 60 1 : snapdev::safe_stream safe(ss); 61 1 : ss << std::hex << 123 << '\n'; 62 1 : CATCH_REQUIRE("7b\n" == ss.str()); 63 1 : } 64 1 : CATCH_REQUIRE(flags == ss.flags()); 65 : 66 : { 67 1 : snapdev::safe_stream safe(ss); 68 1 : ss << std::oct << 123 << '\n'; 69 1 : CATCH_REQUIRE("7b\n173\n" == ss.str()); 70 1 : } 71 1 : CATCH_REQUIRE(flags == ss.flags()); 72 1 : } 73 : } 74 1 : CATCH_END_SECTION() 75 : 76 : // TODO: test precision, width, user defined flags... 77 1 : } 78 : 79 : 80 : 81 : // vim: ts=4 sw=4 et 82 :