diff options
Diffstat (limited to 'libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp')
-rw-r--r-- | libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp | 55 |
1 files changed, 48 insertions, 7 deletions
diff --git a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp index 9abe19c7c87..1cb92ea3458 100644 --- a/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp +++ b/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp @@ -9,19 +9,60 @@ // test: // template <class charT, class traits, size_t N> -// basic_ostream<charT, traits>& -// operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x); +// basic_istream<charT, traits>& +// operator>>(basic_istream<charT, traits>& is, bitset<N>& x); #include <bitset> #include <sstream> #include <cassert> +#include "test_macros.h" int main(int, char**) { - std::istringstream in("01011010"); - std::bitset<8> b; - in >> b; - assert(b.to_ulong() == 0x5A); + { + std::istringstream in("01011010"); + std::bitset<8> b; + in >> b; + assert(b.to_ulong() == 0x5A); + } +#ifndef TEST_HAS_NO_EXCEPTIONS + { + std::stringbuf sb; + std::istream is(&sb); + is.exceptions(std::ios::failbit); - return 0; + bool threw = false; + try { + std::bitset<8> b; + is >> b; + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + } + { + std::stringbuf sb; + std::istream is(&sb); + is.exceptions(std::ios::eofbit); + + bool threw = false; + try { + std::bitset<8> b; + is >> b; + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + } +#endif // TEST_HAS_NO_EXCEPTIONS + + return 0; } |