// This file contains the main code to test the List class
//
// Copyright (c) 1994, 2014 by Aaron Bloomfield
// Released under a CC BY-SA license
//
// Revision history
// 05-07-94: Main code written
// 07-12-95: Bug updates
// 01-13-14: Modified to fit modern C++ compilers; reformatted
#include <iostream>
#include <stdio.h>
#include "list.h"
using namespace std;
int main() {
cout << "main(): started.\n";
List<int> *l = new List<int>();
int *n, i;
l->display();
i = l->size();
cout << "size(): returned " << i << endl;
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
cout << "empty() called, returned " << l->empty() << endl;
i = l->element(2);
cout << "element(): '" << 2 << "' returned: " << i << endl;
l->push (2);
l->display();
cout << "empty() called, returned " << l->empty() << endl;
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
l->push (3);
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
l->display();
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
i = l->element(2);
cout << "element(): '" << 2 << "' returned: " << i << endl;
i = l->element(4);
cout << "element(): '" << 4 << "' returned: " << i << endl;
cout << "empty() called, returned " << l->empty() << endl;
cout << endl;
l->push (4);
l->display();
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
l->push (5);
l->display();
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
l->display();
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
l->display();
cout << "empty() called, returned " << l->empty() << endl;
cout << endl;
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
i = l->size();
l->display();
n = l->head();
if ( n == NULL )
cout << "head(): returned NULL.\n";
else
cout << "head(): returned " << *n << endl;
n = l->tail();
if ( n == NULL )
cout << "tail(): returned NULL.\n";
else
cout << "tail(): returned " << *n << endl;
cout << "size(): returned " << i << endl;
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
l->display();
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
l->display();
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
l->display();
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
l->display();
cout << "empty() called, returned " << l->empty() << endl;
cout << endl;
l->push(1);
l->push(2);
l->push(3);
l->push(4);
l->display();
l->push(5);
l->display();
l->push_head(0);
l->display();
n = l->pop();
if ( n == NULL )
cout << "pop(): list is empty, pop(): returning NULL\n";
else
cout << "pop(): returning " << *n << "\n";
l->display();
n = l->pop_head();
if ( n == NULL )
cout << "pop_head(): list is empty, pop_head(): returning NULL\n";
else
cout << "pop_head(): returning " << *n << "\n";
l->display();
cout << "empty() called, returned " << l->empty() << endl;
l->clear();
cout << "clear() called.\n";
l->display();
cout << "empty() called, returned " << l->empty() << endl;
cout << "empty() called, returned " << l->empty() << endl;
l->remove(1);
l->push(1);
l->display();
l->remove(1);
l->display();
l->push(1);
l->push(2);
l->push(3);
l->push(4);
l->push(5);
l->display();
l->remove(5);
l->display();
l->remove(6);
l->display();
delete l;
cout << endl;
cout << "main(): Goodbye.\n";
return 0;
}