summaryrefslogtreecommitdiff
path: root/tests/UnitTests/framework/utComponent.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/UnitTests/framework/utComponent.php')
-rw-r--r--tests/UnitTests/framework/utComponent.php224
1 files changed, 224 insertions, 0 deletions
diff --git a/tests/UnitTests/framework/utComponent.php b/tests/UnitTests/framework/utComponent.php
new file mode 100644
index 00000000..2683652a
--- /dev/null
+++ b/tests/UnitTests/framework/utComponent.php
@@ -0,0 +1,224 @@
+<?php
+
+require_once(dirname(__FILE__).'/common.php');
+
+class NewComponent extends TComponent
+{
+ private $_object=null;
+ private $_text='default';
+ private $_eventHandled=false;
+
+ public function getText()
+ {
+ return $this->_text;
+ }
+
+ public function setText($value)
+ {
+ $this->_text=$value;
+ }
+
+ public function getObject()
+ {
+ if(!$this->_object)
+ {
+ $this->_object=new NewComponent;
+ $this->_object->_text='object text';
+ }
+ return $this->_object;
+ }
+
+ public function onMyEvent($param)
+ {
+ $this->raiseEvent('MyEvent',$this,$param);
+ }
+
+ public function myEventHandler($sender,$param)
+ {
+ $this->_eventHandled=true;
+ }
+
+ public function isEventHandled()
+ {
+ return $this->_eventHandled;
+ }
+}
+
+class utComponent extends UnitTestCase
+{
+ protected $component;
+
+ public function setUp()
+ {
+ $this->component=new NewComponent;
+ }
+
+ public function tearDown()
+ {
+ $this->component=null;
+ }
+
+ public function testHasProperty()
+ {
+ $this->assertTrue($this->component->hasProperty('Text'));
+ $this->assertTrue($this->component->hasProperty('text'));
+ $this->assertFalse($this->component->hasProperty('Caption'));
+ }
+
+ public function testCanGetProperty()
+ {
+ $this->assertTrue($this->component->canGetProperty('Text'));
+ $this->assertTrue($this->component->canGetProperty('text'));
+ $this->assertFalse($this->component->canGetProperty('Caption'));
+ }
+
+ public function testCanSetProperty()
+ {
+ $this->assertTrue($this->component->canSetProperty('Text'));
+ $this->assertTrue($this->component->canSetProperty('text'));
+ $this->assertFalse($this->component->canSetProperty('Caption'));
+ }
+
+ public function testGetProperty()
+ {
+ $this->assertTrue('default'===$this->component->Text);
+ try
+ {
+ $value2=$this->component->Caption;
+ $this->fail('exception not raised when getting undefined property');
+ }
+ catch(TInvalidOperationException $e)
+ {
+ $this->pass();
+ }
+ }
+
+ public function testSetProperty()
+ {
+ $value='new value';
+ $this->component->Text=$value;
+ $text=$this->component->Text;
+ $this->assertTrue($value===$this->component->Text);
+ try
+ {
+ $this->component->NewMember=$value;
+ $this->fail('exception not raised when setting undefined property');
+ }
+ catch(TInvalidOperationException $e)
+ {
+ $this->pass();
+ }
+ }
+
+ public function testGetPropertyByPath()
+ {
+ $this->assertTrue('object text'===$this->component->getPropertyByPath('Object.Text'));
+ }
+
+ public function testSetPropertyByPath()
+ {
+ $this->component->setPropertyByPath('Object.Text','new object text');
+ $this->assertEqual('new object text',$this->component->getPropertyByPath('Object.Text'));
+ }
+
+ public function testHasEvent()
+ {
+ $this->assertTrue($this->component->hasEvent('MyEvent'));
+ $this->assertTrue($this->component->hasEvent('myevent'));
+ $this->assertFalse($this->component->hasEvent('YourEvent'));
+ }
+
+ public function testHasEventHandler()
+ {
+ $this->assertFalse($this->component->hasEventHandler('MyEvent'));
+ $this->component->attachEventHandler('MyEvent','foo');
+ $this->assertTrue($this->component->hasEventHandler('MyEvent'));
+ }
+
+ public function testGetEventHandlers()
+ {
+ $list=$this->component->getEventHandlers('MyEvent');
+ $this->assertTrue(($list instanceof TList) && ($list->getCount()===0));
+ $this->component->attachEventHandler('MyEvent','foo');
+ $this->assertTrue(($list instanceof TList) && ($list->getCount()===1));
+ try
+ {
+ $list=$this->component->getEventHandlers('YourEvent');
+ $this->fail('exception not raised when getting event handlers for undefined event');
+ }
+ catch(TInvalidOperationException $e)
+ {
+ $this->pass();
+ }
+ }
+
+ public function testAttachEventHandler()
+ {
+ $this->component->attachEventHandler('MyEvent','foo');
+ $this->assertTrue($this->component->getEventHandlers('MyEvent')->getCount()===1);
+ try
+ {
+ $this->component->attachEventHandler('YourEvent','foo');
+ $this->fail('exception not raised when attaching event handlers for undefined event');
+ }
+ catch(TInvalidOperationException $e)
+ {
+ $this->pass();
+ }
+ $this->component->MyEvent[]='foo2';
+ $this->assertTrue($this->component->getEventHandlers('MyEvent')->getCount()===2);
+ $this->component->getEventHandlers('MyEvent')->add('foo3');
+ $this->assertTrue($this->component->getEventHandlers('MyEvent')->getCount()===3);
+ $this->component->MyEvent[0]='foo4';
+ $this->assertTrue($this->component->getEventHandlers('MyEvent')->getCount()===3);
+ $this->component->getEventHandlers('MyEvent')->addAt(0,'foo5');
+ $this->assertTrue($this->component->MyEvent->Count===4 && $this->component->MyEvent[0]==='foo5');
+ $this->component->MyEvent='foo6';
+ $this->assertTrue($this->component->MyEvent->Count===5 && $this->component->MyEvent[4]==='foo6');
+ }
+
+ public function testRaiseEvent()
+ {
+ $this->component->attachEventHandler('MyEvent',array($this->component,'myEventHandler'));
+ $this->assertFalse($this->component->isEventHandled());
+ $this->component->raiseEvent('MyEvent',$this,null);
+ $this->assertTrue($this->component->isEventHandled());
+ $this->component->attachEventHandler('MyEvent',array($this->component,'Object.myEventHandler'));
+ $this->assertFalse($this->component->Object->isEventHandled());
+ $this->component->raiseEvent('MyEvent',$this,null);
+ $this->assertTrue($this->component->Object->isEventHandled());
+ }
+
+ public function testEvaluateExpression()
+ {
+ $expression="1+2";
+ $this->assertTrue(3===$this->component->evaluateExpression($expression));
+ try
+ {
+ $button=$this->component->evaluateExpression('$this->button');
+ $this->fail('exception not raised when evaluating an invalid exception');
+ }
+ catch(Exception $e)
+ {
+ $this->pass();
+ }
+ }
+
+ public function testEvaluateStatements()
+ {
+ $statements='$a="test string"; echo $a;';
+ $this->assertEqual('test string',$this->component->evaluateStatements($statements));
+ try
+ {
+ $statements='$a=new NewComponent; echo $a->button;';
+ $button=$this->component->evaluateStatements($statements);
+ $this->fail('exception not raised when evaluating an invalid statement');
+ }
+ catch(Exception $e)
+ {
+ $this->pass();
+ }
+ }
+}
+
+?> \ No newline at end of file