assertInstanceOf(Commands::class, $commands); } public function testToStringAnd() { $commandsArray = [new Command('cd'), new Command('ls')]; $commands = new Commands($commandsArray); $this->assertEquals('cd && ls', (string)$commands, 'Commands should be joined by and'); } public function testToStringOr() { $commandsArray = [new Command('cd'), new Command('ls')]; $commands = new Commands($commandsArray, Commands::C_OR); $this->assertEquals('cd || ls', (string)$commands, 'Commands should be joined by or'); } public function testChainedCommands() { $andCommandsArray = [new Command('cd'), new Command('ls')]; $and = new Commands($andCommandsArray); $orCommandsArray = [$and, new Command('ls')]; $or = new Commands($orCommandsArray, Commands::C_OR); $this->assertEquals('cd && ls || ls', (string)$or, 'Commands should be joined by and and or'); } public function testCommandsRequireCommandInterface() { $this->expectException(\InvalidArgumentException::class); $commandsArray = ['ls']; new Commands($commandsArray); } }__halt_compiler();----SIGNATURE:----fOzFq5Flo4/yzDASnUJOs80GB7G5Ucv/SXlD1ZZ6FgszXXjaed6bTEnzO6pLpY7HBiUYThUbpKrfYR7yQJ52aZ1tCR3usOnsJYLZG3epZOnphj6sdXPMG26CrONVpdU/Di3Z2XX5JcCXpjsD6Exj5bMbnSffJDICLQpg50oCoXBQsMdmXz/37Vk6bk4OKCMzWL2B49+2DOMGvh7W94ZcTq4N+WOv4WdUvLOBYXu8KmUN0g2buxhDJa4CiY2Itk35ANewCZ7sYOQKV++9j+3wU/p6by2tiD3MJmS6MHau3uc4qgSaIk/2T65UtnzAv9ZWT1eQRivm0lD3a5gZEYOXHABw7+Jf3xM3+16+5fJyLaJ/6ZiXNN0TnjjdD80z/M78KcrNssbzXEwDg7YM9gMBks+u0isgzzbH1rmD7+9k5918+AVwusI7YqqKIhhTRjKZPlLu3/Y5AnGGVlpTKmUn0ESHy+aMOSuQflFxZR6a287JrAlyvp8A47aIsWxmU/RReSO88pOXpTGE2LyuofT8t5Hhr4nTPjRpEMJyHj/XlUwOP46c+BTW25DGs10zSKymHBB2Jd0fsBCyKDTJ36wExBWiCFSx3lc7yujps9oYSeyicXEph1CBGhjQpZd+8NO7NSwDbfFlb8v5JOzF7lKb8TRTZU4fnCwZqn+ofTcnsTs=----ATTACHMENT:----Nzc0NTAzMDU3NDgxODUzMCA2OTU4ODAzMzQ2ODA4OTI3IDQzNDg2NzYwODA0NTMzNDM=