summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp
diff options
context:
space:
mode:
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.cpp55
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;
}
OpenPOWER on IntegriCloud