123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- // libs/io/test/quote_manip_test.cpp ----------------------------------------------- //
- // Copyright Beman Dawes 2010
- // Distributed under the Boost Software License, Version 1.0.
- // See http://www.boost.org/LICENSE_1_0.txt
- // Library home page: http://www.boost.org/libs/io
- // ---------------------------------------------------------------------------------- //
- #include <boost/io/detail/quoted_manip.hpp>
- #include <boost/detail/lightweight_test.hpp>
- #include <iostream>
- #include <sstream>
- using boost::io::quoted;
- using std::string;
- using std::wstring;
- int main()
- {
- std::wstringstream wss;
- string r; // test results
- const string s0("foo");
- {
- std::stringstream ss;
- ss << quoted(s0);
- ss >> r;
- BOOST_TEST(r == "\"foo\"");
- }
- {
- std::stringstream ss;
- ss << quoted(s0);
- ss >> quoted(r);
- BOOST_TEST(r == "foo");
- }
- const string s0s("foo bar");
- {
- std::stringstream ss;
- ss << quoted(s0s);
- ss >> r;
- BOOST_TEST(r == "\"foo");
- }
- {
- std::stringstream ss;
- ss << quoted(s0s);
- ss >> quoted(r);
- BOOST_TEST(r == "foo bar");
- }
- const string s1("foo\\bar, \" *");
- {
- std::stringstream ss;
- ss << quoted(s1);
- ss >> r;
- BOOST_TEST(r == "\"foo\\\\bar,");
- }
- {
- std::stringstream ss;
- ss << quoted("foo\\bar, \" *");
- ss >> r;
- BOOST_TEST(r == "\"foo\\\\bar,");
- }
- {
- std::stringstream ss;
- ss << quoted(s1);
- ss >> quoted(r);
- BOOST_TEST(r == s1);
- }
- {
- std::stringstream ss;
- ss << quoted(s1.c_str());
- ss >> quoted(r);
- BOOST_TEST(r == s1);
- }
- string s2("'Jack & Jill'");
- {
- std::stringstream ss;
- ss << quoted(s2, '&', '\'');
- ss >> quoted(r, '&', '\'');
- BOOST_TEST(r == s2);
- }
- wstring ws1(L"foo$bar, \" *");
- wstring wr; // test results
- {
- std::wstringstream wss;
- wss << quoted(ws1, L'$');
- wss >> quoted(wr, L'$');
- BOOST_TEST(wr == ws1);
- }
- const string s3("const string");
- {
- std::stringstream ss;
- ss << quoted(s3);
- ss >> quoted(r);
- BOOST_TEST(r == s3);
- }
- {
- // missing end delimiter test
- std::stringstream ss;
- ss << "\"abc"; // load ss with faulty quoting
- ss >> quoted(r); // this loops if istream error/eof not detected
- BOOST_TEST(r == "abc");
- }
- {
- // no initial delmiter test
- std::stringstream ss;
- ss << "abc";
- ss >> quoted(r);
- BOOST_TEST(r == "abc");
- }
- {
- // no initial delmiter, space in ss
- std::stringstream ss;
- ss << "abc def";
- ss >> quoted(r);
- BOOST_TEST(r == "abc");
- }
- // these should fail to compile because the arguments are const:
- // ss >> quoted(s1);
- // ss >> quoted("foo");
- return boost::report_errors();
- }
|