From 55c4ac1bfe565f1ca7f537fdd8b7a201be28e581 Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 10 Nov 2005 12:47:19 +0000 Subject: Initial import of prado framework --- tests/UnitTests/framework/Collections/utList.php | 321 +++++++++++++++++++++++ tests/UnitTests/framework/Collections/utMap.php | 245 +++++++++++++++++ 2 files changed, 566 insertions(+) create mode 100644 tests/UnitTests/framework/Collections/utList.php create mode 100644 tests/UnitTests/framework/Collections/utMap.php (limited to 'tests/UnitTests/framework/Collections') diff --git a/tests/UnitTests/framework/Collections/utList.php b/tests/UnitTests/framework/Collections/utList.php new file mode 100644 index 00000000..faebae4c --- /dev/null +++ b/tests/UnitTests/framework/Collections/utList.php @@ -0,0 +1,321 @@ +_itemAdded=true; + } + + protected function removedItem($item) + { + $this->_itemRemoved=true; + } + + protected function canAddItem($item) + { + return $this->_canAddItem; + } + + protected function canRemoveItem($item) + { + return $this->_canRemoveItem; + } + + public function setCanAddItem($value) + { + $this->_canAddItem=$value; + } + + public function setCanRemoveItem($value) + { + $this->_canRemoveItem=$value; + } + + public function isItemAdded() + { + return $this->_itemAdded; + } + + public function isItemRemoved() + { + return $this->_itemRemoved; + } +} + +class utList extends UnitTestCase +{ + protected $list; + protected $item1,$item2,$item3; + + public function setUp() + { + $this->list=new TList; + $this->item1=new ListItem; + $this->item2=new ListItem; + $this->item3=new ListItem; + $this->list->add($this->item1); + $this->list->add($this->item2); + } + + public function tearDown() + { + $this->list=null; + $this->item1=null; + $this->item2=null; + $this->item3=null; + } + + public function testConstruct() + { + $a=array(1,2,3); + $list=new TList($a); + $this->assertEqual(3,$list->getCount()); + $list2=new TList($this->list); + $this->assertEqual(2,$list2->getCount()); + } + public function testGetCount() + { + $this->assertEqual(2,$this->list->getCount()); + $this->assertEqual(2,$this->list->Count); + } + + public function testAdd() + { + $this->list->add(null); + $this->list->add($this->item3); + $this->assertEqual(4,$this->list->getCount()); + $this->assertEqual(3,$this->list->indexOf($this->item3)); + } + + + public function testAddAt() + { + $this->list->addAt(0,$this->item3); + $this->assertEqual(3,$this->list->getCount()); + $this->assertEqual(2,$this->list->indexOf($this->item2)); + $this->assertEqual(0,$this->list->indexOf($this->item3)); + $this->assertEqual(1,$this->list->indexOf($this->item1)); + try + { + $this->list->addAt(4,$this->item3); + $this->fail('exception not raised when adding item at an out-of-range index'); + } + catch(TIndexOutOfRangeException $e) + { + $this->pass(); + } + } + + public function testRemove() + { + $this->list->remove($this->item1); + $this->assertEqual(1,$this->list->getCount()); + $this->assertEqual(-1,$this->list->indexOf($this->item1)); + $this->assertEqual(0,$this->list->indexOf($this->item2)); + try + { + $this->list->remove($this->item1); + $this->fail('exception not raised when removing nonexisting item'); + } + catch(Exception $e) + { + $this->pass(); + } + } + + public function testRemoveAt() + { + $this->list->add($this->item3); + $this->list->removeAt(1); + $this->assertEqual(-1,$this->list->indexOf($this->item2)); + $this->assertEqual(1,$this->list->indexOf($this->item3)); + $this->assertEqual(0,$this->list->indexOf($this->item1)); + try + { + $this->list->removeAt(2); + $this->fail('exception not raised when removing item with invalid index'); + } + catch(TIndexOutOfRangeException $e) + { + $this->pass(); + } + } + + public function testClear() + { + $this->list->clear(); + $this->assertEqual(0,$this->list->getCount()); + $this->assertEqual(-1,$this->list->indexOf($this->item1)); + $this->assertEqual(-1,$this->list->indexOf($this->item2)); + } + + public function testContains() + { + $this->assertTrue($this->list->contains($this->item1)); + $this->assertTrue($this->list->contains($this->item2)); + $this->assertFalse($this->list->contains($this->item3)); + } + + public function testIndexOf() + { + $this->assertEqual(0,$this->list->indexOf($this->item1)); + $this->assertEqual(1,$this->list->indexOf($this->item2)); + $this->assertEqual(-1,$this->list->indexOf($this->item3)); + } + + public function testCopyFrom() + { + $array=array($this->item3,$this->item1); + $this->list->copyFrom($array); + $this->assertTrue(count($array)==2 && $this->list[0]===$this->item3 && $this->list[1]===$this->item1); + try + { + $this->list->copyFrom($this); + $this->fail('exception not raised when copying from non-traversable object'); + } + catch(TInvalidDataTypeException $e) + { + $this->pass(); + } + } + + public function testMergeWith() + { + $array=array($this->item3,$this->item1); + $this->list->mergeWith($array); + $this->assertTrue($this->list->getCount()==4 && $this->list[0]===$this->item1 && $this->list[3]===$this->item1); + try + { + $this->list->mergeWith($this); + $this->fail('exception not raised when copying from non-traversable object'); + } + catch(TInvalidDataTypeException $e) + { + $this->pass(); + } + } + + public function testToArray() + { + $array=$this->list->toArray(); + $this->assertTrue(count($array)==2 && $array[0]===$this->item1 && $array[1]===$this->item2); + } + + public function testArrayRead() + { + $this->assertTrue($this->list[0]===$this->item1); + $this->assertTrue($this->list[1]===$this->item2); + try + { + $a=$this->list[2]; + $this->fail('exception not raised when accessing item with out-of-range index'); + } + catch(TIndexOutOfRangeException $e) + { + $this->pass(); + } + } + + public function testArrayWrite() + { + $this->list[]=$this->item3; + $this->assertTrue($this->list[2]===$this->item3 && $this->list->getCount()===3); + $this->list[0]=$this->item3; + $this->assertTrue($this->list[0]===$this->item3 && $this->list->getCount()===3 && $this->list->indexOf($this->item1)===-1); + unset($this->list[1]); + $this->assertTrue($this->list->getCount()===2 && $this->list->indexOf($this->item2)===-1); + try + { + $this->list[5]=$this->item3; + $this->fail('exception not raised when setting item at an out-of-range index'); + } + catch(TIndexOutOfRangeException $e) + { + $this->pass(); + } + try + { + unset($this->list[5]); + $this->fail('exception not raised when unsetting item at an out-of-range index'); + } + catch(TIndexOutOfRangeException $e) + { + $this->pass(); + } + } + + public function testGetIterator() + { + $n=0; + $found=0; + foreach($this->list as $index=>$item) + { + foreach($this->list as $a=>$b); // test of iterator + $n++; + if($index===0 && $item===$this->item1) + $found++; + if($index===1 && $item===$this->item2) + $found++; + } + $this->assertTrue($n==2 && $found==2); + } + + public function testArrayMisc() + { + $this->assertEqual(1,count($this->list)); + $this->assertTrue(isset($this->list[1])); + $this->assertFalse(isset($this->list[2])); + } + + public function testDerivedClasses() + { + $newList=new NewList; + $this->assertFalse($newList->isItemAdded()); + $newList->add($this->item1); + $this->assertTrue($newList->isItemAdded()); + $newList->add($this->item2); + + $newList->setCanAddItem(false); + try + { + $newList->add($this->item3); + $this->fail('no exception raised when adding an item that is disallowed'); + } + catch(TInvalidOperationException $e) + { + $this->assertEqual(2,$newList->getCount()); + $this->pass(); + } + + $this->assertFalse($newList->isItemRemoved()); + $newList->remove($this->item1); + $this->assertTrue($newList->isItemRemoved()); + + $newList->setCanRemoveItem(false); + try + { + $newList->remove($this->item2); + $this->fail('no exception raised when removing an item that is disallowed'); + } + catch(TInvalidOperationException $e) + { + $this->assertEqual(1,$newList->getCount()); + $this->pass(); + } + } +} + +?> \ No newline at end of file diff --git a/tests/UnitTests/framework/Collections/utMap.php b/tests/UnitTests/framework/Collections/utMap.php new file mode 100644 index 00000000..1f7a20ad --- /dev/null +++ b/tests/UnitTests/framework/Collections/utMap.php @@ -0,0 +1,245 @@ +_itemAdded=true; + } + + protected function removedItem($key,$value) + { + $this->_itemRemoved=true; + } + + protected function canAddItem($key,$value) + { + return $this->_canAddItem; + } + + protected function canRemoveItem($key,$value) + { + return $this->_canRemoveItem; + } + + public function setCanAddItem($value) + { + $this->_canAddItem=$value; + } + + public function setCanRemoveItem($value) + { + $this->_canRemoveItem=$value; + } + + public function isItemAdded() + { + return $this->_itemAdded; + } + + public function isItemRemoved() + { + return $this->_itemRemoved; + } +} + +class utMap extends UnitTestCase +{ + protected $map; + protected $item1,$item2,$item3; + + public function setUp() + { + $this->map=new TMap; + $this->item1=new MapItem; + $this->item2=new MapItem; + $this->item3=new MapItem; + $this->map->add('key1',$this->item1); + $this->map->add('key2',$this->item2); + } + + public function tearDown() + { + $this->map=null; + $this->item1=null; + $this->item2=null; + $this->item3=null; + } + + public function testConstruct() + { + $a=array(1,2,'key3'=>3); + $map=new TMap($a); + $this->assertEqual(3,$map->getCount()); + $map2=new TMap($this->map); + $this->assertEqual(2,$map2->getCount()); + } + + public function testGetCount() + { + $this->assertEqual(2,$this->map->getCount()); + } + + public function testGetKeys() + { + $keys=$this->map->getKeys(); + $this->assertTrue(count($keys)===2 && $keys[0]==='key1' && $keys[1]==='key2'); + } + + public function testAdd() + { + $this->map->add('key3',$this->item3); + $this->assertTrue($this->map->getCount()==3 && $this->map->contains('key3')); + } + + public function testRemove() + { + $this->map->remove('key1'); + $this->assertTrue($this->map->getCount()==1 && !$this->map->contains('key1')); + $this->assertTrue($this->map->remove('unknown key')===null); + } + + public function testClear() + { + $this->map->clear(); + $this->assertTrue($this->map->getCount()==0 && !$this->map->contains('key1') && !$this->map->contains('key2')); + } + + public function testContains() + { + $this->assertTrue($this->map->contains('key1')); + $this->assertTrue($this->map->contains('key2')); + $this->assertFalse($this->map->contains('key3')); + } + + public function testCopyFrom() + { + $array=array('key3'=>$this->item3,'key4'=>$this->item1); + $this->map->copyFrom($array); + $this->assertTrue($this->map->getCount()==2 && $this->map['key3']===$this->item3 && $this->map['key4']===$this->item1); + try + { + $this->map->copyFrom($this); + $this->fail('no exception raised when copying a non-traversable object'); + } + catch(TInvalidDataTypeException $e) + { + $this->pass(); + } + } + + public function testMergeWith() + { + $array=array('key2'=>$this->item1,'key3'=>$this->item3); + $this->map->mergeWith($array); + $this->assertTrue($this->map->getCount()==3 && $this->map['key2']===$this->item1 && $this->map['key3']===$this->item3); + try + { + $this->map->mergeWith($this); + $this->fail('no exception raised when copying a non-traversable object'); + } + catch(TInvalidDataTypeException $e) + { + $this->pass(); + } + } + + public function testArrayRead() + { + $this->assertTrue($this->map['key1']===$this->item1); + $this->assertTrue($this->map['key2']===$this->item2); + $this->assertEqual(null,$this->map['key3']); + } + + public function testArrayWrite() + { + $this->map['key3']=$this->item3; + $this->assertTrue($this->map['key3']===$this->item3 && $this->map->getCount()===3); + $this->map['key1']=$this->item3; + $this->assertTrue($this->map['key1']===$this->item3 && $this->map->getCount()===3); + unset($this->map['key2']); + $this->assertTrue($this->map->getCount()===2 && !$this->map->contains('key2')); + try + { + unset($this->map['unknown key']); + $this->pass(); + } + catch(Exception $e) + { + $this->fail('exception raised when unsetting element with unknown key'); + } + } + + public function testArrayForeach() + { + $n=0; + $found=0; + foreach($this->map as $index=>$item) + { + $n++; + if($index==='key1' && $item===$this->item1) + $found++; + if($index==='key2' && $item===$this->item2) + $found++; + } + $this->assertTrue($n==2 && $found==2); + } + + public function testArrayMisc() + { + $this->assertEqual(1,count($this->map)); + $this->assertTrue(isset($this->map['key1'])); + $this->assertFalse(isset($this->map['unknown key'])); + } + + public function testDerivedClasses() + { + $newMap=new NewMap; + $this->assertFalse($newMap->isItemAdded()); + $newMap->add('key','value'); + $this->assertTrue($newMap->isItemAdded()); + $newMap->add('key2','value2'); + + $newMap->setCanAddItem(false); + try + { + $newMap->add('new key','new value'); + $this->fail('no exception raised when adding an item that is disallowed'); + } + catch(TInvalidOperationException $e) + { + $this->assertEqual(2,$newMap->getCount()); + $this->pass(); + } + + $this->assertFalse($newMap->isItemRemoved()); + $newMap->remove('key'); + $this->assertTrue($newMap->isItemRemoved()); + + $newMap->setCanRemoveItem(false); + try + { + $newMap->remove('key2'); + $this->fail('no exception raised when removing an item that is disallowed'); + } + catch(TInvalidOperationException $e) + { + $this->assertEqual(1,$newMap->getCount()); + $this->pass(); + } + } +} + +?> \ No newline at end of file -- cgit v1.2.3