aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/27_io
diff options
context:
space:
mode:
authorEd Smith-Rowland <3dw4rd@verizon.net>2013-06-08 22:37:50 +0000
committerEdward Smith-Rowland <emsr@gcc.gnu.org>2013-06-08 22:37:50 +0000
commit83ac9249c8149990f17eea00c092e2ffdbb103f9 (patch)
tree2f5574e46f254c45a03ef70f1d5a43fe6b4b78fc /libstdc++-v3/testsuite/27_io
parented52a84e3ffde82c52557d0f027488d9fe69563f (diff)
downloadgcc-83ac9249c8149990f17eea00c092e2ffdbb103f9.zip
gcc-83ac9249c8149990f17eea00c092e2ffdbb103f9.tar.gz
gcc-83ac9249c8149990f17eea00c092e2ffdbb103f9.tar.bz2
Implement N3654 - Quoted Strings Library Proposal
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net> Implement N3654 - Quoted Strings Library Proposal * include/std/iomanip: Add quoted(String, Char delim, Char escape) manipulators and supporting machinery in c++1y mode. * testsuite/27_io/manipulators/standard/char/quoted.cc: New. * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: New. From-SVN: r199860
Diffstat (limited to 'libstdc++-v3/testsuite/27_io')
-rw-r--r--libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc88
-rw-r--r--libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc88
2 files changed, 176 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc b/libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
new file mode 100644
index 0000000..bcfae1e
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
@@ -0,0 +1,88 @@
+// { dg-do run }
+// { dg-options "-std=gnu++1y" }
+
+// Copyright (C) 2013 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 27.7.6 - Quoted manipulators [quoted.manip]
+
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ // Basic test from paper.
+ bool test [[gnu::unused]] = true;
+ std::stringstream ss;
+ std::string original = "foolish me";
+ std::string round_trip;
+ ss << std::quoted(original);
+ ss >> std::quoted(round_trip);
+ VERIFY( original == round_trip );
+}
+
+void
+test02()
+{
+ // Test skipws correctness.
+ bool test [[gnu::unused]] = true;
+ std::stringstream ss;
+ ss << std::quoted("Hello Goodbye") << ' ' << 1 << ' ' << 2;
+ std::string song;
+ int thing1, thing2;
+ ss >> std::quoted(song) >> thing1 >> thing2;
+ VERIFY( song == "Hello Goodbye" );
+ VERIFY( thing1 == 1 );
+ VERIFY( thing2 == 2 );
+}
+
+void
+test03()
+{
+ // Test read of unquoted string.
+ bool test [[gnu::unused]] = true;
+ std::stringstream ss;
+ ss << "Alpha Omega";
+ std::string testit;
+ ss >> std::quoted(testit);
+ VERIFY( testit == "Alpha" );
+}
+
+auto
+test04(const std::string& message)
+{
+ // Test 'const basic_string&'
+ bool test [[gnu::unused]] = true;
+ std::stringstream ss;
+ ss << "** Error: " << std::quoted(message) << " **";
+ return ss.str();
+}
+
+int
+main()
+{
+ test01();
+ test02();
+ test03();
+ auto ss = test04("My biscuits are burnin'!");
+ VERIFY( ss == "** Error: \"My biscuits are burnin'!\" **" );
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc b/libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
new file mode 100644
index 0000000..ac4e0fb
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
@@ -0,0 +1,88 @@
+// { dg-do run }
+// { dg-options "-std=gnu++1y" }
+
+// Copyright (C) 2013 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 27.7.6 - Quoted manipulators [quoted.manip]
+
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ // Basic test from paper.
+ bool test [[gnu::unused]] = true;
+ std::wstringstream ss;
+ std::wstring original = L"foolish me";
+ std::wstring round_trip;
+ ss << std::quoted(original);
+ ss >> std::quoted(round_trip);
+ VERIFY( original == round_trip );
+}
+
+void
+test02()
+{
+ // Test skipws correctness.
+ bool test [[gnu::unused]] = true;
+ std::wstringstream ss;
+ ss << std::quoted(L"Hello Goodbye") << L' ' << 1 << L' ' << 2;
+ std::wstring song;
+ int thing1, thing2;
+ ss >> std::quoted(song) >> thing1 >> thing2;
+ VERIFY( song == L"Hello Goodbye" );
+ VERIFY( thing1 == 1 );
+ VERIFY( thing2 == 2 );
+}
+
+void
+test03()
+{
+ // Test read of unquoted string.
+ bool test [[gnu::unused]] = true;
+ std::wstringstream ss;
+ ss << L"Alpha Omega";
+ std::wstring testit;
+ ss >> std::quoted(testit);
+ VERIFY( testit == L"Alpha" );
+}
+
+auto
+test04(const std::wstring& message)
+{
+ // Test 'const basic_string&'
+ bool test [[gnu::unused]] = true;
+ std::wstringstream ss;
+ ss << L"** Error: " << std::quoted(message) << L" **";
+ return ss.str();
+}
+
+int
+main()
+{
+ test01();
+ test02();
+ test03();
+ auto ss = test04(L"My biscuits are burnin'!");
+ VERIFY( ss == L"** Error: \"My biscuits are burnin'!\" **" );
+
+ return 0;
+}