Line data Source code
1 : // Copyright (c) 2018-2024 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 "catch_main.h" 31 : 32 : 33 : // C++ 34 : // 35 : #include <sstream> 36 : 37 : 38 : // last include 39 : // 40 : #include <snapdev/poison.h> 41 : 42 : 43 : 44 : 45 1 : CATCH_TEST_CASE("safe_stream", "[stream][raii][os]") 46 : { 47 1 : CATCH_START_SECTION("safe_stream: hex/oct") 48 : { 49 : { 50 1 : std::stringstream ss; 51 : 52 1 : std::ios_base::fmtflags const flags(ss.flags()); 53 : 54 : { 55 1 : snapdev::safe_stream safe(ss); 56 1 : ss << std::hex << 123 << '\n'; 57 1 : CATCH_REQUIRE("7b\n" == ss.str()); 58 1 : } 59 1 : CATCH_REQUIRE(flags == ss.flags()); 60 : 61 : { 62 1 : snapdev::safe_stream safe(ss); 63 1 : ss << std::oct << 123 << '\n'; 64 1 : CATCH_REQUIRE("7b\n173\n" == ss.str()); 65 1 : } 66 1 : CATCH_REQUIRE(flags == ss.flags()); 67 1 : } 68 : } 69 1 : CATCH_END_SECTION() 70 : 71 : // TODO: test precision, width, user defined flags... 72 1 : } 73 : 74 : 75 : 76 : // vim: ts=4 sw=4 et 77 :