From 353b3d04ce7a03c7c87f7343e766b3f45e96003c Mon Sep 17 00:00:00 2001
From: tof <>
Date: Wed, 27 Jun 2007 14:26:52 +0000
Subject: implement unit tests for THtmlWriter
---
tests/unit/Web/UI/THtmlWriterTest.php | 137 +++++++++++++++++++++++++++++-----
1 file changed, 118 insertions(+), 19 deletions(-)
(limited to 'tests')
diff --git a/tests/unit/Web/UI/THtmlWriterTest.php b/tests/unit/Web/UI/THtmlWriterTest.php
index f2ed7086..fa5bb954 100644
--- a/tests/unit/Web/UI/THtmlWriterTest.php
+++ b/tests/unit/Web/UI/THtmlWriterTest.php
@@ -3,65 +3,164 @@ require_once dirname(__FILE__).'/../../phpunit.php';
Prado::using('System.Web.UI.THtmlWriter');
+/**
+ * Implement a writer that flush the content to a variable, to simulate a real flush
+ */
+
+class TestWriter extends TComponent implements ITextWriter
+{
+ private $_str='';
+ private $_flushedContent=null;
+
+
+ public function flush()
+ {
+ $this->_flushedContent=$this->_str;
+ $this->_str='';
+ return $this->_flushedContent;
+ }
+
+
+ public function write($str)
+ {
+ $this->_str.=$str;
+ }
+
+
+ public function writeLine($str='')
+ {
+ $this->write($str."\n");
+ }
+
+ // Accessors to get value of private vars during tests
+ public function getFlushedContent() { return $this->_flushedContent; }
+ public function getStr() { return $this->_str; }
+}
+
+
/**
* @package System.Web.UI
*/
class THtmlWriterTest extends PHPUnit_Framework_TestCase {
-
+
+ private static $output=null;
+
+ public function setUp () {
+ // We need an output writer, use a TestWriter for this
+ if (self::$output===null) self::$output=new TestWriter();
+ }
+
public function testConstruct() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ self::assertEquals(self::$output, $writer->getWriter());
}
-
+
public function testSetAndGetWriter() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(null);
+ self::assertNull($writer->getWriter());
+ $writer->setWriter(self::$output);
+ self::assertEquals(self::$output, $writer->getWriter());
}
-
+
public function testAddAttributes() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addAttributes(array ('type' => 'text', 'value' => 'Prado & Cie'));
+ // get the private var _attributes
+ $result=self::getAttribute($writer, '_attributes');
+ self::assertEquals('text',$result['type']);
+ self::assertEquals(THttpUtility::htmlEncode('Prado & Cie'), $result['value']);
}
-
+
public function testAddAttribute() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addAttribute('type','text');
+ $writer->addAttribute('value','Prado & Cie');
+ $result=self::getAttribute($writer, '_attributes');
+ self::assertEquals('text',$result['type']);
+ self::assertEquals(THttpUtility::htmlEncode('Prado & Cie'), $result['value']);
}
-
+
public function testRemoveAttribute() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addAttribute('type','text');
+ $writer->addAttribute('value','Prado & Cie');
+ $writer->removeAttribute('value');
+ $result=self::getAttribute($writer, '_attributes');
+ // 'type' should be present, 'value' not
+ self::assertTrue(isset($result['type']));
+ self::assertFalse(isset($result['value']));
}
public function testAddStyleAttributes() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addStyleAttributes(array ('font-size' => '1em', 'background-image'=>'url(image.gif)'));
+ $result=self::getAttribute($writer, '_styles');
+ self::assertEquals('1em', $result['font-size']);
+ self::assertEquals(THttpUtility::htmlEncode('url(image.gif)'), $result['background-image']);
}
public function testAddStyleAttribute() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addStyleAttribute('font-size','1em');
+ $writer->addStyleAttribute('background-image','url(image.gif)');
+ $result=self::getAttribute($writer, '_styles');
+ self::assertEquals('1em', $result['font-size']);
+ self::assertEquals(THttpUtility::htmlEncode('url(image.gif)'), $result['background-image']);
}
public function testRemoveStyleAttribute() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addStyleAttribute('font-size','1em');
+ $writer->addStyleAttribute('background-image','url(image.gif)');
+ $writer->removeStyleAttribute('font-size');
+ $result=self::getAttribute($writer, '_styles');
+ self::assertTrue(isset($result['background-image']));
+ self::assertFalse(isset($result['font-size']));
}
public function testFlush() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->write('Some Text');
+ $writer->flush();
+ self::assertEquals('Some Text', self::$output->getFlushedContent());
}
public function testWrite() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->write('Some Text');;
+ self::assertEquals('Some Text', self::$output->flush());
+
}
public function testWriteLine() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->writeLine('Some Text');;
+ self::assertEquals("Some Text\n", self::$output->flush());
+
}
public function testWriteBreak() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->writeBreak();
+ self::assertEquals("
", self::$output->flush());
+
}
public function testRenderBeginTag() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->addAttribute('type','text');
+ $writer->addAttribute('value','Prado');
+ $writer->addStyleAttribute('font-size','1em');
+ $writer->renderBeginTag('input');
+ self::assertEquals('', self::$output->flush());
}
public function testRenderEndTag() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $writer=new THtmlWriter(self::$output);
+ $writer->renderBeginTag('div');
+ $writer->write('Div Content');
+ $writer->renderEndTag();
+ self::assertEquals('