Home | History | Annotate | Download | only in istreambuf.iterator_op==
      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