public function testLinkedList()
 {
     $list = new LinkedList();
     $this->assertEquals(0, $list->getSize());
     $this->assertTrue($list->isEmpty());
     $this->assertNull($list->peekFirst());
     $this->assertNull($list->peekLast());
     $this->assertNull($list->removeFirst());
     $this->assertNull($list->removeLast());
     $count = 0;
     foreach ($list as $key => $value) {
         $count++;
     }
     $this->assertEquals(0, $count);
     $list->add("one");
     $this->assertEquals(1, $list->getSize());
     $this->assertFalse($list->isEmpty());
     $list->add("two");
     $this->assertEquals(2, $list->getSize());
     $this->assertFalse($list->isEmpty());
     $list->add("three");
     $this->assertEquals(3, $list->getSize());
     $this->assertFalse($list->isEmpty());
     $expected = ["one", "two", "three"];
     $i = 0;
     foreach ($list as $key => $value) {
         $this->assertEquals($i, $key);
         $this->assertEquals($expected[$i], $value);
         $i++;
     }
     $this->assertEquals(3, $i);
     $this->assertEquals("one", $list->peekFirst());
     $this->assertEquals("one", $list->removeFirst());
     $this->assertEquals(2, $list->getSize());
     $this->assertEquals("three", $list->peekLast());
     $this->assertEquals("three", $list->removeLast());
     $this->assertEquals(1, $list->getSize());
     $this->assertEquals("two", $list->peekFirst());
     $this->assertEquals("two", $list->removeFirst());
     $this->assertEquals(0, $list->getSize());
     $this->assertTrue($list->isEmpty());
     $list->add("four");
     $this->assertEquals(1, $list->getSize());
     $this->assertFalse($list->isEmpty());
     foreach ($list as $key => $value) {
         $this->assertEquals(0, $key);
         $this->assertEquals("four", $value);
     }
     $this->assertEquals("four", $list->peekFirst());
     $this->assertEquals("four", $list->removeLast());
     $this->assertEquals(0, $list->getSize());
     $this->assertTrue($list->isEmpty());
 }