Home | History | Annotate | Download | only in istreambuf.iterator_equal
      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 // bool equal(istreambuf_iterator<charT,traits>& b) const;
     15 
     16 #include <iterator>
     17 #include <sstream>
     18 #include <cassert>
     19 
     20 int main()
     21 {
     22     {
     23         std::istringstream inf1("abc");
     24         std::istringstream inf2("def");
     25         std::istreambuf_iterator<char> i1(inf1);
     26         std::istreambuf_iterator<char> i2(inf2);
     27         std::istreambuf_iterator<char> i3;
     28         std::istreambuf_iterator<char> i4;
     29         std::istreambuf_iterator<char> i5(nullptr);
     30 
     31         assert( i1.equal(i1));
     32         assert( i1.equal(i2));
     33         assert(!i1.equal(i3));
     34         assert(!i1.equal(i4));
     35         assert(!i1.equal(i5));
     36 
     37         assert( i2.equal(i1));
     38         assert( i2.equal(i2));
     39         assert(!i2.equal(i3));
     40         assert(!i2.equal(i4));
     41         assert(!i2.equal(i5));
     42 
     43         assert(!i3.equal(i1));
     44         assert(!i3.equal(i2));
     45         assert( i3.equal(i3));
     46         assert( i3.equal(i4));
     47         assert( i3.equal(i5));
     48 
     49         assert(!i4.equal(i1));
     50         assert(!i4.equal(i2));
     51         assert( i4.equal(i3));
     52         assert( i4.equal(i4));
     53         assert( i4.equal(i5));
     54 
     55         assert(!i5.equal(i1));
     56         assert(!i5.equal(i2));
     57         assert( i5.equal(i3));
     58         assert( i5.equal(i4));
     59         assert( i5.equal(i5));
     60     }
     61     {
     62         std::wistringstream inf1(L"abc");
     63         std::wistringstream inf2(L"def");
     64         std::istreambuf_iterator<wchar_t> i1(inf1);
     65         std::istreambuf_iterator<wchar_t> i2(inf2);
     66         std::istreambuf_iterator<wchar_t> i3;
     67         std::istreambuf_iterator<wchar_t> i4;
     68         std::istreambuf_iterator<wchar_t> i5(nullptr);
     69 
     70         assert( i1.equal(i1));
     71         assert( i1.equal(i2));
     72         assert(!i1.equal(i3));
     73         assert(!i1.equal(i4));
     74         assert(!i1.equal(i5));
     75 
     76         assert( i2.equal(i1));
     77         assert( i2.equal(i2));
     78         assert(!i2.equal(i3));
     79         assert(!i2.equal(i4));
     80         assert(!i2.equal(i5));
     81 
     82         assert(!i3.equal(i1));
     83         assert(!i3.equal(i2));
     84         assert( i3.equal(i3));
     85         assert( i3.equal(i4));
     86         assert( i3.equal(i5));
     87 
     88         assert(!i4.equal(i1));
     89         assert(!i4.equal(i2));
     90         assert( i4.equal(i3));
     91         assert( i4.equal(i4));
     92         assert( i4.equal(i5));
     93 
     94         assert(!i5.equal(i1));
     95         assert(!i5.equal(i2));
     96         assert( i5.equal(i3));
     97         assert( i5.equal(i4));
     98         assert( i5.equal(i5));
     99     }
    100 }
    101