assertNotEmpty($file); $lines = explode("\n", $file); array_unshift($lines, ''); $misplacedTokens = []; foreach ($tokens as $index => $lineTokens) { if (empty($lineTokens)) { $this->assertNotEmpty(trim($lines[$index]), 'Token is empty for non-empty line'); } foreach ($lineTokens as $token) { // don't compare whitespace-only tokens if (empty(trim($token['char']))) { continue; } $this->assertIsArray($token, 'All outputted tokens should be arrays'); // Make sure the matched string for the token is on the correct line if (strpos($lines[$index], trim($token['char'])) === FALSE) { $token['misplaced_line'] = $index; $misplacedTokens[] = $token; } } } $this->assertEmpty($misplacedTokens, 'Not all tokens are on the correct lines: ' . print_r($misplacedTokens, TRUE)); } }