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:----H+y/Xs3Wt0yeJiA7cvkpCnfS+gLLgNcDGjhuDJ/N9FCsbCj5vg/F76odsriZCQTll0O0l0ppYYHCOdxHtrzVI7ZyW/7shePG/UpR2/md4wmQEPypdor8kxVMPsSdrzo/0TRVj6+AVD/0zaphPyJl46aysXSBKvIwsmOBMXxoVyXgqCtT85NNxqqzI23HrlmubH8dlCSALblT8gDdtmqZKNuCnNua9/jgSki1xSmkbqbVbAzp4O1xUTuvpavyk0C/8hVMl7xpKK8kNwgX1TcwE4wDWIPypWcdFZlrZGbFYo1jJwFfOCe5+lMvIIaLzjhFfgtNwSFUHWG5M7pZ2SrMElqE5oZpObJPVF+6qxyJQnI0OgXvzJQb0d7OF1t7RIqBiDyY0jWcZIURcvgWimpcsxGZJfmvvrZ6xZnACoqgPHK2MmMOe8+D+X8OoekKxlUoQdRCRsqS7Jc6P2Fx4EYo+z1mDiDi4zKm69qOgOlGiet3J8sLvZpLoxEV55+oZS5UyeRmdbrOa19B1kf/VpCPqjNwh9D1twRQyrNJgOwgBu6n7bKtiXW1Smj/zZ0nE22ll4aq3YTwkxIj4hpN1lpLmDKuA1/NR/YBuFOX/bMKX8tb42pP888h8QHjT2/7sTUI/uPUbEE89OxISbqq7/LsUl5x523yTSnOKyfYExk2jQY=----ATTACHMENT:----NDk4NzMzODA1MDQ3MzMwNyAxOTA4MzEzNDkxOTQ4NDI0IDU1NTU0NzU0MTY2MDM5MDI=