diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 18:46:46 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 18:46:46 +0000 |
| commit | 61b9a7258a7693d7f3674a5a1daf7b036ff1d382 (patch) | |
| tree | ec41ed70ffca97240e76f9a78bb2dedba28f310c /test/std/input.output/string.streams/stringstream.cons | |
| parent | f857581820d15e410e9945d2fcd5f7163be25a96 (diff) | |
Notes
Diffstat (limited to 'test/std/input.output/string.streams/stringstream.cons')
7 files changed, 353 insertions, 0 deletions
diff --git a/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp new file mode 100644 index 000000000000..b8905ade3408 --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// explicit basic_stringstream(ios_base::openmode which = ios_base::out|ios_base::in); + +#include <sstream> +#include <cassert> + +int main() +{ + { + std::stringstream ss; + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == ""); + } + { + std::stringstream ss(std::ios_base::in); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == ""); + } + { + std::wstringstream ss; + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L""); + } + { + std::wstringstream ss(std::ios_base::in); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L""); + } +} diff --git a/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp new file mode 100644 index 000000000000..4ae3aa6e84db --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// basic_stringstream(basic_stringstream&& rhs); + +#include <sstream> +#include <cassert> + +int main() +{ +#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + { + std::stringstream ss0(" 123 456 "); + std::stringstream ss(std::move(ss0)); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == " 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == "456 1236 "); + } + { + std::wstringstream ss0(L" 123 456 "); + std::wstringstream ss(std::move(ss0)); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L" 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == L"456 1236 "); + } +#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +} diff --git a/test/std/input.output/string.streams/stringstream.cons/move2.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/move2.pass.cpp new file mode 100644 index 000000000000..856cf3cbeafd --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/move2.pass.cpp @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// basic_stringstream(basic_stringstream&& rhs); + +#include <sstream> +#include <vector> +#include <string> +#include <cassert> + +int main() +{ +#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + std::vector<std::istringstream> vecis; + vecis.push_back(std::istringstream()); + vecis.back().str("hub started at [00 6b 8b 45 69]"); + vecis.push_back(std::istringstream()); + vecis.back().str("hub started at [00 6b 8b 45 69]"); + for (int n = 0; n < vecis.size(); n++) + { + assert(vecis[n].str().size() == 31); + vecis[n].seekg(0, std::ios_base::beg); + assert(vecis[n].str().size() == 31); + } +#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +} diff --git a/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp new file mode 100644 index 000000000000..3776f17f5304 --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// explicit basic_stringstream(const basic_string<charT,traits,Allocator>& str, +// ios_base::openmode which = ios_base::out|ios_base::in); + +#include <sstream> +#include <cassert> + +int main() +{ + { + std::stringstream ss(" 123 456 "); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == " 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == "456 1236 "); + } + { + std::wstringstream ss(L" 123 456 "); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L" 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == L"456 1236 "); + } +} diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp new file mode 100644 index 000000000000..95599dd254e9 --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// void swap(basic_stringstream& rhs); + +#include <sstream> +#include <cassert> + +int main() +{ + { + std::stringstream ss0(" 123 456 "); + std::stringstream ss; + ss.swap(ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == " 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == "456 1236 "); + ss0 << i << ' ' << 123; + assert(ss0.str() == "456 123"); + } + { + std::wstringstream ss0(L" 123 456 "); + std::wstringstream ss; + ss.swap(ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L" 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == L"456 1236 "); + ss0 << i << ' ' << 123; + assert(ss0.str() == L"456 123"); + } +} diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp new file mode 100644 index 000000000000..ccaf72d7e550 --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp @@ -0,0 +1,54 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// basic_stringstream& operator=(basic_stringstream&& rhs); + +#include <sstream> +#include <cassert> + +int main() +{ +#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + { + std::stringstream ss0(" 123 456 "); + std::stringstream ss; + ss = std::move(ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == " 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == "456 1236 "); + } + { + std::wstringstream ss0(L" 123 456 "); + std::wstringstream ss; + ss = std::move(ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L" 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == L"456 1236 "); + } +#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +} diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp new file mode 100644 index 000000000000..3ec11cd9e307 --- /dev/null +++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringstream + +// template <class charT, class traits, class Allocator> +// void +// swap(basic_stringstream<charT, traits, Allocator>& x, +// basic_stringstream<charT, traits, Allocator>& y); + +#include <sstream> +#include <cassert> + +int main() +{ + { + std::stringstream ss0(" 123 456 "); + std::stringstream ss; + swap(ss, ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == " 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == "456 1236 "); + ss0 << i << ' ' << 123; + assert(ss0.str() == "456 123"); + } + { + std::wstringstream ss0(L" 123 456 "); + std::wstringstream ss; + swap(ss, ss0); + assert(ss.rdbuf() != 0); + assert(ss.good()); + assert(ss.str() == L" 123 456 "); + int i = 0; + ss >> i; + assert(i == 123); + ss >> i; + assert(i == 456); + ss << i << ' ' << 123; + assert(ss.str() == L"456 1236 "); + ss0 << i << ' ' << 123; + assert(ss0.str() == L"456 123"); + } +} |
