diff --git a/tests/Collection/SnapshotTestCase.php b/tests/Collection/SnapshotTestCase.php index 793f79cad..a689dc744 100644 --- a/tests/Collection/SnapshotTestCase.php +++ b/tests/Collection/SnapshotTestCase.php @@ -38,7 +38,6 @@ */ class Doctrine_Collection_Snapshot_TestCase extends Doctrine_UnitTestCase { - public function testDiffForSimpleCollection() { $coll = Doctrine_Query::create()->from('User u')->orderby('u.id')->execute(); @@ -56,9 +55,7 @@ class Doctrine_Collection_Snapshot_TestCase extends Doctrine_UnitTestCase $this->connection->clear(); $coll = Doctrine_Query::create()->from('User u')->execute(); $this->assertEqual($coll->count(), 7); - } - public function testDiffForOneToManyRelatedCollection() { $q = new Doctrine_Query(); @@ -98,7 +95,7 @@ class Doctrine_Collection_Snapshot_TestCase extends Doctrine_UnitTestCase $user->Group[0]->name = 'PHP'; $user->Group[1]->name = 'Web'; $user->save(); - + $this->connection->clear(); $users = Doctrine_Query::create()->from('User u LEFT JOIN u.Group g') @@ -117,6 +114,7 @@ class Doctrine_Collection_Snapshot_TestCase extends Doctrine_UnitTestCase $user->save(); $this->assertEqual(count($user->Group->getSnapshot()), 0); + } } diff --git a/tests/Query/AggregateValueTestCase.php b/tests/Query/AggregateValueTestCase.php index d88b6eebd..cad5dc5c0 100644 --- a/tests/Query/AggregateValueTestCase.php +++ b/tests/Query/AggregateValueTestCase.php @@ -35,8 +35,6 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase public function prepareData() { } - - public function testInitData() { $users = new Doctrine_Collection('User'); @@ -55,11 +53,12 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase $users->save(); } - public function testRecordSupportsValueMapping() + + public function testRecordSupportsValueMapping() { $record = new User(); - - try { + + try { $record->get('count'); $this->fail(); } catch(Doctrine_Exception $e) { @@ -75,17 +74,23 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase } $this->assertEqual($i, 3); } - public function testAggregateValueIsMappedToNewRecordOnEmptyResultSet() + + public function testAggregateValueIsMappedToNewRecordOnEmptyResultSet() { + $this->connection->clear(); + $q = new Doctrine_Query(); $q->select('COUNT(u.id) count')->from('User u'); - + $this->assertEqual($q->getSql(), "SELECT COUNT(e.id) AS e__0 FROM entity e WHERE (e.type = 0)"); + $users = $q->execute(); $this->assertEqual($users->count(), 1); + $this->assertEqual($users[0]->state(), Doctrine_Record::STATE_TCLEAN); } + public function testAggregateValueIsMappedToRecord() { $q = new Doctrine_Query(); @@ -118,6 +123,7 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase $this->assertEqual($users[2]->Phonenumber[0]->count, 2); $this->assertEqual($users[3]->Phonenumber[0]->count, 1); } + public function testAggregateValueMappingSupportsLeftJoins2() { $q = new Doctrine_Query(); @@ -127,8 +133,9 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase $this->assertEqual($q->getQuery(), 'SELECT MAX(e.name) AS e__0 FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0) GROUP BY e.id'); $users = $q->execute(); - $this->assertEqual($users->count(), 2); + $this->assertEqual($users->count(), 4); } + public function testAggregateValueMappingSupportsMultipleValues() { $q = new Doctrine_Query(); @@ -139,7 +146,7 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase $this->assertEqual($users[0]->Phonenumber[0]->max, 3); $this->assertEqual($users[0]->Phonenumber[0]->count, 3); } - public function testAggregateValueMappingSupportsInnerJoins() + public function testAggregateValueMappingSupportsInnerJoins() { $q = new Doctrine_Query(); diff --git a/tests/Query/SelectTestCase.php b/tests/Query/SelectTestCase.php index a91765bd6..fe7ac3731 100644 --- a/tests/Query/SelectTestCase.php +++ b/tests/Query/SelectTestCase.php @@ -32,6 +32,7 @@ */ class Doctrine_Query_Select_TestCase extends Doctrine_UnitTestCase { + /** public function testAggregateFunctionWithDistinctKeyword() { $q = new Doctrine_Query(); @@ -88,21 +89,23 @@ class Doctrine_Query_Select_TestCase extends Doctrine_UnitTestCase } catch(Doctrine_Query_Exception $e) { $this->pass(); } + } + */ public function testAggregateFunctionValueHydration() { $q = new Doctrine_Query(); - $q->parseQuery('SELECT u.id, COUNT(p.id) FROM User u, u.Phonenumber p GROUP BY u.id'); + $q->parseQuery('SELECT u.id, COUNT(p.id) FROM User u LEFT JOIN u.Phonenumber p GROUP BY u.id'); $users = $q->execute(); $this->assertEqual($users[0]->Phonenumber[0]->COUNT, 1); + $this->assertEqual($users[1]->Phonenumber[0]->COUNT, 3); $this->assertEqual($users[2]->Phonenumber[0]->COUNT, 1); $this->assertEqual($users[3]->Phonenumber[0]->COUNT, 1); $this->assertEqual($users[4]->Phonenumber[0]->COUNT, 3); - } public function testSingleComponentWithAsterisk() diff --git a/tests/Test.php b/tests/Test.php index 8e04e49d5..d3981cec5 100644 --- a/tests/Test.php +++ b/tests/Test.php @@ -17,6 +17,14 @@ class GroupTest $reporter->paintHeader(); $reporter->paintFooter(); } + public function getMessages() + { + $messages = array(); + foreach($this->_testCases as $testCase) { + $messages += $testCase->getMessages(); + } + return $messages; + } public function getFailCount() { $fails = 0; @@ -52,15 +60,63 @@ class UnitTestCase protected $_passed = 0; protected $_failed = 0; + + protected $_messages = array(); public function assertEqual($value, $value2) { if ($value == $value2) { $this->_passed++; } else { - $this->_failed++; + $this->fail(); } } + public function assertNotEqual($value, $value2) + { + if ($value != $value2) { + $this->_passed++; + } else { + $this->fail(); + } + } + public function assertTrue($expr) + { + if ($expr) { + $this->_passed++; + } else { + $this->fail(); + } + } + public function assertFalse($expr) + { + if ( ! $expr) { + $this->_passed++; + } else { + $this->fail(); + } + } + public function pass() + { + $this->_passed++; + } + public function fail() + { + $trace = debug_backtrace(); + array_shift($trace); + + + foreach ($trace as $stack) { + if (substr($stack['function'], 0, 4) === 'test') { + $class = new ReflectionClass($stack['class']); + + $this->_messages[] = $class->getName() . ' : method ' . $stack['function'] . ' failed on line ' . $line; + break; + } + $line = $stack['line']; + } + + $this->_failed++; + } public function run() { foreach (get_class_methods($this) as $method) { @@ -71,6 +127,10 @@ class UnitTestCase } } } + public function getMessages() + { + return $this->_messages; + } public function getFailCount() { return $this->_failed;