bool Tests::runTests() { Tests tests; std::cout << "Default Constructor Test" << std::endl; if (!tests.defaultConstructorTest()) { std::cout << "Failed Default Constructor Test" << std::endl; tests.updateFailCounter(); } if (!tests.stringPassedByReferenceConstructorTest()) { std::cout << "Failed Constructor passed by Reference Test" << std::endl; tests.updateFailCounter(); } if (!tests.getTest()) { std::cout << "Failed get() Test" << std::endl; tests.updateFailCounter(); } std::cout << "Dereference Operator Test 1" << std::endl; if (!tests.dereferenceOperatorTest1()) { std::cout << "Failed Dereference Operator Test 1" << std::endl; tests.updateFailCounter(); } if (!tests.dereferenceOperatorTest2()) { std::cout << "Failed Dereference Operator Test 2" << std::endl; tests.updateFailCounter(); } if (!tests.dereferenceOperatorTest3()) { std::cout << "Failed Dereference Operator Test 3" << std::endl; tests.updateFailCounter(); } std::cout << "Dereference Member Test 1" << std::endl; if (!tests.dereferenceObjectMemberTest1()) { std::cout << "Failed Dereference Member Test" << std::endl; tests.updateFailCounter(); } std::cout << "Dereference Member Test 2" << std::endl; if (!tests.dereferenceObjectMemberTest2()) { std::cout << "Failed Dereference Member Test" << std::endl; tests.updateFailCounter(); } std::cout << "Pointer Constructor Test" << std::endl; if (!tests.pointerConstructorTest()) { std::cout << "Failed Pointer Constructor Test" << std::endl; tests.updateFailCounter(); } std::cout << "Simple Copy Constructor Test" << std::endl; if (!tests.simpleCopyConstructorTest()) { std::cout << "Failed Simple Copy Constructor Test" << std::endl; tests.updateFailCounter(); } std::cout << "Unique Pointer Test 1" << std::endl; if (!tests.uniqueTest1()) { std::cout << "Failed Unique Pointer Test 1" << std::endl; tests.updateFailCounter(); } std::cout << "Unique Pointer Test 2" << std::endl; if (!tests.uniqueTest2()) { std::cout << "Failed Unique Pointer Test 2" << std::endl; tests.updateFailCounter(); } std::cout << "Unique Pointer Test 3" << std::endl; if (!tests.uniqueTest3()) { std::cout << "Failed Unique Pointer Test 3" << std::endl; tests.updateFailCounter(); } std::cout << "Complex Copy Constructor Test" << std::endl; if (!tests.complexCopyConstructorTest()) { std::cout << "Failed Complex Copy Constructor Test" << std::endl; tests.updateFailCounter(); } std::cout << "Assignment Operator Test 1" << std::endl; if (!tests.assignmentOperatorTest1()) { std::cout << "Failed Assignment Operator Test 1" << std::endl; tests.updateFailCounter(); } std::cout << "Assignment Operator Test 2" << std::endl; if (!tests.assignmentOperatorTest2()) { std::cout << "Failed Assignment Operator Test 2" << std::endl; tests.updateFailCounter(); } std::cout << "Assignment Operator Test 3" << std::endl; if (!tests.assignmentOperatorTest3()) { std::cout << "Failed Assignment Operator Test 3" << std::endl; tests.updateFailCounter(); } std::cout << "Reset Test 1" << std::endl; if (!tests.resetTest1()) { std::cout << "Failed Reset Test 1" << std::endl; tests.updateFailCounter(); } if (!tests.resetTest2()) { std::cout << "Failed Reset Test 2" << std::endl; tests.updateFailCounter(); } if (!tests.boolOperatorTest1()) { std::cout << "Failed bool Operator Test 1" << std::endl; tests.updateFailCounter(); } std::cout << "bool Operator Test 2" << std::endl; if (!tests.boolOperatorTest2()) { std::cout << "Failed bool Operator Test 2" << std::endl; tests.updateFailCounter(); } if (!tests.failedTests()) { std::cout << "Well done on finishing the last coding exercise for INFO3220" << std::endl; return true; } return false; }