| [ 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 /** 11 * This tests the parsing of HTML constructs that are considered valid HTML, but that 12 * are not considered valid XML. This tests the ability of the template parser to 13 * work with HTML edge cases. 14 */ 15 class WactTagAttributesTest extends WactTemplateTestCase 16 { 17 function testTextAttribute() 18 { 19 $template = '<P ALIGN="CENTER"></P>'; 20 21 $this->registerTestingTemplate('/attributes/text_node_attribute.html', $template); 22 $page = $this->initTemplate('/attributes/text_node_attribute.html'); 23 24 $output = $page->capture(); 25 $this->assertEqual($output, $template); 26 } 27 28 function testWactAttribute() 29 { 30 $template = '<form id="test" runat="server">contents</form>'; 31 32 $this->registerTestingTemplate('/attributes/wact_attribute.html', $template); 33 $page = $this->initTemplate('/attributes/wact_attribute.html'); 34 35 $form = $page->getChild('test'); 36 $form->setAttribute('extra', 'Foo'); 37 38 $output = $page->capture(); 39 $this->assertEqual($output, '<form id="test" extra="Foo">contents</form>'); 40 } 41 42 function testWactAttributeVariable() 43 { 44 $template = '<form id="test" extra="{$Var}" runat="server">contents</form>'; 45 46 $this->registerTestingTemplate('/attributes/wact_attribute_var.html', $template); 47 $page = $this->initTemplate('/attributes/wact_attribute_var.html'); 48 49 $form = $page->getChild('test'); 50 51 $data = new ArrayObject(); 52 $data['Var'] = 'Foo'; 53 $form->registerDataSource($data); 54 55 $output = $page->capture(); 56 $this->assertEqual($output, '<form id="test" extra="Foo">contents</form>'); 57 } 58 59 function testWactAttributeSummExpression() 60 { 61 $template = '<form id="test" extra="{$2 + 2}" runat="server">contents</form>'; 62 63 $this->registerTestingTemplate('/attributes/wact_attribute_summ_expression.html', $template); 64 $page = $this->initTemplate('/attributes/wact_attribute_summ_expression.html'); 65 66 $form = $page->getChild('test'); 67 68 $data = new ArrayObject(); 69 $data['Var'] = 'Foo'; 70 $form->registerDataSource($data); 71 72 $output = $page->capture(); 73 $this->assertEqual($output, '<form id="test" extra="4">contents</form>'); 74 } 75 76 77 function testWactWactAttributeVariable() 78 { 79 $template = '<form id="test" extra="bar{$Var}bar" extra2="{$Var}bar{$Var}" runat="server">contents</form>'; 80 81 $this->registerTestingTemplate('/attributes/wact_compound_attribute_var.html', $template); 82 $page = $this->initTemplate('/attributes/wact_compound_attribute_var.html'); 83 84 $form = $page->getChild('test'); 85 86 $data = new WactArrayObject(); 87 $data->set('Var', 'Foo'); 88 $form->registerDataSource($data); 89 90 $output = $page->capture(); 91 $this->assertEqual($output, '<form id="test" extra="barFoobar" extra2="FoobarFoo">contents</form>'); 92 } 93 94 function testWactWactAttributeExpression() 95 { 96 $template = '<form id="test" extra="bar{$3*3 + 1}bar" extra2="{$Var}bar{$Var}" runat="server">contents</form>'; 97 98 $this->registerTestingTemplate('/attributes/wact_compound_attribute_expression.html', $template); 99 $page = $this->initTemplate('/attributes/wact_compound_attribute_expression.html'); 100 101 $form = $page->getChild('test'); 102 103 $data = new WactArrayObject(); 104 $data->set('Var', 'Foo'); 105 $form->registerDataSource($data); 106 107 $output = $page->capture(); 108 $this->assertEqual($output, '<form id="test" extra="bar10bar" extra2="FoobarFoo">contents</form>'); 109 } 110 111 function testWactWactAttributeExpressionWithDBE() 112 { 113 $template = '<form id="test" extra="bar{$3*3 + var}bar" runat="server">contents</form>'; 114 115 $this->registerTestingTemplate('/attributes/wact_compound_attribute_expression_with_dbe.html', $template); 116 $page = $this->initTemplate('/attributes/wact_compound_attribute_expression_with_dbe.html'); 117 118 $form = $page->getChild('test'); 119 120 $output = $page->capture(); 121 $this->assertEqual($output, '<form id="test" extra="bar9bar">contents</form>'); 122 } 123 124 function testWactAttributeVariableFilter() 125 { 126 $template = '<form id="test" extra="{$Var|uppercase}" runat="server">contents</form>'; 127 128 $this->registerTestingTemplate('/attributes/wact_attribute_var_filter.html', $template); 129 $page = $this->initTemplate('/attributes/wact_attribute_var_filter.html'); 130 131 $form = $page->getChild('test'); 132 133 $data = new WactArrayObject(); 134 $data->set('Var', 'Foo'); 135 $form->registerDataSource($data); 136 137 $output = $page->capture(); 138 $this->assertEqual($output, '<form id="test" extra="FOO">contents</form>'); 139 } 140 141 function testSetAttributeVariable() 142 { 143 $template = '<core:SET Var="bar"/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 144 145 $this->registerTestingTemplate('/attributes/set_attribute_var.html', $template); 146 $page = $this->initTemplate('/attributes/set_attribute_var.html'); 147 148 $form = $page->getChild('test'); 149 150 $data = new WactArrayObject(); 151 $data->set('Var', 'Foo'); 152 $form->registerDataSource($data); 153 154 $output = $page->capture(); 155 $this->assertEqual($output, '<form id="test" extra="bar">contents</form>'); 156 } 157 158 function testWactAttributeEscape() 159 { 160 $template = '<form id="test" runat="server">contents</form>'; 161 162 $this->registerTestingTemplate('/attributes/wactattributeescape.html', $template); 163 $page = $this->initTemplate('/attributes/wactattributeescape.html'); 164 165 $form = $page->getChild('test'); 166 $form->setAttribute('extra', '&"\'<>'); 167 168 $output = $page->capture(); 169 $this->assertEqual($output, '<form id="test" extra="&"'<>">contents</form>'); 170 } 171 172 function testWactAttributeVariableEscape() 173 { 174 $template = '<form id="test" extra="{$Var}" runat="server">contents</form>'; 175 176 $this->registerTestingTemplate('/attributes/wactattributevarescape.html', $template); 177 $page = $this->initTemplate('/attributes/wactattributevarescape.html'); 178 179 $form = $page->getChild('test'); 180 181 $data = new WactArrayObject(); 182 $data->set('Var', '&"\'<>'); 183 $form->registerDataSource($data); 184 185 $output = $page->capture(); 186 $this->assertEqual($output, '<form id="test" extra="&"'<>">contents</form>'); 187 } 188 189 function testSetAttributeVariableEscape() 190 { 191 $template = '<core:SET Var="""/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 192 193 $this->registerTestingTemplate('/attributes/setattributevarescape.html', $template); 194 $page = $this->initTemplate('/attributes/setattributevarescape.html'); 195 196 $output = $page->capture(); 197 $this->assertEqual($output, '<form id="test" extra=""">contents</form>'); 198 } 199 200 function testSetAttributeVariableEscapeLt() 201 { 202 $template = '<core:SET Var="<"/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 203 204 $this->registerTestingTemplate('/attributes/setattributevarescapelt.html', $template); 205 $page = $this->initTemplate('/attributes/setattributevarescapelt.html'); 206 207 $output = $page->capture(); 208 $this->assertEqual($output, '<form id="test" extra="<">contents</form>'); 209 } 210 211 function testSetAttributeVariableEscapeGt() 212 { 213 $template = '<core:SET Var=">"/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 214 215 $this->registerTestingTemplate('/attributes/setattributevarescapegt.html', $template); 216 $page = $this->initTemplate('/attributes/setattributevarescapegt.html'); 217 218 $output = $page->capture(); 219 $this->assertEqual($output, '<form id="test" extra=">">contents</form>'); 220 } 221 222 function testSetAttributeVariableEscapeAmp() 223 { 224 $template = '<core:SET Var="&"/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 225 226 $this->registerTestingTemplate('/attributes/setattributevarescapeamp.html', $template); 227 $page = $this->initTemplate('/attributes/setattributevarescapeamp.html'); 228 229 $output = $page->capture(); 230 $this->assertEqual($output, '<form id="test" extra="&">contents</form>'); 231 } 232 233 function testSetAttributeVariableEscapeQuot() 234 { 235 $template = '<core:SET Var=\'"\'/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 236 237 $this->registerTestingTemplate('/attributes/setattributevarescapequot.html', $template); 238 $page = $this->initTemplate('/attributes/setattributevarescapequot.html'); 239 240 $output = $page->capture(); 241 $this->assertEqual($output, '<form id="test" extra=""">contents</form>'); 242 } 243 244 function testSetAttributeVariableEscapeSingleQuot() 245 { 246 $template = '<core:SET Var="\'"/><form id="test" extra="{$^Var}" runat="server">contents</form>'; 247 248 $this->registerTestingTemplate('/attributes/setattributevarescapesinglequot.html', $template); 249 $page = $this->initTemplate('/attributes/setattributevarescapesinglequot.html'); 250 251 $output = $page->capture(); 252 $this->assertEqual($output, '<form id="test" extra="'">contents</form>'); 253 } 254 255 function testAttributeVariableEscape() 256 { 257 $template = '<form id="test" extra=""<>&" runat="server">contents</form>'; 258 259 $this->registerTestingTemplate('/attributes/attributevarescape.html', $template); 260 $page = $this->initTemplate('/attributes/attributevarescape.html'); 261 262 $form = $page->getChild('test'); 263 $this->assertEqual($form->getAttribute('extra'), '"<>&'); 264 265 $output = $page->capture(); 266 $this->assertEqual($output, '<form id="test" extra=""<>&">contents</form>'); 267 } 268 269 function testAttributeVariableEscapeLt() 270 { 271 $template = '<form id="test" extra="<" runat="server">contents</form>'; 272 273 $this->registerTestingTemplate('/attributes/attributevarescapelt.html', $template); 274 $page = $this->initTemplate('/attributes/attributevarescapelt.html'); 275 276 $form = $page->getChild('test'); 277 $this->assertEqual($form->getAttribute('extra'), '<'); 278 279 $output = $page->capture(); 280 $this->assertEqual($output, '<form id="test" extra="<">contents</form>'); 281 } 282 283 function testAttributeVariableEscapeGt() 284 { 285 $template = '<form id="test" extra=">" runat="server">contents</form>'; 286 287 $this->registerTestingTemplate('/attributes/attributevarescapegt.html', $template); 288 $page = $this->initTemplate('/attributes/attributevarescapegt.html'); 289 290 $form = $page->getChild('test'); 291 $this->assertEqual($form->getAttribute('extra'), '>'); 292 293 $output = $page->capture(); 294 $this->assertEqual($output, '<form id="test" extra=">">contents</form>'); 295 } 296 297 function testAttributeVariableEscapeAmp() 298 { 299 $template = '<form id="test" extra="&" runat="server">contents</form>'; 300 301 $this->registerTestingTemplate('/attributes/attributevarescapeamp.html', $template); 302 $page = $this->initTemplate('/attributes/attributevarescapeamp.html'); 303 304 $form = $page->getChild('test'); 305 $this->assertEqual($form->getAttribute('extra'), '&'); 306 307 $output = $page->capture(); 308 $this->assertEqual($output, '<form id="test" extra="&">contents</form>'); 309 } 310 311 function testAttributeVariableEscapeQuot() 312 { 313 $template = '<form id="test" extra=\'"\' runat="server">contents</form>'; 314 315 $this->registerTestingTemplate('/attributes/attributevarescapequot.html', $template); 316 $page = $this->initTemplate('/attributes/attributevarescapequot.html'); 317 318 $form = $page->getChild('test'); 319 $this->assertEqual($form->getAttribute('extra'), '"'); 320 321 $output = $page->capture(); 322 $this->assertEqual($output, '<form id="test" extra=""">contents</form>'); 323 } 324 325 function testAttributeVariableEscapeSingleQuot() 326 { 327 $template = '<form id="test" extra="\'" runat="server">contents</form>'; 328 329 $this->registerTestingTemplate('/attributes/attributevarescapesinglequot.html', $template); 330 $page = $this->initTemplate('/attributes/attributevarescapesinglequot.html'); 331 332 $form = $page->getChild('test'); 333 $this->assertEqual($form->getAttribute('extra'), "'"); 334 335 $output = $page->capture(); 336 $this->assertEqual($output, '<form id="test" extra="'">contents</form>'); 337 } 338 339 function testNullAttributeValue() 340 { 341 $template = '<P id="test" runat="server" extra>contents</P>'; 342 343 $this->registerTestingTemplate('/attributes/minimized_attribute.html', $template); 344 345 $page = $this->initTemplate('/attributes/minimized_attribute.html'); 346 $this->assertEqual($page->capture(), '<P id="test" extra>contents</P>'); 347 } 348 349 function testEmptyAttributeValue() 350 { 351 $template = '<P id="test" extra="">contents</P>'; 352 353 $this->registerTestingTemplate('/attributes/empty_attribute_value.html', $template); 354 355 $page = $this->initTemplate('/attributes/empty_attribute_value.html'); 356 357 $this->assertEqual($page->capture(), '<P id="test" extra="">contents</P>'); 358 } 359 360 function testJavaScriptAttribute() 361 { 362 $template = '<P onmouseover="window.status=\'Test\'; return true">contents</P>'; 363 364 $this->registerTestingTemplate('/attributes/javascriptattribute.html', $template); 365 $page = $this->initTemplate('/attributes/javascriptattribute.html'); 366 367 $output = $page->capture(); 368 $this->assertEqual($output, $template); 369 } 370 371 function testJavaScriptWactAttribute() 372 { 373 $template = '<P id="test" runat="server" onmouseover="window.status=\'Test\'; return true">contents</P>'; 374 375 $this->registerTestingTemplate('/attributes/javascriptwactattribute.html', $template); 376 $page = $this->initTemplate('/attributes/javascriptwactattribute.html'); 377 378 $output = $page->capture(); 379 $this->assertEqual($output, '<P id="test" onmouseover="' . htmlspecialchars('window.status=\'Test\'', ENT_QUOTES) . '; return true">contents</P>'); 380 } 381 382 /* This test case is fatal. commented out so the test run can continue 383 function testWactAttributeVariableId() { 384 $template = '<form id="test" runat="server" id="{$var}">contents</form>'; 385 386 $this->registerTestingTemplate('/attributes/wactattributevarid.html', $template); 387 $page = $this->initTemplate('/attributes/wactattributevarid.html'); 388 $output = $page->capture(); 389 390 $this->assertError(); // ILLEGALVARREFINATTR 391 $this->swallowErrors(); 392 } 393 */ 394 395 function testWactAttributeVariableRunat() 396 { 397 $template = '<form id="test" runat="{$var}">contents</form>'; 398 399 $this->registerTestingTemplate('/attributes/wactattributevarrunat.html', $template); 400 401 try 402 { 403 $page = $this->initTemplate('/attributes/wactattributevarrunat.html'); 404 $output = $page->capture(); 405 $this->assertTrue(false); 406 } 407 catch(WactException $e){} 408 } 409 410 function testWactAttributeVariableRunatSelfClose() 411 { 412 $template = '<br runat="{$var}"/>'; 413 414 $this->registerTestingTemplate('/attributes/wactattributevarrunatselfclose.html', $template); 415 try 416 { 417 $page = $this->initTemplate('/attributes/wactattributevarrunatselfclose.html'); 418 $output = $page->capture(); 419 $this->assertTrue(false); 420 } 421 catch(WactException $e){} 422 } 423 } 424 ?>