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:----bzjD2kdTi8xJ4Rg4SWHbCSzD/JSHrXTtCiyVsAUMe+tMtr4RfuErq5EemqMzUyIeYpvN4HVQm8pcgLwi2v2uhnk2mN9tY3Nd0+3+ubEN7pw4Kpm6XGQFuS9DTSu0tB2oy1IUmSdj7p3fhLI/aon2kErHpiOJRFiZp1KEcb679DzUfwfP8kDzWBzgjRVwSma46GJqn0xm6NmTOaPjQUIIzAWtFKGPYrjSIVwjts+Q3nhYt5oZFBt7LDG4p370tm3c27UTFtFZMtmI9t4/sw3jFgWGFs1hWfVbBS5iMvzcAewO3mSpBWqxDY1nZYpzVkqdWt41/cSmd2SD++sC0uS/sZeKgwh9h8waSztIjp92B62mzH8WQ+ZYZOuuHvoq0pNOJB7ImrfaJcDtYTdZ4wvdllV6E5maw+KbVgzfSFLV9XX465JkxcqqCwjDG6Sa0DlaxiTgT3Uwj8aDjvRDxvENWes0C9JYzLbyuBon3ZZmULbZSGNGyorYbAQWve01XcU59NRrzwaGcKv3814IWNxWAQ13PGfG9yU46oDH2KrKzjcl5C96GTRMD92iElScmVt2mgscl9Z0bOK93y+fKi4fJcvPq6DS8UxJWVxqOE/J8wOo2eFqwH7cy4VKJyfRrkFIwhkNYC2EjGxt1GlaHeMSP4DhI3pKpaWob1z2PgA3S5Q=----ATTACHMENT:----Njc2MDc0OTU2OTQ5ODg3MCA4MDE5Nzc0NDE5ODAzNDgwIDU3NDA3MjIxMzM5MTMxNTI=