From d77ed5a1a9f544285c4f6c9e43125f96d6c7ab21 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 8 Feb 2016 17:38:23 +0000 Subject: [PATCH] Clean up a test; get rid of hard-wired char/wchar_t code for template fns that take any char type. Prep work for PR#26503 llvm-svn: 260115 --- .../iostream.format/quoted.manip/quoted.pass.cpp | 151 ++++++++------------- 1 file changed, 56 insertions(+), 95 deletions(-) diff --git a/libcxx/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp b/libcxx/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp index d09b3ca..a494357 100644 --- a/libcxx/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp +++ b/libcxx/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp @@ -16,79 +16,95 @@ #include #include -#if _LIBCPP_STD_VER > 11 - -bool is_skipws ( const std::istream *is ) { - return ( is->flags() & std::ios_base::skipws ) != 0; - } +#include "test_macros.h" +#if TEST_STD_VER > 11 -bool is_skipws ( const std::wistream *is ) { - return ( is->flags() & std::ios_base::skipws ) != 0; +template +bool is_skipws ( const std::basic_istream& is ) { + return ( is.flags() & std::ios_base::skipws ) != 0; } -void both_ways ( const char *p ) { - std::string str(p); +template > +void both_ways ( const CharT *p ) { + std::basic_string str(p); auto q = std::quoted(str); - std::stringstream ss; - bool skippingws = is_skipws ( &ss ); + std::basic_stringstream ss; + bool skippingws = is_skipws ( ss ); ss << q; ss >> q; } -void round_trip ( const char *p ) { - std::stringstream ss; - bool skippingws = is_skipws ( &ss ); +template > +void round_trip ( const CharT *p ) { + std::basic_stringstream ss; + bool skippingws = is_skipws ( ss ); + ss << std::quoted(p); - std::string s; + std::basic_string s; ss >> std::quoted(s); assert ( s == p ); - assert ( skippingws == is_skipws ( &ss )); + assert ( skippingws == is_skipws ( ss )); } -void round_trip_ws ( const char *p ) { - std::stringstream ss; + +template > +void round_trip_ws ( const CharT *p ) { + std::basic_stringstream ss; std::noskipws ( ss ); - bool skippingws = is_skipws ( &ss ); + bool skippingws = is_skipws ( ss ); + ss << std::quoted(p); - std::string s; + std::basic_string s; ss >> std::quoted(s); assert ( s == p ); - assert ( skippingws == is_skipws ( &ss )); + assert ( skippingws == is_skipws ( ss )); } -void round_trip_d ( const char *p, char delim ) { - std::stringstream ss; - ss << std::quoted(p, delim); - std::string s; - ss >> std::quoted(s, delim); +template > +void round_trip_d ( const CharT *p, char delim ) { + std::basic_stringstream ss; + CharT d{delim}; + + ss << std::quoted(p, d); + std::basic_string s; + ss >> std::quoted(s, d); assert ( s == p ); } -void round_trip_e ( const char *p, char escape ) { - std::stringstream ss; - ss << std::quoted(p, '"', escape ); - std::string s; - ss >> std::quoted(s, '"', escape ); +template > +void round_trip_e ( const CharT *p, char escape ) { + std::basic_stringstream ss; + CharT e{escape}; + + ss << std::quoted(p, CharT('"'), e ); + std::basic_string s; + ss >> std::quoted(s, CharT('"'), e ); assert ( s == p ); } - -std::string quote ( const char *p, char delim='"', char escape='\\' ) { - std::stringstream ss; - ss << std::quoted(p, delim, escape); - std::string s; +template > +std::basic_string quote ( const CharT *p, char delim='"', char escape='\\' ) { + std::basic_stringstream ss; + CharT d{delim}; + CharT e{escape}; + ss << std::quoted(p, d, e); + std::basic_string s; ss >> s; // no quote return s; } -std::string unquote ( const char *p, char delim='"', char escape='\\' ) { - std::stringstream ss; +template > +std::basic_string unquote ( const CharT *p, char delim='"', char escape='\\' ) { + std::basic_stringstream ss; ss << p; - std::string s; - ss >> std::quoted(s, delim, escape); + + CharT d{delim}; + CharT e{escape}; + std::basic_string s; + ss >> std::quoted(s, d, e); return s; } @@ -107,61 +123,6 @@ void test_padding () { } -void round_trip ( const wchar_t *p ) { - std::wstringstream ss; - bool skippingws = is_skipws ( &ss ); - ss << std::quoted(p); - std::wstring s; - ss >> std::quoted(s); - assert ( s == p ); - assert ( skippingws == is_skipws ( &ss )); - } - - -void round_trip_ws ( const wchar_t *p ) { - std::wstringstream ss; - std::noskipws ( ss ); - bool skippingws = is_skipws ( &ss ); - ss << std::quoted(p); - std::wstring s; - ss >> std::quoted(s); - assert ( s == p ); - assert ( skippingws == is_skipws ( &ss )); - } - -void round_trip_d ( const wchar_t *p, wchar_t delim ) { - std::wstringstream ss; - ss << std::quoted(p, delim); - std::wstring s; - ss >> std::quoted(s, delim); - assert ( s == p ); - } - -void round_trip_e ( const wchar_t *p, wchar_t escape ) { - std::wstringstream ss; - ss << std::quoted(p, wchar_t('"'), escape ); - std::wstring s; - ss >> std::quoted(s, wchar_t('"'), escape ); - assert ( s == p ); - } - - -std::wstring quote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) { - std::wstringstream ss; - ss << std::quoted(p, delim, escape); - std::wstring s; - ss >> s; // no quote - return s; -} - -std::wstring unquote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) { - std::wstringstream ss; - ss << p; - std::wstring s; - ss >> std::quoted(s, delim, escape); - return s; -} - int main() { both_ways ( "" ); // This is a compilation check -- 2.7.4