]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / basic_stringbuf / cons / wchar_t / 1.cc
index 0870f9e2bfa2f17d583c19bce0e0c68bc40b5fbf..0e2c829c077f3badb5f42ccf539619ecfbeec9e3 100644 (file)
@@ -1,6 +1,6 @@
 // 2004-09-29  Paolo Carlini  <pcarlini@suse.de>
 
-// Copyright (C) 2004-2014 Free Software Foundation, Inc.
+// Copyright (C) 2004-2024 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -17,7 +17,7 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// 27.7.1.1  basic_stringbuf constructors  [lib.stringbuf.cons]
+// C++03 27.7.1.1  basic_stringbuf constructors  [lib.stringbuf.cons]
 
 #include <sstream>
 #include <testsuite_hooks.h>
 // http://gcc.gnu.org/ml/libstdc++/2004-09/msg00243.html
 void test01()
 {
-  bool test __attribute__((unused)) = true;
-
   __gnu_test::constraint_wstringbuf sbuf;
   VERIFY( sbuf.check_pointers() );
 }
 
-int main() 
+void test02()
+{
+  std::wstringbuf sbuf;
+  VERIFY( sbuf.str().empty() );
+
+  std::wstringbuf sbuf1(std::wios::in);
+  VERIFY( sbuf1.str().empty() );
+
+  const std::wstring str = L"This is my boomstick!";
+
+  std::wstringbuf sbuf2(str);
+  VERIFY( sbuf2.str() == str );
+
+  std::wstringbuf sbuf3(str, std::wios::in);
+  VERIFY( sbuf3.str() == str );
+  VERIFY( sbuf3.sgetc() == str[0] );
+  VERIFY( sbuf3.sputc(L'X') == std::wstringbuf::traits_type::eof() );
+
+  std::wstringbuf sbuf4(str, std::wios::out);
+  VERIFY( sbuf4.str() == str );
+  VERIFY( sbuf4.sputc(L'Y') == L'Y' );
+  VERIFY( sbuf4.sgetc() == std::wstringbuf::traits_type::eof() );
+
+#if __cplusplus >= 201103L
+  static_assert( ! std::is_convertible<std::wios::openmode, std::wstringbuf>(),
+                 "wstringbuf(wios::openmode) is explicit");
+
+  static_assert( ! std::is_convertible<const std::wstring&, std::wstringbuf>(),
+                 "wstringbuf(wstring, wios::openmode) is explicit");
+#endif
+}
+
+int main()
 {
   test01();
+  test02();
   return 0;
 }