diff options
Diffstat (limited to 'libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp')
-rw-r--r-- | libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp b/libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp index 6786ebf4ca0..0eaf58b69b3 100644 --- a/libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp +++ b/libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp @@ -14,6 +14,7 @@ #include <istream> #include <cassert> +#include "test_macros.h" template <class CharT> struct testbuf @@ -75,6 +76,42 @@ int main(int, char**) assert(is.eof()); assert(is.fail()); } +#ifndef TEST_HAS_NO_EXCEPTIONS + { + testbuf<char> sb(" "); + std::basic_istream<char> is(&sb); + is.exceptions(std::ios_base::eofbit); + + bool threw = false; + try { + std::ws(is); + } catch (std::ios_base::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(!is.fail()); + assert( is.eof()); + assert(threw); + } + { + testbuf<wchar_t> sb(L" "); + std::basic_istream<wchar_t> is(&sb); + is.exceptions(std::ios_base::eofbit); + + bool threw = false; + try { + std::ws(is); + } catch (std::ios_base::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(!is.fail()); + assert( is.eof()); + assert(threw); + } +#endif - return 0; + return 0; } |