| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Dec 1 03:56:46 2008 | Cross-referenced by PHPXref 0.7 |