1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <iterator> 11 12 // istreambuf_iterator 13 14 // template <class charT, class traits> 15 // bool operator==(const istreambuf_iterator<charT,traits>& a, 16 // const istreambuf_iterator<charT,traits>& b); 17 18 #include <iterator> 19 #include <sstream> 20 #include <cassert> 21 22 int main() 23 { 24 { 25 std::istringstream inf1("abc"); 26 std::istringstream inf2("def"); 27 std::istreambuf_iterator<char> i1(inf1); 28 std::istreambuf_iterator<char> i2(inf2); 29 std::istreambuf_iterator<char> i3; 30 std::istreambuf_iterator<char> i4; 31 std::istreambuf_iterator<char> i5(nullptr); 32 33 assert( (i1 == i1)); 34 assert( (i1 == i2)); 35 assert(!(i1 == i3)); 36 assert(!(i1 == i4)); 37 assert(!(i1 == i5)); 38 39 assert( (i2 == i1)); 40 assert( (i2 == i2)); 41 assert(!(i2 == i3)); 42 assert(!(i2 == i4)); 43 assert(!(i2 == i5)); 44 45 assert(!(i3 == i1)); 46 assert(!(i3 == i2)); 47 assert( (i3 == i3)); 48 assert( (i3 == i4)); 49 assert( (i3 == i5)); 50 51 assert(!(i4 == i1)); 52 assert(!(i4 == i2)); 53 assert( (i4 == i3)); 54 assert( (i4 == i4)); 55 assert( (i4 == i5)); 56 57 assert(!(i5 == i1)); 58 assert(!(i5 == i2)); 59 assert( (i5 == i3)); 60 assert( (i5 == i4)); 61 assert( (i5 == i5)); 62 } 63 { 64 std::wistringstream inf1(L"abc"); 65 std::wistringstream inf2(L"def"); 66 std::istreambuf_iterator<wchar_t> i1(inf1); 67 std::istreambuf_iterator<wchar_t> i2(inf2); 68 std::istreambuf_iterator<wchar_t> i3; 69 std::istreambuf_iterator<wchar_t> i4; 70 std::istreambuf_iterator<wchar_t> i5(nullptr); 71 72 assert( (i1 == i1)); 73 assert( (i1 == i2)); 74 assert(!(i1 == i3)); 75 assert(!(i1 == i4)); 76 assert(!(i1 == i5)); 77 78 assert( (i2 == i1)); 79 assert( (i2 == i2)); 80 assert(!(i2 == i3)); 81 assert(!(i2 == i4)); 82 assert(!(i2 == i5)); 83 84 assert(!(i3 == i1)); 85 assert(!(i3 == i2)); 86 assert( (i3 == i3)); 87 assert( (i3 == i4)); 88 assert( (i3 == i5)); 89 90 assert(!(i4 == i1)); 91 assert(!(i4 == i2)); 92 assert( (i4 == i3)); 93 assert( (i4 == i4)); 94 assert( (i4 == i5)); 95 96 assert(!(i5 == i1)); 97 assert(!(i5 == i2)); 98 assert( (i5 == i3)); 99 assert( (i5 == i4)); 100 assert( (i5 == i5)); 101 } 102 } 103