/**
  * Testes expected behaviour of adding entries to tracker list
  */
 public function testAddMaintenanceTaskEntryInvalid()
 {
     $maintenanceTracker = MaintenanceTracker::getMaintenanceTracker();
     //gets instance of tracker
     try {
         $maintenanceTracker->addMaintenanceTaskEntry(null);
         //null not valid
         echo "testAddMaintenanceTaskEntryInvalid null test failed\n";
         Assert . Fail();
     } catch (InvalidArgumentException $e) {
         echo "testAddMaintenanceTaskEntryInvalid null test successful\n";
     } catch (Exception $e) {
         echo "testAddMaintenanceTaskEntryInvalid null  test failed\n";
         Assert . Fail();
     }
     $maintenanceTracker = MaintenanceTracker::getMaintenanceTracker();
     try {
         $maintenanceTracker->addMaintenanceTaskEntry(new DateTime());
         //date time not valid
         echo "testAddMaintenanceTaskEntryInvalid invalid object test failed\n";
         Assert . Fail();
     } catch (InvalidArgumentException $e) {
         echo "testAddMaintenanceTaskEntryInvalid invalid object test successful\n";
     } catch (Exception $e) {
         echo "testAddMaintenanceTaskEntryInvalid invalid object  test failed\n";
         Assert . Fail();
     }
     try {
         $maintenaceTaskEntry = new MaintenanceTaskEntry(4, "Oil Change", new GasCar("Ford", "Focus", 2000, 23424), new DateTime(), false);
         if (!$maintenanceTracker->addMaintenanceTaskEntry($maintenaceTaskEntry)) {
             echo "testAddMaintenanceTaskEntryInvalid allready in list object test failed\n";
             // should have been added sucessfully
             Assert . Fail();
         }
         if ($maintenanceTracker->addMaintenanceTaskEntry($maintenaceTaskEntry)) {
             echo "testAddMaintenanceTaskEntryInvalid allready in list object test failed\n";
             // should have been first initially added
             Assert . Fail();
         } else {
             echo "testAddMaintenanceTaskEntryInvalid allready in list object test successful\n";
         }
     } catch (InvalidArgumentException $e) {
         echo "testAddMaintenanceTaskEntryInvalid allready in list test failed\n";
         Assert . Fail();
     } catch (Exception $e) {
         echo "testAddMaintenanceTaskEntryInvalid allready in list  test failed\n";
         Assert . Fail();
     }
 }
 /**
  * Ensure that only one instance of the maintenance tracker exists and returns it
  * @return MaintenanceTracker   The maintenance tracker instance
  */
 public static function getMaintenanceTracker()
 {
     if (MaintenanceTracker::$maintenanceTracker === null) {
         //if it has not been created
         MaintenanceTracker::$maintenanceTracker = new MaintenanceTracker();
     }
     //create
     return MaintenanceTracker::$maintenanceTracker;
 }
<?php

/**
 * This file contains a view to interact with a maintenace tracker: adding, removing and editing maintenance task entries
 * @author Tyler Matthews
 */
require 'AutomobileMaintenanceLibrary/MaintenanceTracker.php';
require 'AutomobileMaintenanceLibrary/Car.php';
require 'AutomobileMaintenanceLibrary/GasCar.php';
require 'AutomobileMaintenanceLibrary/DieselCar.php';
require 'AutomobileMaintenanceLibrary/ElectricCar.php';
require 'AutomobileMaintenanceLibrary/MaintenanceTaskEntry.php';
session_start();
if (!isset($_SESSION["maintenanceTracker"])) {
    $maintenanceTracker = MaintenanceTracker::getMaintenanceTracker();
    $_SESSION["maintenanceTracker"] = $maintenanceTracker;
}
?>
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Curve Dental</title>
    <link rel="stylesheet" type="text/css" href="AutomobileMaintenanceTracker.css"/>
    <script src="AutomobileMaintenanceTracker.js"></script>
</head>
<body>
<header>
    <nav>
        <a id="programmingproblemtitle" >Programming Problem</a>