Viewing file: Parser.php (1.61 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class Parser extends PHPUnit_Framework_TestCase {
function setUp() { include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_script.php'; }
/** * Sieve script parsing * * @dataProvider data_parser */ function test_parser($input, $output, $message) { // get capabilities list from the script $caps = array(); if (preg_match('/require \[([a-z0-9", ]+)\]/', $input, $m)) { foreach (explode(',', $m[1]) as $cap) { $caps[] = trim($cap, '" '); } }
$script = new rcube_sieve_script($input, $caps); $result = $script->as_text();
$this->assertEquals(trim($result), trim($output), $message); }
/** * Data provider for test_parser() */ function data_parser() { $dir_path = realpath(dirname(__FILE__) . '/src'); $dir = opendir($dir_path); $result = array();
while ($file = readdir($dir)) { if (preg_match('/^[a-z0-9_]+$/', $file)) { $input = file_get_contents($dir_path . '/' . $file);
if (file_exists($dir_path . '/' . $file . '.out')) { $output = file_get_contents($dir_path . '/' . $file . '.out'); } else { $output = $input; }
$result[] = array( 'input' => $input, 'output' => $output, 'message' => "Error in parsing '$file' file", ); } }
return $result; } }
|