[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/wact/tests/cases/functional/ -> WactTagAttributesTest.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  /**

  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="&amp;&quot;&#039;&lt;&gt;">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="&amp;&quot;&#039;&lt;&gt;">contents</form>');
 187    }
 188  
 189    function testSetAttributeVariableEscape()
 190    {
 191      $template = '<core:SET Var="&quot;"/><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="&quot;">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="&lt;">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="&gt;">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="&amp;">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="&quot;">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="&#039;">contents</form>');
 253    }
 254  
 255    function testAttributeVariableEscape()
 256    {
 257      $template = '<form id="test" extra="&quot;&lt;&gt;&amp;" 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="&quot;&lt;&gt;&amp;">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="&lt;">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="&gt;">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="&amp;">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="&quot;">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="&#039;">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  ?>