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:----SP6EJQcK403ZeydPFSI5RJRSFrP0PtAndP4muiJTcbH90dKrUwLPJcAnF9qCV5pfkH/42YdugXE2xrnUOGCSF+WJBNFBCTGxrRKdGbxtcfW6yMmo2URwanmYjH+WoLdjTGcEzKhhs+0N2uhqa1xDw/aiQnKAuLB+RJ/Mqa+GjaHqyR3PtT3RzptmcCMjw4uAfDKQU5u5sz3uwnKodaR04GMC5+SIVzIqxurYjMq82BTG56kwyfzo6+nNmsN8dHHyAvF9nzwNLqb9pKEsfx7Hanpl0UvbJ9pw84MmanyTQ7CzBESRw+WcbJhFjGbsmkW8NQUSfO8QiwTAYZUv+iBtdcWtnf8XJBZfGZROnjBJL/KaM6xI6SYRLdf67VT6rXlJIlm2xxRcuj02nZjAmL484gWl/c6AdLmPetjmyoeITaDoF/KujQm/ZmhBWVT18iPQToG7D4YTwW2AM1Y+jajeuHgSsOK8Nre+/uK5GNtmIBykQgLfOt2j6SFHGzT8N2/3Io+UCjVvmfERYyAiuS8ksO6eN+X4WprdQDdtcVLfVF0aPeEWtijvpJEeRKEnhfVSQADJmYIK/xRBlaHY4p3F4C7+dpXx+aOGe2q1AcaL6vvpP6HKXL+1kH11SGoiBtolI9TPe0ZToVvhqlSYQNEsjDxGFf7cxA8RqXRJWNGCt+M=----ATTACHMENT:----MjgyNjQ2NTI2OTg4MTM3MCA3MDAxOTAyMTQxMDQ0NDM2IDc2ODU2NTU0Njg0MzIyMg==