diff options
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp')
-rw-r--r-- | libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp index 8e663cb4f60..6069f8e377e 100644 --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp @@ -18,6 +18,7 @@ #include <cassert> #include "min_allocator.h" +#include "test_macros.h" int main(int, char**) { @@ -77,6 +78,85 @@ int main(int, char**) assert(s == L" ghij"); } #endif +#ifndef TEST_HAS_NO_EXCEPTIONS + { + std::basic_stringbuf<char> sb("hello"); + std::basic_istream<char> is(&sb); + is.exceptions(std::ios_base::eofbit); + + std::basic_string<char> s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(!is.fail()); + assert( is.eof()); + assert(threw); + assert(s == "hello"); + } + { + std::basic_stringbuf<wchar_t> sb(L"hello"); + std::basic_istream<wchar_t> is(&sb); + is.exceptions(std::ios_base::eofbit); + + std::basic_string<wchar_t> s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert(!is.fail()); + assert( is.eof()); + assert(threw); + assert(s == L"hello"); + } + + { + std::basic_stringbuf<char> sb; + std::basic_istream<char> is(&sb); + is.exceptions(std::ios_base::failbit); + + std::basic_string<char> s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert( is.fail()); + assert( is.eof()); + assert(threw); + assert(s == ""); + } + { + std::basic_stringbuf<wchar_t> sb; + std::basic_istream<wchar_t> is(&sb); + is.exceptions(std::ios_base::failbit); + + std::basic_string<wchar_t> s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; + } + + assert(!is.bad()); + assert( is.fail()); + assert( is.eof()); + assert(threw); + assert(s == L""); + } +#endif // TEST_HAS_NO_EXCEPTIONS - return 0; + return 0; } |