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 32 assert(!(i1 != i1)); 33 assert(!(i1 != i2)); 34 assert( (i1 != i3)); 35 assert( (i1 != i4)); 36 37 assert(!(i2 != i1)); 38 assert(!(i2 != i2)); 39 assert( (i2 != i3)); 40 assert( (i2 != i4)); 41 42 assert( (i3 != i1)); 43 assert( (i3 != i2)); 44 assert(!(i3 != i3)); 45 assert(!(i3 != i4)); 46 47 assert( (i4 != i1)); 48 assert( (i4 != i2)); 49 assert(!(i4 != i3)); 50 assert(!(i4 != i4)); 51 } 52 { 53 std::wistringstream inf1(L"abc"); 54 std::wistringstream inf2(L"def"); 55 std::istreambuf_iterator<wchar_t> i1(inf1); 56 std::istreambuf_iterator<wchar_t> i2(inf2); 57 std::istreambuf_iterator<wchar_t> i3; 58 std::istreambuf_iterator<wchar_t> i4; 59 60 assert(!(i1 != i1)); 61 assert(!(i1 != i2)); 62 assert( (i1 != i3)); 63 assert( (i1 != i4)); 64 65 assert(!(i2 != i1)); 66 assert(!(i2 != i2)); 67 assert( (i2 != i3)); 68 assert( (i2 != i4)); 69 70 assert( (i3 != i1)); 71 assert( (i3 != i2)); 72 assert(!(i3 != i3)); 73 assert(!(i3 != i4)); 74 75 assert( (i4 != i1)); 76 assert( (i4 != i2)); 77 assert(!(i4 != i3)); 78 assert(!(i4 != i4)); 79 } 80 } 81