Homework 1 Test Data

As the syllabus said, not every problem of every homework will necessarily be graded. For this homework, we primarily graded problems 3 and 5, although you lost 20 points if your TurnoutList in Problem 4 was not implemented using a Sequence as required, delegating as much work as possible to that Sequence. A number of people lost additional points for not meeting the requirements listed under "Turn it in" in the spec.

When ItemType in Sequence.h is a type alias for long and the following program is compiled along with Sequence.cpp, it can be run with input 1 through 81 to test your solution to Problem 3. If the #define of TESTNEW is uncommented and the program is compiled along with newSequence.cpp, it can be run with input 1 through 99 to test your solution to Problem 5. (This program uses some features of C++ we're not covering, but that's irrelevant to you.) Each passed test was worth 4/9 of a point.

// tester.cpp
// To test HW 1 Problem 5, uncomment the following line:
// #define TESTNEW

#ifdef TESTNEW
#include "newSequence.h"  // ItemType should be a type alias for long
#else
#include "Sequence.h"  // ItemType should be a type alias for long
#endif

#include <iostream>
#include <cstdlib>
#include <cassert>
#include <type_traits>
using namespace std;

const ItemType DUMMY = 123;
const ItemType DEFAULT = 0;
const ItemType ARRAY[6] = { 10, 20, 30, 40, 50, 60 };

const int SPEC_MAX = 160;

