// Iterator_base.C
// ----------------------------------------------------------------
// COMP 290-001: Algorithm Library Design, Lutz Kettner, 01/11/2000
// Test of the identity iterator adaptor based on the Barton Nackman trick.

#include "Iterator_base.h"
#include <assert.h>
#include <list>
#include <algorithm>

int main() {
    std::list<int> ls;
    ls.push_back(42);
    ls.push_back(43);
    ls.push_back(44);

    std::list<int> ls2( ls);
    std::reverse( ls.begin(), ls.end());

    typedef std::list<int>::iterator    Iterator;
    typedef Iterator_identity<Iterator> It_id;
    std::reverse( It_id( ls.begin()), It_id( ls.end()));
    assert( ls == ls2);

    // some tests with a random access iterator
    typedef Iterator_identity<int*> It_id2;
    int array[10];
    It_id2 k(array);
    ++k;
    k++;
    --k;
    k--;
    k+4;
    k+=4;
    4+k;
    k-=4;
    k-4;
    k-k;
    k[4];
}

// EOF //

