double.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato//===----------------------------------------------------------------------===// 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// The LLVM Compiler Infrastructure 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// 5b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang// This file is dual licensed under the MIT and the University of Illinois Open 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// Source Licenses. See LICENSE.TXT for details. 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato//===----------------------------------------------------------------------===// 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// <istream> 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// template <class charT, class traits = char_traits<charT> > 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// class basic_istream; 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato// operator>>(double& val); 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato#include <istream> 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato#include <cassert> 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratotemplate <class CharT> 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratostruct testbuf 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato : public std::basic_streambuf<CharT> 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typedef std::basic_string<CharT> string_type; 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typedef std::basic_streambuf<CharT> base; 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoprivate: 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato string_type str_; 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic: 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato testbuf() {} 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato testbuf(const string_type& str) 32b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang : str_(str) 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato base::setg(const_cast<CharT*>(str_.data()), 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato const_cast<CharT*>(str_.data()), 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato const_cast<CharT*>(str_.data()) + str_.size()); 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 39b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang CharT* eback() const {return base::eback();} 40b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang CharT* gptr() const {return base::gptr();} 41b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang CharT* egptr() const {return base::egptr();} 42b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang}; 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoint main() 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato std::istream is((std::streambuf*)0); 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato double n = 0; 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato is >> n; 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato assert(is.fail()); 51b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 52b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 53b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang testbuf<char> sb("0"); 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato std::istream is(&sb); 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato double n = 10; 56 is >> n; 57 assert(n == 0); 58 assert( is.eof()); 59 assert(!is.fail()); 60 } 61 { 62 testbuf<char> sb(" 123 "); 63 std::istream is(&sb); 64 double n = 10; 65 is >> n; 66 assert(n == 123); 67 assert(!is.eof()); 68 assert(!is.fail()); 69 } 70 { 71 testbuf<wchar_t> sb(L" -123.5 "); 72 std::wistream is(&sb); 73 double n = 10; 74 is >> n; 75 assert(n == -123.5); 76 assert(!is.eof()); 77 assert(!is.fail()); 78 } 79} 80