unsigned_long_long.pass.cpp revision 12f7f5d2475908f3553b2039b418f71036721878
129d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung//===----------------------------------------------------------------------===// 23f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song// 329d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// The LLVM Compiler Infrastructure 429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// 529d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// This file is dual licensed under the MIT and the University of Illinois Open 629d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// Source Licenses. See LICENSE.TXT for details. 729d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// 829d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung//===----------------------------------------------------------------------===// 929d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 1029d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// <ostream> 1129d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 1229d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// template <class charT, class traits = char_traits<charT> > 1329d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// class basic_ostream; 1429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 1529d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung// operator<<(unsigned long long val); 1629d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 173f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song#include <ostream> 1829d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung#include <cassert> 1929d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 2029d6fea296ebecb607525c8245a54696ad7c5db7Winson Chungtemplate <class CharT> 2129d6fea296ebecb607525c8245a54696ad7c5db7Winson Chungclass testbuf 2259e1f9a07eef87b1d287956d21b8d9c5b27faf9cWinson Chung : public std::basic_streambuf<CharT> 235b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal{ 2429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung typedef std::basic_streambuf<CharT> base; 253f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song std::basic_string<CharT> str_; 26ed66b2bac7447febe2e405b4ce725cae4f6b5988Adam Cohenpublic: 275b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal testbuf() 2829d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung { 2929d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung } 3029d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 313f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song std::basic_string<CharT> str() const 322e6da1539bc7286336b3c24d96ab76434939ce4dAdam Cohen {return std::basic_string<CharT>(base::pbase(), base::pptr());} 333f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song 342e6da1539bc7286336b3c24d96ab76434939ce4dAdam Cohenprotected: 353f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song 363f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song virtual typename base::int_type 373f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song overflow(typename base::int_type __c = base::traits_type::eof()) 383f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song { 395b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal if (__c != base::traits_type::eof()) 40ffe83f13319cdb833a25596d47cf1af098cc4c60Sunny Goyal { 41ffe83f13319cdb833a25596d47cf1af098cc4c60Sunny Goyal int n = str_.size(); 4229d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung str_.push_back(__c); 43f52abd7758b8f245522936e941336e574debabf5Sunny Goyal str_.resize(str_.capacity()); 44f52abd7758b8f245522936e941336e574debabf5Sunny Goyal base::setp(const_cast<CharT*>(str_.data()), 45f52abd7758b8f245522936e941336e574debabf5Sunny Goyal const_cast<CharT*>(str_.data() + str_.size())); 46f52abd7758b8f245522936e941336e574debabf5Sunny Goyal base::pbump(n+1); 47f52abd7758b8f245522936e941336e574debabf5Sunny Goyal } 48f52abd7758b8f245522936e941336e574debabf5Sunny Goyal return __c; 49f52abd7758b8f245522936e941336e574debabf5Sunny Goyal } 5029d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung}; 513f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song 5229d6fea296ebecb607525c8245a54696ad7c5db7Winson Chungint main() 534e8fb91cf19b7d621de8cbed2bde2c8dac734121Hyunyoung Song{ 543f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song { 553f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song std::ostream os((std::streambuf*)0); 56f17a1c9ad99d46a65de797422fd439382114b348Hyunyoung Song unsigned long long n = 0; 574b69f2ca91d63a59dfa921ba965b92de7f604f5aHyunyoung Song os << n; 584b69f2ca91d63a59dfa921ba965b92de7f604f5aHyunyoung Song assert(os.bad()); 595cd1d92f6c40b47eff12859d4e13b6431aa778c0Hyunyoung Song assert(os.fail()); 604b69f2ca91d63a59dfa921ba965b92de7f604f5aHyunyoung Song } 614b69f2ca91d63a59dfa921ba965b92de7f604f5aHyunyoung Song { 625cd1d92f6c40b47eff12859d4e13b6431aa778c0Hyunyoung Song testbuf<char> sb; 634b69f2ca91d63a59dfa921ba965b92de7f604f5aHyunyoung Song std::ostream os(&sb); 645cd1d92f6c40b47eff12859d4e13b6431aa778c0Hyunyoung Song unsigned long long n = 0; 655cd1d92f6c40b47eff12859d4e13b6431aa778c0Hyunyoung Song os << n; 663f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song assert(sb.str() == "0"); 67f52abd7758b8f245522936e941336e574debabf5Sunny Goyal } 68b99ff3e83270e113f6182e337c4f7b0223bad92bHyunyoung Song { 69b99ff3e83270e113f6182e337c4f7b0223bad92bHyunyoung Song testbuf<char> sb; 705b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal std::ostream os(&sb); 715b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal unsigned long long n = 10; 7205713af127d765cc28a8b2fd548a90347c90d6cbMichael Jurka os << n; 735b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal assert(sb.str() == "10"); 743f4e070aa58d51dd136885b4d3e2e6c5d9f93ea0Michael Jurka } 755b0e669169ea2c951bf2f6f71faf793b24db3c23Sunny Goyal { 760499834db3f9dc6fb0f5f57b5876b8503bce5189Winson Chung testbuf<char> sb; 772e6da1539bc7286336b3c24d96ab76434939ce4dAdam Cohen std::ostream os(&sb); 782e6da1539bc7286336b3c24d96ab76434939ce4dAdam Cohen hex(os); 793f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song unsigned long long n = static_cast<unsigned long long>(-10); 8029d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung os << n; 8129d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung assert(sb.str() == "fffffffffffffff6"); 8229d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung } 833f471440a8b6b71d4c15501a96befd3b715c9e8fHyunyoung Song} 8429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung