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/Data/CacheTestCase.php | 98 ++++++++++++++++++++++++ tests/UnitTests/framework/Data/utMemCache.php | 66 ++++++++++++++++ tests/UnitTests/framework/Data/utSqliteCache.php | 59 ++++++++++++++ tests/UnitTests/framework/Data/utXmlDocument.php | 68 ++++++++++++++++ tests/UnitTests/framework/Data/xml/data1.xml | 45 +++++++++++ tests/UnitTests/framework/Data/xml/data1.xml.out | 41 ++++++++++ tests/UnitTests/framework/Data/xml/data2.xml | 41 ++++++++++ tests/UnitTests/framework/Data/xml/data2.xml.out | 40 ++++++++++ tests/UnitTests/framework/Data/xml/data3.xml | 46 +++++++++++ tests/UnitTests/framework/Data/xml/data3.xml.out | 45 +++++++++++ 10 files changed, 549 insertions(+) create mode 100644 tests/UnitTests/framework/Data/CacheTestCase.php create mode 100644 tests/UnitTests/framework/Data/utMemCache.php create mode 100644 tests/UnitTests/framework/Data/utSqliteCache.php create mode 100644 tests/UnitTests/framework/Data/utXmlDocument.php create mode 100644 tests/UnitTests/framework/Data/xml/data1.xml create mode 100644 tests/UnitTests/framework/Data/xml/data1.xml.out create mode 100644 tests/UnitTests/framework/Data/xml/data2.xml create mode 100644 tests/UnitTests/framework/Data/xml/data2.xml.out create mode 100644 tests/UnitTests/framework/Data/xml/data3.xml create mode 100644 tests/UnitTests/framework/Data/xml/data3.xml.out (limited to 'tests/UnitTests/framework/Data') diff --git a/tests/UnitTests/framework/Data/CacheTestCase.php b/tests/UnitTests/framework/Data/CacheTestCase.php new file mode 100644 index 00000000..68a7b067 --- /dev/null +++ b/tests/UnitTests/framework/Data/CacheTestCase.php @@ -0,0 +1,98 @@ +_cache; + } + + public function setCache($cache) + { + $this->_cache=$cache; + } + + public function basicOperations() + { + $object=new TComponent; + $number=12345; + $string='12345\'"'; + $array=array('123'=>123,'abc'=>'def'); + + // test set (first time) + $this->assertFalse($this->_cache->get('object')); + $this->assertTrue($this->_cache->set('object',$object)); + $this->assertTrue($this->_cache->get('object') instanceof TComponent); + $this->assertFalse($this->_cache->get('number')); + $this->assertTrue($this->_cache->set('number',$number)); + $this->assertTrue($this->_cache->get('number')===$number); + $this->assertFalse($this->_cache->get('string')); + $this->assertTrue($this->_cache->set('string',$string)); + $this->assertTrue($this->_cache->get('string')===$string); + $this->assertFalse($this->_cache->get('array')); + $this->assertTrue($this->_cache->set('array',$array)); + $this->assertTrue($this->_cache->get('array')===$array); + + // test set (second time) + $this->assertTrue($this->_cache->set('object',$array)); + $this->assertTrue($this->_cache->get('object')===$array); + + // test delete + $this->assertTrue($this->_cache->delete('object')); + $this->assertFalse($this->_cache->get('object')); + $this->assertTrue($this->_cache->delete('number')); + $this->assertFalse($this->_cache->get('number')); + $this->assertTrue($this->_cache->delete('string')); + $this->assertFalse($this->_cache->get('string')); + $this->assertTrue($this->_cache->delete('array')); + $this->assertFalse($this->_cache->get('array')); + + // test add (first time) + $this->assertFalse($this->_cache->get('object')); + $this->assertTrue($this->_cache->add('object',$object)); + $this->assertTrue($this->_cache->get('object') instanceof TComponent); + $this->assertFalse($this->_cache->get('number')); + $this->assertTrue($this->_cache->add('number',$number)); + $this->assertTrue($this->_cache->get('number')===$number); + $this->assertFalse($this->_cache->get('string')); + $this->assertTrue($this->_cache->add('string',$string)); + $this->assertTrue($this->_cache->get('string')===$string); + $this->assertFalse($this->_cache->get('array')); + $this->assertTrue($this->_cache->add('array',$array)); + $this->assertTrue($this->_cache->get('array')===$array); + + // test add (second time) + $this->assertFalse($this->_cache->add('object',$array)); + $this->assertTrue($this->_cache->get('object') instanceof TComponent); + + // test replace + $this->assertTrue($this->_cache->replace('object',$array)); + $this->assertTrue($this->_cache->get('object')===$array); + $this->assertFalse($this->_cache->replace('object2',$array)); + $this->assertFalse($this->_cache->get('object2')); + + // test flush + $this->assertTrue($this->_cache->set('number',$number)); + $this->assertTrue($this->_cache->get('number')===$number); + $this->assertTrue($this->_cache->flush()); + $this->assertFalse($this->_cache->get('number')); + + // test expiring + // set a value with 5sec valid time + $this->_cache->set('expiring',123,3); + $this->assertTrue($this->_cache->get('expiring')===123); + $this->_cache->set('nonexpiring',456); + $this->assertTrue($this->_cache->get('nonexpiring')===456); + + // wait 6sec to see if the value still exists + sleep(4); + $this->assertFalse($this->_cache->get('expiring')); + $this->assertTrue($this->_cache->get('nonexpiring')===456); + } +} + +?> \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/utMemCache.php b/tests/UnitTests/framework/Data/utMemCache.php new file mode 100644 index 00000000..26981f63 --- /dev/null +++ b/tests/UnitTests/framework/Data/utMemCache.php @@ -0,0 +1,66 @@ +fail('TMemCache is not tested. PHP extension "memcache" is required by TMemCache.'); + return; + } + $cache=new TMemCache; + + $this->assertTrue($cache->getHost()==='localhost'); + $cache->setHost('localhost2'); + $this->assertTrue($cache->getHost()==='localhost2'); + + $this->assertTrue($cache->getPort()===11211); + $cache->setPort(1000); + $this->assertTrue($cache->getPort()===1000); + + $cache->init(null,null); + try + { + $cache->setHost('newhost'); + $this->fail('exception not raised when setting Server after init'); + } + catch(TInvalidOperationException $e) + { + $this->pass(); + } + try + { + $cache->setPort(10000); + $this->fail('exception not raised when setting Port after init'); + } + catch(TInvalidOperationException $e) + { + $this->pass(); + } + } + + public function testBasicOperations() + { + if(!extension_loaded('memcache')) + { + $this->fail('TMemCache is not tested. PHP extension "memcache" is required by TMemCache.'); + return; + } + $cache=new TMemCache; + $cache->init(null,null); + $this->setCache($cache); + $this->basicOperations(); + $this->setCache(null); + } +} + +?> \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/utSqliteCache.php b/tests/UnitTests/framework/Data/utSqliteCache.php new file mode 100644 index 00000000..726a5c08 --- /dev/null +++ b/tests/UnitTests/framework/Data/utSqliteCache.php @@ -0,0 +1,59 @@ +dbFile='utSqliteCache.test'; + } + + public function tearDown() + { + $file=Prado::getPathOfNamespace('utSqliteCache.test',TSqliteCache::DB_FILE_EXT); + if(is_file($file)) + unlink($file); + else + $this->fail("Unable to clean up db file: '".$file."'."); + } + + public function testInit() + { + $cache=new TSqliteCache; + + $this->assertTrue($cache->getDbFile()===null); + $cache->setDbFile($this->dbFile); + $this->assertTrue($cache->getDbFile()===$this->dbFile); + + $cache->init(null,null); + try + { + $cache->setDbFile('newfile.db'); + $this->fail('exception not raised when setting DbFile after init'); + } + catch(TInvalidOperationException $e) + { + $this->pass(); + } + } + + public function testBasicOperations() + { + $cache=new TSqliteCache; + $cache->setDbFile($this->dbFile); + $cache->init(null,null); + $this->setCache($cache); + $this->basicOperations(); + $this->setCache(null); + } +} + +?> \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/utXmlDocument.php b/tests/UnitTests/framework/Data/utXmlDocument.php new file mode 100644 index 00000000..f66a4f2d --- /dev/null +++ b/tests/UnitTests/framework/Data/utXmlDocument.php @@ -0,0 +1,68 @@ +loadFromFile($dir.'/data1.xml'); + $doc->saveToFile($dir.'/data1.xml.tmp'); + $this->assertTrue($this->compareFiles($dir.'/data1.xml.tmp',$dir.'/data1.xml.out')); + @unlink($dir.'/data1.xml.tmp'); + + // an XML file with Chinese characters + $doc->loadFromFile($dir.'/data2.xml'); + $doc->saveToFile($dir.'/data2.xml.tmp'); + $this->assertTrue($this->compareFiles($dir.'/data2.xml.tmp',$dir.'/data2.xml.out')); + @unlink($dir.'/data2.xml.tmp'); + + // a typical Prado Application configuration file + $doc=new TXmlDocument; + $doc->loadFromFile($dir.'/data3.xml'); + $doc->saveToFile($dir.'/data3.xml.tmp'); + $this->assertTrue($this->compareFiles($dir.'/data3.xml.tmp',$dir.'/data3.xml.out')); + @unlink($dir.'/data3.xml.tmp'); + } + + protected function compareFiles($file1,$file2) + { + return file_get_contents($file1)===file_get_contents($file2); + } + + public function testAccessDomTree() + { + $dir=dirname(__FILE__).'/xml'; + $doc=new TXmlDocument; + $doc->loadFromFile($dir.'/data1.xml'); + $this->assertTrue($doc->getVersion()==='1.0'); + $this->assertTrue($doc->getEncoding()==='utf-8'); + $this->assertTrue($doc->getElements()->getCount()===2); + $this->assertTrue($doc->getElements()->itemAt(0)->getTagName()==='title'); + $this->assertTrue($doc->getElements()->itemAt(0)->getValue()==='My lists'); + $this->assertTrue($doc->getElements()->itemAt(1)->getTagName()==='chapter'); + $this->assertTrue($doc->getElements()->itemAt(1)->getAttribute('id')==='books'); + } + + public function testUpdateDomTree() + { + } + + public function testComposeDomTree() + { + } +} + +?> \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/xml/data1.xml b/tests/UnitTests/framework/Data/xml/data1.xml new file mode 100644 index 00000000..d865680a --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data1.xml @@ -0,0 +1,45 @@ + + + + My lists + + My books + + + + + + Title + Author + Language + ISBN + + + + + The Grapes of Wrath + John Steinbeck + en + 0140186409 + + + The Pearl + John Steinbeck + en + 014017737X + + + Samarcande + Amine Maalouf + fr + 2253051209 + + + + + + + + diff --git a/tests/UnitTests/framework/Data/xml/data1.xml.out b/tests/UnitTests/framework/Data/xml/data1.xml.out new file mode 100644 index 00000000..de491e4c --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data1.xml.out @@ -0,0 +1,41 @@ + + + My lists + + My books + + + + + + Title + Author + Language + ISBN + + + + + The Grapes of Wrath + John Steinbeck + en + 0140186409 + + + The Pearl + John Steinbeck + en + 014017737X + + + Samarcande + Amine Maalouf + fr + 2253051209 + + + + + + + \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/xml/data2.xml b/tests/UnitTests/framework/Data/xml/data2.xml new file mode 100644 index 00000000..9231ef7b --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data2.xml @@ -0,0 +1,41 @@ + + + + 我的书 + + + + + + 标题 + 作者 + 语言 + ISBN + + + + + The Grapes of Wrath + John Steinbeck + en + 0140186409 + + + The Pearl + John Steinbeck + en + 014017737X + + + Samarcande + Amine Maalouf + fr + 2253051209 + + + + + + + + diff --git a/tests/UnitTests/framework/Data/xml/data2.xml.out b/tests/UnitTests/framework/Data/xml/data2.xml.out new file mode 100644 index 00000000..d688884c --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data2.xml.out @@ -0,0 +1,40 @@ + + + + 我的书 + + + + + + 标题 + 作者 + 语言 + ISBN + + + + + The Grapes of Wrath + John Steinbeck + en + 0140186409 + + + The Pearl + John Steinbeck + en + 014017737X + + + Samarcande + Amine Maalouf + fr + 2253051209 + + + + + + + \ No newline at end of file diff --git a/tests/UnitTests/framework/Data/xml/data3.xml b/tests/UnitTests/framework/Data/xml/data3.xml new file mode 100644 index 00000000..9e66a7f0 --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data3.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + qiang.xue@gmail.com + + + diff --git a/tests/UnitTests/framework/Data/xml/data3.xml.out b/tests/UnitTests/framework/Data/xml/data3.xml.out new file mode 100644 index 00000000..a87d0558 --- /dev/null +++ b/tests/UnitTests/framework/Data/xml/data3.xml.out @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + qiang.xue@gmail.com + + + \ No newline at end of file -- cgit v1.2.3