Linked List assignment

profileosama001100
LinkedListTests2.cpp

namespace UnitTests { TEST_CLASS(LinkedListStarterTests) { public: TEST_METHOD(LinkedListDefaultConstructor) { CrtCheckMemory check; try { LinkedList<int> list; Assert::IsTrue(list.Empty()); Assert::IsNull(list.Head()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListCopyConstructor) { CrtCheckMemory check; try { LinkedList<int> aList; aList.Append(5); LinkedList<int> bList(aList); Assert::IsFalse(bList.Empty()); Assert::AreEqual(5, bList.First()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListAssignmentOperator) { CrtCheckMemory check; try { LinkedList<size_t> aList; LinkedList<size_t> bList; size_t i; size_t values[] = { 5, 15, 25, 35, 45 }; for (i = 0; i < 5; ++i) { aList.Append(values[i]); } bList = aList; i = 0; for (ListNode<size_t> * list_node = bList.Head(); list_node != nullptr; list_node = list_node->Next()) { Assert::AreEqual(values[i++], list_node->Value()); } } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListAccessors) { CrtCheckMemory check; try { LinkedList<int> aList; int values[] = { 5, 15, 25, 35, 45 }; for (int i = 0; i < 5; ++i) { aList.Append(values[i]); } Assert::AreEqual(5, aList.Head()->Value()); Assert::AreEqual(45, aList.Tail()->Value()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListAppend) { CrtCheckMemory check; try { LinkedList<size_t> aList; size_t i; size_t values[] = { 5, 15, 25, 35, 45 }; for (i = 0; i < 5; ++i) { aList.Append(values[i]); } i = 0; for (ListNode<size_t> * list_node = aList.Head(); list_node != nullptr; list_node = list_node->Next()) { Assert::AreEqual(values[i++], list_node->Value()); } } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListFirstAndLast) { CrtCheckMemory check; try { LinkedList<int> aList; int values[] = { 5, 15, 25, 35, 45 }; for (int i = 0; i < 5; ++i) { aList.Append(values[i]); } Assert::AreEqual(5, aList.First()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListPrepend) { CrtCheckMemory check; try { LinkedList<size_t> aList; size_t i; size_t values[] = { 5, 15, 25, 35, 45 }; for (i = 0; i < 5; ++i) { aList.Prepend(values[i]); } i = 5; for (ListNode<size_t> * list_node = aList.Head(); list_node != nullptr; list_node = list_node->Next()) { Assert::AreEqual(values[--i], list_node->Value()); } } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListPurge) { CrtCheckMemory check; try { LinkedList<size_t> aList; size_t values[] = { 5, 15, 25, 35, 45 }; for (size_t i = 0; i < 5; ++i) { aList.Append(values[i]); } aList.Clear(); Assert::IsNull(aList.Head()); Assert::IsNull(aList.Tail()); Assert::IsTrue(aList.Empty()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListBefore) { CrtCheckMemory check; try { LinkedList<int> aList; int i; int values[] = { 5, 15, 25, 35, 45 }; aList.Append(values[4]); for (i = 3; i >= 0; --i) { aList.InsertBefore(values[i], values[i + 1]); } i = 0; for (ListNode<int> * list_node = aList.Head(); list_node != nullptr; list_node = list_node->Next()) { Assert::AreEqual(values[i++], list_node->Value()); } } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListInsertAfter) { CrtCheckMemory check; try { LinkedList<int> aList; int i; int values[] = { 5, 15, 25, 35, 45 }; aList.Append(values[0]); for (i = 1; i < 5; ++i) { aList.InsertAfter(values[i], values[i - 1]); } i = 0; for (ListNode<int> * list_node = aList.Head(); list_node != nullptr; list_node = list_node->Next()) { Assert::AreEqual(values[i++], list_node->Value()); } } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } TEST_METHOD(LinkedListExtract) { CrtCheckMemory check; try { LinkedList<int> list; list.Append(5); list.Extract(5); Assert::IsTrue(list.Empty()); Assert::IsNull(list.Head()); list.Append(5); list.Append(10); list.Append(15); list.Extract(10); Assert::AreEqual(5, list.First()); Assert::AreEqual(15, list.Last()); } catch (AdtException AdtException) { Assert::Fail(AdtException.Message()); } } };