void testone(int n)
{
	Sequence s;
	switch (n)
	{
				 default: {
	    cout << "Bad argument" << endl;
			} break; case  1: {
	    assert((is_same<decltype(&Sequence::empty), bool (Sequence::*)() const>::value));
			} break; case  2: {
	    assert((is_same<decltype(&Sequence::size), int (Sequence::*)() const>::value));
			} break; case  3: {
	    assert((is_same<decltype(&Sequence::get), bool (Sequence::*)(int, ItemType&) const>::value));
			} break; case  4: {
	    assert((is_same<decltype(&Sequence::find), int (Sequence::*)(const ItemType&) const>::value));
			} break; case  5: {
	    assert(s.empty());
			} break; case  6: {
	    assert(s.size() == 0);
			} break; case  7: {
	    assert(!s.erase(0)  &&  s.size() == 0);
			} break; case  8: {
	    assert(s.remove(DEFAULT) == 0  &&  s.size() == 0);
			} break; case  9: {
	    ItemType x = DUMMY;
	    assert(!s.get(0, x));
			} break; case 10: {
	    ItemType x = DUMMY;
	    s.get(0, x);
	    assert(x == DUMMY);
			} break; case 11: {
	    assert(!s.set(0, DUMMY)  &&  s.size() == 0);
			} break; case 12: {
	    assert(s.find(DEFAULT) == -1);
			} break; case 13: {
	    assert(s.insert(0,DUMMY) == 0);
			} break; case 14: {
	    s.insert(0,DUMMY);
	    assert(! s.empty());
			} break; case 15: {
	    s.insert(0,DUMMY);
	    assert(s.size() == 1);
			} break; case 16: {
	    s.insert(0,DUMMY);
	    assert(s.find(DUMMY) == 0);
			} break; case 17: {
	    s.insert(0,DUMMY);
	    ItemType x = DEFAULT;
	    assert(s.get(0, x));
			} break; case 18: {
	    s.insert(0,DUMMY);
	    ItemType x = DEFAULT;
	    s.get(0, x);
	    assert(x == DUMMY);
			} break; case 19: {
	    s.insert(0,DUMMY);
	    assert(s.set(0, DEFAULT));
			} break; case 20: {
	    s.insert(0,DUMMY);
	    s.set(0, DEFAULT);
	    assert(s.size() == 1);
	    ItemType x = DUMMY;
	    s.get(0, x);
	    assert(x == DEFAULT);
			} break; case 21: {
	    s.insert(0,DEFAULT);
	    s.set(0, DUMMY);
	    assert(s.size() == 1);
	    ItemType x = DEFAULT;
	    s.get(0, x);
	    assert(x == DUMMY);
			} break; case 22: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    assert(! s.empty()   &&  s.size() == 2);
			} break; case 23: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(0,x);
	    assert(x == ARRAY[0]);
			} break; case 24: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(1,x);
	    assert(x == ARRAY[1]);
			} break; case 25: {
	    s.insert(0, ARRAY[0]);
	    s.insert(0, ARRAY[1]);
	    assert(s.size() == 2);
			} break; case 26: {
	    s.insert(0, ARRAY[0]);
	    s.insert(0, ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(0,x);
	    assert(x == ARRAY[1]);
			} break; case 27: {
	    s.insert(0, ARRAY[0]);
	    s.insert(0, ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(1,x);
	    assert(x == ARRAY[0]);
			} break; case 28: {
	    s.insert(0, ARRAY[3]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[0]);
	    s.insert(0, ARRAY[4]);
	    s.insert(2, ARRAY[2]);
	    assert(s.size() == 5);
			} break; case 29: {
	    s.insert(0, ARRAY[3]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[0]);
	    s.insert(0, ARRAY[4]);
	    s.insert(2, ARRAY[2]);
	    for (size_t k = 0; k < 5; k++)
	    {
		    ItemType x = DUMMY;
		    s.get(k, x);
		    assert(x == ARRAY[5-1-k]);
	    }
			} break; case 30: {
	    s.insert(0, ARRAY[3]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[0]);
	    s.insert(3, ARRAY[4]);
	    s.insert(4, ARRAY[2]);
	    for (size_t k = 0; k < 5; k++)
		    s.set(k, ARRAY[k]);
	    assert(s.size() == 5);
	    for (size_t k = 0; k < 5; k++)
	    {
		    ItemType x = DUMMY;
		    s.get(k, x);
		    assert(x == ARRAY[k]);
	    }
			} break; case 31: {
	    assert(s.insert(DUMMY) == 0);
			} break; case 32: {
	    s.insert(DUMMY);
	    assert(! s.empty());
			} break; case 33: {
	    s.insert(DUMMY);
	    assert(s.size() == 1);
			} break; case 34: {
	    s.insert(DUMMY);
	    assert(s.find(DUMMY) == 0);
			} break; case 35: {
	    s.insert(ARRAY[0]);
	    s.insert(ARRAY[1]);
	    assert(! s.empty()   &&  s.size() == 2);
			} break; case 36: {
	    s.insert(DUMMY);
	    ItemType x = DEFAULT;
	    assert(s.get(0, x));
			} break; case 37: {
	    s.insert(DUMMY);
	    ItemType x = DEFAULT;
	    s.get(0, x);
	    assert(x == DUMMY);
			} break; case 38: {
	    s.insert(ARRAY[0]);
	    s.insert(ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(0,x);
	    assert(x == ARRAY[0]);
			} break; case 39: {
	    s.insert(ARRAY[0]);
	    s.insert(ARRAY[1]);
	    ItemType x = DUMMY;
	    s.get(1,x);
	    assert(x == ARRAY[1]);
			} break; case 40: {
	    s.insert(ARRAY[1]);
	    s.insert(ARRAY[0]);
	    ItemType x = DUMMY;
	    s.get(0,x);
	    assert(x == ARRAY[0]);
			} break; case 41: {
	    s.insert(ARRAY[1]);
	    s.insert(ARRAY[0]);
	    ItemType x = DUMMY;
	    s.get(1,x);
	    assert(x == ARRAY[1]);
			} break; case 42: {
	    assert(s.insert(ARRAY[3]) == 0);
	    assert(s.insert(ARRAY[1]) == 0);
	    assert(s.insert(ARRAY[0]) == 0);
	    assert(s.insert(ARRAY[4]) == 3);
	    assert(s.insert(ARRAY[2]) == 2);
	    assert(s.size() == 5);
			} break; case 43: {
	    s.insert(ARRAY[3]);
	    s.insert(ARRAY[1]);
	    s.insert(ARRAY[0]);
	    s.insert(ARRAY[4]);
	    s.insert(ARRAY[2]);
	    for (size_t k = 0; k < 5; k++)
	    {
		    ItemType x = DUMMY;
		    s.get(k, x);
		    assert(x == ARRAY[k]);
	    }
			} break; case 44: {
	    assert(s.insert(ARRAY[2]) == 0);
	    assert(s.insert(ARRAY[1]) == 0);
	    assert(s.insert(ARRAY[0]) == 0);
	    assert(s.insert(ARRAY[1]) == 1);
	    assert(s.insert(ARRAY[1]) == 1);
	    assert(s.size() == 5);
	    ItemType x = DUMMY;
	    s.get(0, x);
	    assert(x == ARRAY[0]);
	    s.get(4, x);
	    assert(x == ARRAY[2]);
	    for (size_t k = 1; k < 4; k++)
	    {
		    x = DUMMY;
		    s.get(k, x);
		    assert(x == ARRAY[1]);
	    }
			} break; case 45: {
	    assert(s.insert(1, DUMMY) == -1  &&  s.size() == 0);
			} break; case 46: {
	    assert(s.insert(-1, DUMMY) == -1  &&  s.size() == 0);
			} break; case 47: {
	    s.insert(0, DUMMY);
	    assert(s.insert(2, DUMMY) == -1  &&  s.size() == 1);
			} break; case 48: {
	    s.insert(0, DUMMY);
	    assert(! s.erase(1)  &&  s.size() == 1);
			} break; case 49: {
	    s.insert(0, DUMMY);
	    assert(s.erase(0)  &&  s.size() == 0);
			} break; case 50: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[3]);
	    s.insert(4, ARRAY[4]);
	    assert(s.erase(4)  &&  s.size() == 4);
			} break; case 51: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[3]);
	    s.insert(4, ARRAY[4]);
	    s.erase(4);
	    ItemType x;
	    s.get(3, x);
	    assert(x == ARRAY[3]);
			} break; case 52: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[3]);
	    s.insert(4, ARRAY[4]);
	    assert(s.erase(1)  &&  s.size() == 4);
			} break; case 53: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[3]);
	    s.insert(4, ARRAY[4]);
	    s.erase(1);
	    ItemType x;
	    s.get(0, x);
	    assert(x == ARRAY[0]);
	    for (size_t k = 1; k < 4; k++)
	    {
		    s.get(k, x);
		    assert(x == ARRAY[k+1]);
	    }
			} break; case 54: {
	    s.insert(0, DUMMY);
	    assert(s.remove(DUMMY) == 1);
			} break; case 55: {
	    s.insert(0, DUMMY);
	    s.remove(DUMMY);
	    assert(s.size() == 0);
			} break; case 56: {
	    s.insert(0, ARRAY[0]);
	    assert(s.remove(ARRAY[1]) == 0);
			} break; case 57: {
	    s.insert(0, ARRAY[0]);
	    s.remove(ARRAY[1]);
	    assert(s.size() == 1);
			} break; case 58: {
	    s.insert(0, ARRAY[4]);
	    s.insert(1, ARRAY[3]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[1]);
	    s.insert(4, ARRAY[0]);
	    s.remove(ARRAY[2]);
	    ItemType x;
	    for (size_t k = 0; k < 2; k++)
	    {
		    s.get(k, x);
		    assert(x == ARRAY[5-1-k]);
	    }
	    for (size_t k = 2; k < 4; k++)
	    {
		    s.get(k, x);
		    assert(x == ARRAY[5-2-k]);
	    }
			} break; case 59: {
	    s.insert(0, ARRAY[4]);
	    s.insert(1, ARRAY[2]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[4]);
	    s.insert(4, ARRAY[2]);
	    s.insert(5, ARRAY[2]);
	    assert(s.remove(ARRAY[2]) == 4);
			} break; case 60: {
	    s.insert(0, ARRAY[4]);
	    s.insert(1, ARRAY[2]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[4]);
	    s.insert(4, ARRAY[2]);
	    s.insert(5, ARRAY[2]);
	    s.remove(ARRAY[2]);
	    assert(s.size() == 2);
			} break; case 61: {
	    s.insert(0, ARRAY[4]);
	    s.insert(1, ARRAY[2]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[4]);
	    s.insert(4, ARRAY[2]);
	    s.insert(5, ARRAY[2]);
	    s.remove(ARRAY[2]);
	    ItemType x;
	    for (size_t k = 0; k < 2; k++)
	    {
		    x = ARRAY[0];
		    s.get(k, x);
		    assert(x == ARRAY[4]);
	    }
			} break; case 62: {
	    s.insert(0, ARRAY[2]);
	    s.insert(1, ARRAY[2]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[2]);
	    s.insert(4, ARRAY[2]);
	    s.remove(ARRAY[2]);
	    assert(s.size() == 0);
			} break; case 63: {
	    s.insert(0, DUMMY);
	    s.insert(1, DUMMY);
	    s.insert(2, DUMMY);
	    ItemType x;
	    assert(! s.get(-1, x));
			} break; case 64: {
	    s.insert(0, DUMMY);
	    s.insert(1, DUMMY);
	    s.insert(2, DUMMY);
	    ItemType x = ARRAY[1];
	    s.get(-1, x);
	    assert(x == ARRAY[1]);
			} break; case 65: {
	    s.insert(0, DUMMY);
	    s.insert(1, DUMMY);
	    s.insert(2, DUMMY);
	    ItemType x;
	    assert(! s.get(3, x));
			} break; case 66: {
	    s.insert(0, DUMMY);
	    s.insert(1, DUMMY);
	    s.insert(2, DUMMY);
	    ItemType x = ARRAY[1];
	    s.get(3, x);
	    assert(x == ARRAY[1]);
			} break; case 67: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    assert(! s.set(-1, ARRAY[3]));
			} break; case 68: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.set(-1, ARRAY[3]);
	    assert(s.size() == 3);
	    for (size_t k = 0; k < 3; k++)
	    {
		    ItemType x = DUMMY;
		    assert(s.get(k,x)  &&  x == ARRAY[k]);
	    }
			} break; case 69: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    assert(! s.set(3, ARRAY[3]));
			} break; case 70: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    s.set(-1, ARRAY[3]);
	    assert(s.size() == 3);
	    for (size_t k = 0; k < 3; k++)
	    {
		    ItemType x = DUMMY;
		    assert(s.get(k,x)  &&  x == ARRAY[k]);
	    }
			} break; case 71: {
	    s.insert(DUMMY);
	    assert(s.find(DEFAULT) == -1);
			} break; case 72: {
	    s.insert(0, ARRAY[1]);
	    s.insert(1, ARRAY[4]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[4]);
	    assert(s.find(ARRAY[4]) == 1);
			} break; case 73: {
	    s.insert(0, ARRAY[1]);
	    s.insert(1, ARRAY[4]);
	    s.insert(2, ARRAY[2]);
	    s.insert(3, ARRAY[4]);
	    assert(s.find(ARRAY[3]) == -1);
			} break; case 74: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[2]);
		    s2.insert(1, ARRAY[3]);
		    s.swap(s2);
		    assert(s.size() == 2  &&  s2.size() == 2);
		    ItemType x;
		    assert(s.get(0, x)  &&  x == ARRAY[2]);
		    assert(s.get(1, x)  &&  x == ARRAY[3]);
		    assert(s2.get(0, x)  &&  x == ARRAY[0]);
		    assert(s2.get(1, x)  &&  x == ARRAY[1]);
	    }
			} break; case 75: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s.swap(s2);
		    assert(s.size() == 2  &&  s2.size() == 3);
	    }
			} break; case 76: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s.swap(s2);
		    ItemType x;
		    assert(s.get(0, x)  &&  x == ARRAY[3]);
		    assert(s.get(1, x)  &&  x == ARRAY[4]);
		    assert(s2.get(0, x)  &&  x == ARRAY[0]);
		    assert(s2.get(1, x)  &&  x == ARRAY[1]);
		    assert(s2.get(2, x)  &&  x == ARRAY[2]);
	    }
			} break; case 77: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s2.swap(s);
		    ItemType x;
		    assert(s.get(0, x)  &&  x == ARRAY[3]);
		    assert(s.get(1, x)  &&  x == ARRAY[4]);
		    assert(s2.get(0, x)  &&  x == ARRAY[0]);
		    assert(s2.get(1, x)  &&  x == ARRAY[1]);
		    assert(s2.get(2, x)  &&  x == ARRAY[2]);
	    }
			} break; case 78: {
	    for (size_t k = 0; k < SPEC_MAX; k++)
		    assert(s.insert(k, DUMMY) == k);
			} break; case 79: {
	    for (size_t k = 0; k < SPEC_MAX; k++)
		    assert(s.insert(k, DUMMY) == k);
	    assert(s.insert(SPEC_MAX, DUMMY) == -1);
			} break; case 80: {
	    for (size_t k = 0; k < SPEC_MAX-1; k++)
		    assert(s.insert(k, ARRAY[0]) == k);
	    assert(s.insert(ARRAY[1]) == SPEC_MAX-1);
			} break; case 81: {
	    for (size_t k = 0; k < SPEC_MAX-1; k++)
		    assert(s.insert(k, ARRAY[0]) == k);
	    assert(s.insert(ARRAY[2]) == SPEC_MAX-1);
	    assert(s.insert(ARRAY[1]) == -1);
#ifdef TESTNEW
			} break; case 82: {
	      // This test checked that swap executes the same number of
	      // statements no matter how many items are in the sequences
			} break; case 83: {
	    const size_t CAPACITY = 2;
	    Sequence s2(CAPACITY);
	    for (size_t k = 0; k < CAPACITY; k++)
		    assert(s2.insert(k, DUMMY) == k);
	    assert(s2.insert(CAPACITY, DUMMY) == -1);
			} break; case 84: {
	    const size_t CAPACITY = SPEC_MAX*2;
	    Sequence s2(CAPACITY);
	    for (size_t k = 0; k < CAPACITY; k++)
		    assert(s2.insert(k, DUMMY) == k);
	    assert(s2.insert(CAPACITY, DUMMY) == -1);
			} break; case 85: {
	      // This test checked that the destructor deletes the array of
	      // sequence items.
			} break; case 86: {
	      // This test checked that the copy constructor allocates a new
	      // array of sequence items.
			} break; case 87: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		Sequence s2(s);
		s2.insert(3, ARRAY[3]);
		assert(s2.size() == s.size()+1);
	    }
			} break; case 88: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		    Sequence s2(s);
		    s2.insert(0, ARRAY[3]);
		    ItemType x;
		    assert(s2.get(0, x)  &&  x == ARRAY[3]);
		    assert(s2.get(1, x)  &&  x == ARRAY[0]);
		    assert(s2.get(2, x)  &&  x == ARRAY[1]);
		    assert(s2.get(3, x)  &&  x == ARRAY[2]);
	    }
			} break; case 89: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    s.insert(2, ARRAY[2]);
	    {
		    Sequence s2(s);
		    s2.insert(0, ARRAY[3]);
		    ItemType x;
		    assert(s.get(0, x)  &&  x == ARRAY[0]);
		    assert(s.get(1, x)  &&  x == ARRAY[1]);
		    assert(s.get(2, x)  &&  x == ARRAY[2]);
	    }
			} break; case 90: {
	    {
		    Sequence s2(2);
		    s2.insert(0,DUMMY);
		    s2.insert(1,DUMMY);
		    Sequence s3(s2);
		    assert(s3.insert(0,DUMMY) == -1);
	    }
			} break; case 91: {
	      // This test checked that the assignment operator doesn't
	      // just copy a pointer.
			} break; case 92: {
	      // This test checked that the assignment operator deletes its
	      // left operand's array.
			} break; case 93: {
	    {
		    Sequence s2;
		    Sequence s3;
		    s3.insert(0, ARRAY[0]);
		    s3.insert(1, ARRAY[1]);
		    s3 = s2;
		    s2.insert(s2.size(), ARRAY[2]);
		    s3.insert(s3.size(), ARRAY[3]);
		    assert(s2.size() == 1  &&  s3.size() == 1);
		    ItemType x;
		    s2.get(0, x);
		    assert(x == ARRAY[2]);
		    s3.get(0, x);
		    assert(x == ARRAY[3]);
	    }
			} break; case 94: {
	    {
		    Sequence s2;
		    Sequence s3;
		    s3.insert(0, ARRAY[0]);
		    s3.insert(1, ARRAY[1]);
		    assert(s3.size() == 2);
		    s2 = s3;
		    assert(s2.size() == 2  &&  s3.size() == 2);
		    s2.insert(s2.size(), ARRAY[2]);
		    s3.insert(s3.size(), ARRAY[3]);
		    assert(s2.size() == 3  &&  s3.size() == 3);
		    ItemType x;
		    for (int k = 0; k < 2; k++)
		    {
			    s2.get(k, x);
			    assert(x == ARRAY[k]);
			    s3.get(k, x);
			    assert(x == ARRAY[k]);
		    }
		    s2.get(2, x);
		    assert(x == ARRAY[2]);
		    s3.get(2, x);
		    assert(x == ARRAY[3]);
	    }
			} break; case 95: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s2.insert(2, ARRAY[5]);
		    s2 = s;
		    assert(s2.size() == s.size());
		    ItemType x;
		    assert(!s2.get(2, x));
		    s2.insert(0, ARRAY[5]);
		    assert(s2.size() == s.size()+1);
	    }
			} break; case 96: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s2.insert(2, ARRAY[5]);
		    s2 = s;
		    s2.insert(0, ARRAY[5]);
		    ItemType x;
		    assert(s2.get(0, x)  &&  x == ARRAY[5]);
		    assert(s2.get(1, x)  &&  x == ARRAY[0]);
		    assert(s2.get(2, x)  &&  x == ARRAY[1]);
	    }
			} break; case 97: {
	    s.insert(0, ARRAY[0]);
	    s.insert(1, ARRAY[1]);
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[3]);
		    s2.insert(1, ARRAY[4]);
		    s2.insert(2, ARRAY[5]);
		    s2 = s;
		    s2.insert(0, ARRAY[5]);
		    ItemType x;
		    assert(s.get(0, x)  &&  x == ARRAY[0]);
		    assert(s.get(1, x)  &&  x == ARRAY[1]);
	    }
			} break; case 98: {
	      // This test checked that self-assignment doesn't change the
	      // number of sequence item objects in existence.
			} break; case 99: {
	    {
		    Sequence s2;
		    s2.insert(0, ARRAY[0]);
		    s2.insert(1, ARRAY[1]);
		    s2.insert(2, ARRAY[2]);
		    s2 = s2;
		    s2.insert(3, ARRAY[3]);
		    ItemType x;
		    assert(s2.get(0, x)  &&  x == ARRAY[0]);
		    assert(s2.get(1, x)  &&  x == ARRAY[1]);
		    assert(s2.get(2, x)  &&  x == ARRAY[2]);
		    assert(s2.get(3, x)  &&  x == ARRAY[3]);
	    }
#endif
			}
	}
}

int main()
{
	cout << "Enter test number: ";
	int n;
	cin >> n;
	testone(n);
	cout << "Passed" << endl;
}