summaryrefslogtreecommitdiffstats
path: root/libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp')
-rw-r--r--libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp b/libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp
new file mode 100644
index 00000000000..2ce7a92a62f
--- /dev/null
+++ b/libcxx/test/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp
@@ -0,0 +1,57 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <ios>
+
+// template <class charT, class traits> class basic_ios
+
+// void set_rdbuf(basic_streambuf<charT, traits>* sb);
+
+#include <ios>
+#include <streambuf>
+#include <cassert>
+
+struct testbuf
+ : public std::streambuf
+{
+};
+
+struct testios
+ : public std::ios
+{
+ testios(std::streambuf* p) : std::ios(p) {}
+ void set_rdbuf(std::streambuf* x) {std::ios::set_rdbuf(x);}
+};
+
+int main()
+{
+ testbuf sb1;
+ testbuf sb2;
+ testios ios(&sb1);
+ try
+ {
+ ios.setstate(std::ios::badbit);
+ ios.exceptions(std::ios::badbit);
+ }
+ catch (...)
+ {
+ }
+ ios.set_rdbuf(&sb2);
+ assert(ios.rdbuf() == &sb2);
+ try
+ {
+ ios.setstate(std::ios::badbit);
+ ios.exceptions(std::ios::badbit);
+ }
+ catch (...)
+ {
+ }
+ ios.set_rdbuf(0);
+ assert(ios.rdbuf() == 0);
+}
OpenPOWER on IntegriCloud