[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/wact/tests/cases/compiler/expression/ -> WactExpressionFilterParserTest.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  
  10  require_once 'limb/wact/src/compiler/templatecompiler.inc.php';
  11  require_once 'limb/wact/src/compiler/expression/WactExpressionFilterParser.class.php';
  12  
  13  class WactExpressionFilterParserTest extends UnitTestCase
  14  {
  15    protected $parser;
  16  
  17    function setUp()
  18    {
  19      $location = new WactSourceLocation('my_testing_file', 10);
  20      $context_node = new WactCompileTreeNode($location);
  21  
  22      $this->parser = new WactExpressionFilterParser($context_node);
  23    }
  24  
  25    function testName()
  26    {
  27      $filters = $this->parser->parse($expression = 'filter');
  28      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
  29                                                           'expression' => 'filter',
  30                                                           'params' => array())));
  31    }
  32  
  33    function testEmptyName()
  34    {
  35      $filters = $this->parser->parse($expression = '');
  36      $this->assertEqual($filters, array());
  37    }
  38  
  39    function testInvalidName()
  40    {
  41      try
  42      {
  43        $filters = $this->parser->parse($expression = '"filter"');
  44        $this->assertTrue(false);
  45      }
  46      catch(Exception $e)
  47      {
  48        $this->assertWantedPattern('/Filter name expected/', $e->getMessage());
  49      }
  50    }
  51  
  52    function testNoArgsWithDelimiter()
  53    {
  54      try
  55      {
  56        $filters = $this->parser->parse($expression = 'filter:');
  57        $this->assertTrue(false);
  58      }
  59      catch(Exception $e)
  60      {
  61        $this->assertWantedPattern('/Filter params expected after ":" symbol/', $e->getMessage());
  62      }
  63    }
  64  
  65    function testNoArgsWithComma()
  66    {
  67      try
  68      {
  69        $filters = $this->parser->parse($expression = 'filter,');
  70        $this->assertTrue(false);
  71      }
  72      catch(Exception $e)
  73      {
  74        $this->assertWantedPattern('/Unexpected symbol after filter name/', $e->getMessage());
  75      }
  76    }
  77  
  78    function testOneParam()
  79    {
  80      $filters = $this->parser->parse($expression = 'filter:arg');
  81      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
  82                                                           'expression' => 'filter:arg',
  83                                                           'params' => array('arg'))));
  84    }
  85  
  86    function testTwoParams()
  87    {
  88      $filters = $this->parser->parse($expression = 'filter: arg1 , arg2');
  89      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
  90                                                           'expression' => 'filter: arg1 , arg2',
  91                                                           'params' => array('arg1','arg2'))));
  92    }
  93  
  94    function testDoubleQuotesParamsDelimiter()
  95    {
  96      $filters = $this->parser->parse($expression = 'filter:argA,"x:y"');
  97      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
  98                                                           'expression' => 'filter:argA,"x:y"',
  99                                                           'params' => array('argA','"x:y"'))));
 100  
 101    }
 102  
 103    function testSingleQuotesArgDelimiter()
 104    {
 105      $filters = $this->parser->parse($expression = 'filter:argA,\'x:y\'');
 106      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 107                                                           'expression' => 'filter:argA,\'x:y\'',
 108                                                           'params' => array('argA','\'x:y\''))));
 109  
 110    }
 111  
 112    function testDoubleQuotesArgSeperator()
 113    {
 114      $filters = $this->parser->parse($expression = 'filter:argA,"x,y"');
 115      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 116                                                           'expression' => 'filter:argA,"x,y"',
 117                                                           'params' => array('argA','"x,y"'))));
 118  
 119    }
 120  
 121    function testSingleQuotesArgSeperator()
 122    {
 123      $filters = $this->parser->parse($expression = 'filter:argA,\'x,y\'');
 124      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 125                                                           'expression' => 'filter:argA,\'x,y\'',
 126                                                           'params' => array('argA','\'x,y\''))));
 127  
 128    }
 129  
 130    function testTwoDoubleQuotes()
 131    {
 132      $filters = $this->parser->parse($expression = 'filter:"x\'1","y\'2"');
 133      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 134                                                           'expression' => 'filter:"x\'1","y\'2"',
 135                                                           'params' => array('"x\'1"','"y\'2"'))));
 136  
 137    }
 138  
 139    function testTwoSingleQuotes()
 140    {
 141      $filters = $this->parser->parse($expression = 'filter:\'x"1\',\'y"2\'');
 142      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 143                                                           'expression' => 'filter:\'x"1\',\'y"2\'',
 144                                                           'params' => array('\'x"1\'','\'y"2\''))));
 145    }
 146  
 147    function testParamsStarterInParams()
 148    {
 149      $filters = $this->parser->parse($expression = 'filter: ", test: 99"');
 150      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 151                                                           'expression' => 'filter: ", test: 99"',
 152                                                           'params' => array('", test: 99"'))));
 153    }
 154  
 155    function testSpaceInParams()
 156    {
 157      $filters = $this->parser->parse($expression = 'filter:" "');
 158      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 159                                                           'expression' => 'filter:" "',
 160                                                           'params' => array('" "'))));
 161    }
 162  
 163    function testParamDelimeterInParams()
 164    {
 165      $filters = $this->parser->parse($expression = 'filter:3, ",", "."');
 166      $this->assertEqual($filters, array('filter' => array('name' => 'filter',
 167                                                           'expression' => 'filter:3, ",", "."',
 168                                                           'params' => array(3,'","','"."'))));
 169    }
 170  
 171    function testTwoFiltersNoParams()
 172    {
 173      $filters = $this->parser->parse($expression = 'filter1|filter2');
 174      $this->assertEqual($filters, array('filter1' => array('name' => 'filter1',
 175                                                           'expression' => 'filter1',
 176                                                           'params' => array()),
 177                                         'filter2' => array('name' => 'filter2',
 178                                                           'expression' => 'filter2',
 179                                                           'params' => array())));
 180    }
 181  
 182    function testTwoFiltersWithParams()
 183    {
 184      $filters = $this->parser->parse($expression = 'filter1: arg1, arg2 |filter2: arg3');
 185      $this->assertEqual($filters, array('filter1' => array('name' => 'filter1',
 186                                                           'expression' => 'filter1: arg1, arg2 ',
 187                                                           'params' => array('arg1','arg2')),
 188                                         'filter2' => array('name' => 'filter2',
 189                                                           'expression' => 'filter2: arg3',
 190                                                           'params' => array('arg3'))));
 191    }
 192  
 193    function testTwoFiltersWithSeparatorInParams()
 194    {
 195      $filters = $this->parser->parse($expression = 'filter1: "x|y", arg2 |filter2: arg3');
 196      $this->assertEqual($filters, array('filter1' => array('name' => 'filter1',
 197                                                           'expression' => 'filter1: "x|y", arg2 ',
 198                                                           'params' => array('"x|y"','arg2')),
 199                                         'filter2' => array('name' => 'filter2',
 200                                                           'expression' => 'filter2: arg3',
 201                                                           'params' => array('arg3'))));
 202    }
 203  }
 204  ?>


Generated: Mon Dec 1 03:56:46 2008 Cross-referenced by PHPXref 0.7