summaryrefslogtreecommitdiff
path: root/tests/unit/SQLMap/InheritanceTest.php
diff options
context:
space:
mode:
authorwei <>2006-04-14 11:23:56 +0000
committerwei <>2006-04-14 11:23:56 +0000
commitf6a5e7589396854e10e023c25237b47e512ff047 (patch)
tree2b313bb8b66869235ee06b9cae2af2f7645cf5c9 /tests/unit/SQLMap/InheritanceTest.php
parent3d3f8d3832921f99daf8ce1953304763c2e76c62 (diff)
Adding SQLMap unit tests. Allow sqlmap to use Prado's caching module to cache records.
Diffstat (limited to 'tests/unit/SQLMap/InheritanceTest.php')
-rw-r--r--tests/unit/SQLMap/InheritanceTest.php146
1 files changed, 146 insertions, 0 deletions
diff --git a/tests/unit/SQLMap/InheritanceTest.php b/tests/unit/SQLMap/InheritanceTest.php
new file mode 100644
index 00000000..24e9f987
--- /dev/null
+++ b/tests/unit/SQLMap/InheritanceTest.php
@@ -0,0 +1,146 @@
+<?php
+
+require_once(dirname(__FILE__).'/BaseTest.php');
+
+/**
+ * @package System.DataAccess.SQLMap
+ */
+class InheritanceTest extends BaseTest
+{
+ function __construct()
+ {
+ parent::__construct();
+
+ $this->initSqlMap();
+ $this->initScript('documents-init.sql');
+ }
+
+ /// Test All document with no formula
+ function testGetAllDocument()
+ {
+ $list = $this->sqlmap->queryForList("GetAllDocument");
+
+ $this->assertEquals(6, count($list));
+ $book = $list[0];
+ $this->assertBook($book, 1, "The World of Null-A", 55);
+
+ $book = $list[1];
+ $this->assertBook($book, 3, "Lord of the Rings", 3587);
+
+ $document = $list[2];
+ $this->assertDocument($document, 5, "Le Monde");
+
+ $document = $list[3];
+ $this->assertDocument($document, 6, "Foundation");
+
+ $news = $list[4];
+ $this->assertNewspaper($news, 2, "Le Progres de Lyon", "Lyon");
+
+ $document = $list[5];
+ $this->assertDocument($document, 4, "Le Canard enchaine");
+ }
+
+ /// Test All document in a typed collection
+ function testGetTypedCollection()
+ {
+ $list = $this->sqlmap->queryForList("GetTypedCollection");
+
+ $this->assertEquals(6, $list->getCount());
+
+ $book = $list[0];
+ $this->assertBook($book, 1, "The World of Null-A", 55);
+
+ $book = $list[1];
+ $this->assertBook($book, 3, "Lord of the Rings", 3587);
+
+ $document = $list[2];
+ $this->assertDocument($document, 5, "Le Monde");
+
+ $document = $list[3];
+ $this->assertDocument($document, 6, "Foundation");
+
+ $news = $list[4];
+ $this->assertNewspaper($news, 2, "Le Progres de Lyon", "Lyon");
+
+ $document = $list[5];
+ $this->assertDocument($document, 4, "Le Canard enchaine");
+ }
+
+ /// Test All document with Custom Type Handler
+ function testGetAllDocumentWithCustomTypeHandler()
+ {
+
+ //register the custom inheritance type handler
+ $this->sqlmap->getTypeHandlerFactory()->register(
+ 'CustomInheritance', new CustomInheritance);
+
+ $list = $this->sqlmap->queryForList("GetAllDocumentWithCustomTypeHandler");
+
+ $this->assertEquals(6, count($list));
+ $book = $list[0];
+ $this->assertBook($book, 1, "The World of Null-A", 55);
+
+ $book = $list[1];
+ $this->assertBook($book, 3, "Lord of the Rings", 3587);
+
+ $news = $list[2];
+ $this->assertNewspaper($news, 5, "Le Monde", "Paris");
+
+ $book = $list[3];
+ $this->assertBook($book, 6, "Foundation", 557);
+
+ $news = $list[4];
+ $this->assertNewspaper($news, 2, "Le Progres de Lyon", "Lyon");
+
+ $news = $list[5];
+ $this->assertNewspaper($news, 4, "Le Canard enchaine", "Paris");
+ }
+
+ function AssertDocument(Document $document, $id, $title)
+ {
+ $this->assertEquals($id, $document->getID());
+ $this->assertEquals($title, $document->getTitle());
+ }
+
+ function AssertBook(Book $book, $id, $title, $pageNumber)
+ {
+ $this->assertEquals($id, $book->getId());
+ $this->assertEquals($title, $book->getTitle());
+ $this->assertEquals($pageNumber, (int)$book->getPageNumber());
+ }
+
+ function AssertNewspaper(Newspaper $news, $id, $title, $city)
+ {
+ $this->assertEquals($id, $news->getId());
+ $this->assertEquals($title, $news->getTitle());
+ $this->assertEquals($city, $news->getCity());
+ }
+}
+
+
+class CustomInheritance implements ITypeHandlerCallback
+{
+ public function getResult($type)
+ {
+ switch ($type)
+ {
+ case 'Monograph': case 'Book':
+ return 'Book';
+ case 'Tabloid': case 'Broadsheet': case 'Newspaper':
+ return 'Newspaper';
+ default:
+ return 'Document';
+ }
+ }
+
+ public function getParameter($parameter)
+ {
+ throw new TDataMapperException('not implemented');
+ }
+
+ public function createNewInstance()
+ {
+ throw new TDataMapperException('can not create');
+ }
+}
+?> \ No newline at end of file