1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
-
- class Parser extends PHPUnit_Framework_TestCase
- {
-
- function setUp()
- {
- include_once __DIR__ . '/../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(__DIR__ . '/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;
- }
- }
|