diff options
| author | Howard Hinnant <hhinnant@apple.com> | 2010-05-11 19:42:16 +0000 |
|---|---|---|
| committer | Howard Hinnant <hhinnant@apple.com> | 2010-05-11 19:42:16 +0000 |
| commit | 3e519524c118651123eecf60c2bbc5d65ad9bac3 (patch) | |
| tree | b2dd4168cfe448920a602cd7d2e40f95da187153 /libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp | |
| parent | 9132c59d43b6c590c9bb33496eebf9f192d6857a (diff) | |
| download | bcm5719-llvm-3e519524c118651123eecf60c2bbc5d65ad9bac3.tar.gz bcm5719-llvm-3e519524c118651123eecf60c2bbc5d65ad9bac3.zip | |
libcxx initial import
llvm-svn: 103490
Diffstat (limited to 'libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp')
| -rw-r--r-- | libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp b/libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp new file mode 100644 index 00000000000..0f85c0c65b1 --- /dev/null +++ b/libcxx/test/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp @@ -0,0 +1,92 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <sstream> + +// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > +// class basic_stringbuf + +// int_type pbackfail(int_type c = traits::eof()); + +#include <sstream> +#include <cassert> + +template <class CharT> +struct testbuf + : public std::basic_stringbuf<CharT> +{ + typedef std::basic_stringbuf<CharT> base; + explicit testbuf(const std::basic_string<CharT>& str, + std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) + : base(str, which) {} + + typename base::int_type + pbackfail(typename base::int_type c = base::type_traits::eof()) + {return base::pbackfail(c);} + + void pbump(int n) {base::pbump(n);} +}; + +int main() +{ + { + testbuf<char> sb("123", std::ios_base::in); + assert(sb.sgetc() == '1'); + assert(sb.snextc() == '2'); + assert(sb.snextc() == '3'); + assert(sb.sgetc() == '3'); + assert(sb.snextc() == std::char_traits<char>::eof()); + assert(sb.pbackfail('3') == '3'); + assert(sb.pbackfail('3') == std::char_traits<char>::eof()); + assert(sb.pbackfail('2') == '2'); + assert(sb.pbackfail(std::char_traits<char>::eof()) != std::char_traits<char>::eof()); + assert(sb.pbackfail(std::char_traits<char>::eof()) == std::char_traits<char>::eof()); + assert(sb.str() == "123"); + } + { + testbuf<char> sb("123"); + assert(sb.sgetc() == '1'); + assert(sb.snextc() == '2'); + assert(sb.snextc() == '3'); + assert(sb.sgetc() == '3'); + assert(sb.snextc() == std::char_traits<char>::eof()); + assert(sb.pbackfail('3') == '3'); + assert(sb.pbackfail('3') == '3'); + assert(sb.pbackfail(std::char_traits<char>::eof()) != std::char_traits<char>::eof()); + assert(sb.pbackfail(std::char_traits<char>::eof()) == std::char_traits<char>::eof()); + assert(sb.str() == "133"); + } + { + testbuf<wchar_t> sb(L"123", std::ios_base::in); + assert(sb.sgetc() == L'1'); + assert(sb.snextc() == L'2'); + assert(sb.snextc() == L'3'); + assert(sb.sgetc() == L'3'); + assert(sb.snextc() == std::char_traits<wchar_t>::eof()); + assert(sb.pbackfail(L'3') == L'3'); + assert(sb.pbackfail(L'3') == std::char_traits<wchar_t>::eof()); + assert(sb.pbackfail(L'2') == L'2'); + assert(sb.pbackfail(std::char_traits<wchar_t>::eof()) != std::char_traits<wchar_t>::eof()); + assert(sb.pbackfail(std::char_traits<wchar_t>::eof()) == std::char_traits<wchar_t>::eof()); + assert(sb.str() == L"123"); + } + { + testbuf<wchar_t> sb(L"123"); + assert(sb.sgetc() == L'1'); + assert(sb.snextc() == L'2'); + assert(sb.snextc() == L'3'); + assert(sb.sgetc() == L'3'); + assert(sb.snextc() == std::char_traits<wchar_t>::eof()); + assert(sb.pbackfail(L'3') == L'3'); + assert(sb.pbackfail(L'3') == L'3'); + assert(sb.pbackfail(std::char_traits<wchar_t>::eof()) != std::char_traits<wchar_t>::eof()); + assert(sb.pbackfail(std::char_traits<wchar_t>::eof()) == std::char_traits<wchar_t>::eof()); + assert(sb.str() == L"133"); + } +} |

