ignore.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng//===----------------------------------------------------------------------===// 2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// 3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// The LLVM Compiler Infrastructure 4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// 5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// This file is distributed under the University of Illinois Open Source 6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// License. See LICENSE.TXT for details. 7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// 8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng//===----------------------------------------------------------------------===// 9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// <istream> 11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// basic_istream<charT,traits>& 13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng// ignore(streamsize n = 1, int_type delim = traits::eof()); 14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <istream> 16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <cassert> 17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtemplate <class CharT> 19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct testbuf 20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng : public std::basic_streambuf<CharT> 21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng typedef std::basic_string<CharT> string_type; 23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng typedef std::basic_streambuf<CharT> base; 24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengprivate: 25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng string_type str_; 26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengpublic: 27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng testbuf() {} 29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng testbuf(const string_type& str) 30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng : str_(str) 31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng { 32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng base::setg(const_cast<CharT*>(str_.data()), 33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng const_cast<CharT*>(str_.data()), 34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng const_cast<CharT*>(str_.data()) + str_.size()); 35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng } 36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CharT* eback() const {return base::eback();} 38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CharT* gptr() const {return base::gptr();} 39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CharT* egptr() const {return base::egptr();} 40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint main() 43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng { 45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng testbuf<char> sb(" 1\n2345\n6"); 46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std::istream is(&sb); 47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(); 48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.eof()); 49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 1); 51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(5, '\n'); 52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.eof()); 53e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 54e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 2); 55e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(15); 56e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert( is.eof()); 57e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 58e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 6); 59e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng } 60e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng { 61e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng testbuf<wchar_t> sb(L" 1\n2345\n6"); 62e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std::wistream is(&sb); 63e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(); 64e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.eof()); 65e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 66e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 1); 67e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(5, '\n'); 68e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.eof()); 69e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 70e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 2); 71e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng is.ignore(15); 72e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert( is.eof()); 73e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(!is.fail()); 74e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng assert(is.gcount() == 6); 75e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng } 76e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 77e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng