| 
<?phpnamespace Foxway;
 
 class RuntimeFunctionsPcreTest extends \PHPUnit_Framework_TestCase {
 
 public function testRun_function_pcre_preg_filter_1() {
 $this->assertEquals(
 Runtime::runSource('
 $subject = array("1", "a", "2", "b", "3", "A", "B", "4");
 $pattern = array("/\d/", "/[a-z]/", "/[1a]/");
 $replace = array("A:$0", "B:$0", "C:$0");
 
 echo print_r(preg_filter($pattern, $replace, $subject), true);'),
 array('Array
 (
 [0] => A:C:1
 [1] => B:C:a
 [2] => A:2
 [3] => B:b
 [4] => A:3
 [7] => A:4
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_replace_1() {
 $this->assertEquals(
 Runtime::runSource('echo print_r(preg_replace($pattern, $replace, $subject), true);'),
 array('Array
 (
 [0] => A:C:1
 [1] => B:C:a
 [2] => A:2
 [3] => B:b
 [4] => A:3
 [5] => A
 [6] => B
 [7] => A:4
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_replace_2() {
 $this->assertEquals(
 Runtime::runSource('$string = "April 15, 2003";
 $pattern = "/(\w+) (\d+), (\d+)/i";
 $replacement = \'${1}1,$3\';
 echo preg_replace($pattern, $replacement, $string);'),
 array('April1,2003')
 );
 }
 public function testRun_function_pcre_preg_replace_3() {
 $this->assertEquals(
 Runtime::runSource('$string = "The quick brown fox jumped over the lazy dog.";
 $patterns = array();
 $patterns[0] = "/quick/";
 $patterns[1] = "/brown/";
 $patterns[2] = "/fox/";
 $replacements = array();
 $replacements[2] = "bear";
 $replacements[1] = "black";
 $replacements[0] = "slow";
 echo preg_replace($patterns, $replacements, $string);'),
 array('The bear black slow jumped over the lazy dog.')
 );
 }
 public function testRun_function_pcre_preg_grep_1() {
 $this->assertEquals(
 Runtime::runSource('$array = array("foo", 5, 4.78, "bar", "7.89", "1.234foo"); echo print_r(preg_grep("/^(\d+)?\.\d+$/", $array), true);'),
 array('Array
 (
 [2] => 4.78
 [4] => 7.89
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_last_error_1() {
 $this->assertEquals(
 Runtime::runSource('preg_match("/(?:\D+|<\d+>)*[!?]/", "foobar foobar foobar");
 if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
 print "Backtrack limit was exhausted!";
 }'),
 array('Backtrack limit was exhausted!')
 );
 }
 public function testRun_function_pcre_preg_match_all_1() {
 $this->assertEquals(
 Runtime::runSource('preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
 "<b>example: </b><div align=left>this is a test</div>",
 $out, PREG_PATTERN_ORDER);
 echo $out[0][0] . ", " . $out[0][1];
 echo $out[1][0] . ", " . $out[1][1];'),
 array('<b>example: </b>, <div align=left>this is a test</div>', 'example: , this is a test')
 );
 }
 public function testRun_function_pcre_preg_match_all_2() {
 $this->assertEquals(
 Runtime::runSource('preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
 "<b>example: </b><div align=\"left\">this is a test</div>",
 $out, PREG_SET_ORDER);
 echo $out[0][0] . ", " . $out[0][1];
 echo $out[1][0] . ", " . $out[1][1];'),
 array('<b>example: </b>, example: ', '<div align="left">this is a test</div>, this is a test')
 );
 }
 public function testRun_function_pcre_preg_match_1() {
 $this->assertEquals(
 Runtime::runSource('// get host name from URL
 preg_match("@^(?:http://)?([^/]+)@i",
 "http://www.php.net/index.html", $matches);
 $host = $matches[1];
 
 // get last two segments of host name
 preg_match("/[^.]+\.[^.]+$/", $host, $matches);
 echo "domain name is: {$matches[0]}";'),
 array('domain name is: php.net')
 );
 }
 public function testRun_function_pcre_preg_match_2() {
 $this->assertEquals(
 Runtime::runSource('$str = "foobar: 2008";
 preg_match("/(?P<name>\w+): (?P<digit>\d+)/", $str, $matches);
 echo print_r($matches, true);'),
 array('Array
 (
 [0] => foobar: 2008
 [name] => foobar
 [1] => foobar
 [digit] => 2008
 [2] => 2008
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_quote_1() {
 $this->assertEquals(
 Runtime::runSource('$keywords = "$40 for a g3/400"; $keywords = preg_quote($keywords, "/"); echo $keywords;'),
 array('\$40 for a g3\/400')
 );
 }
 public function testRun_function_pcre_preg_split_1() {
 $this->assertEquals(
 Runtime::runSource('$keywords = preg_split("/[\s,]+/", "hypertext language, programming"); echo print_r($keywords,true);'),
 array('Array
 (
 [0] => hypertext
 [1] => language
 [2] => programming
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_split_2() {
 $this->assertEquals(
 Runtime::runSource('$str = "string";
 $chars = preg_split("//", $str, -1, PREG_SPLIT_NO_EMPTY);
 echo print_r($chars,true);'),
 array('Array
 (
 [0] => s
 [1] => t
 [2] => r
 [3] => i
 [4] => n
 [5] => g
 )
 '                    )
 );
 }
 public function testRun_function_pcre_preg_split_3() {
 $this->assertEquals(
 Runtime::runSource('$str = "hypertext language programming";
 $chars = preg_split("/ /", $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
 echo print_r($chars, true);'),
 array('Array
 (
 [0] => Array
 (
 [0] => hypertext
 [1] => 0
 )
 
 [1] => Array
 (
 [0] => language
 [1] => 10
 )
 
 [2] => Array
 (
 [0] => programming
 [1] => 19
 )
 
 )
 '                    )
 );
 }
 
 }
 
 |