assertEquals($expected, $cc->clean($lines, $requireSemicolons)); } public function semicolonCodeProvider() { return array( array(array('true'), false, 'return true;'), array(array('true;'), false, 'return true;'), array(array('true;'), true, 'return true;'), array(array('true'), true, false), array(array('echo "foo";', 'true'), false, "echo 'foo';\nreturn true;"), array(array('echo "foo";', 'true'), true, false), ); } /** * @dataProvider unclosedStatementsProvider */ public function testUnclosedStatements(array $lines, $isUnclosed) { $cc = new CodeCleaner(); $res = $cc->clean($lines); if ($isUnclosed) { $this->assertFalse($res); } else { $this->assertNotFalse($res); } } public function unclosedStatementsProvider() { return array( array(array('echo "'), true), array(array('echo \''), true), array(array('if (1) {'), true), array(array('echo ""'), false), array(array("echo ''"), false), array(array('if (1) {}'), false), array(array("\$content = <<clean(array($code)); } public function invalidStatementsProvider() { return array( array('function "what'), array("function 'what"), array('echo }'), array('echo {'), array('if (1) }'), array('echo """'), array("echo '''"), array('$foo "bar'), array('$foo \'bar'), ); } }