CollectionOffsetTestCase.php 2.98 KB
Newer Older
doctrine's avatar
doctrine committed
1
<?php
zYne's avatar
zYne committed
2
class Doctrine_Collection_Offset_TestCase extends Doctrine_UnitTestCase {
doctrine's avatar
doctrine committed
3 4
    public function testExpand() {

zYne's avatar
zYne committed
5
        $users = $this->connection->query("FROM User-o");
doctrine's avatar
doctrine committed
6 7 8 9 10
        $this->assertTrue($users instanceof Doctrine_Collection_Offset);

        $this->assertEqual(count($users), 5);
        $users[5];

11
        $this->assertEqual($users[5]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
12 13
        $users[5];

zYne's avatar
zYne committed
14
        $this->connection->setAttribute(Doctrine::ATTR_COLL_LIMIT, 3);
doctrine's avatar
doctrine committed
15

zYne's avatar
zYne committed
16
        $users = $this->connection->query("FROM User-o");
doctrine's avatar
doctrine committed
17
        $this->assertEqual(count($users), 3);
18 19 20
        $this->assertEqual($users[0]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($users[1]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($users[2]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
21 22 23 24 25 26 27 28 29 30
        // indexes 0,1,2 in use

        $users[7];
        $this->assertEqual(count($users), 5);
        $this->assertFalse($users->contains(3));
        $this->assertFalse($users->contains(4));
        $this->assertFalse($users->contains(5));
        $this->assertTrue($users->contains(6));
        $this->assertTrue($users->contains(7));

31 32
        $this->assertEqual($users[6]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($users[7]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
33 34 35 36


        $users[5];
        $this->assertEqual(count($users), 8);
37 38 39
        $this->assertEqual($users[3]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($users[4]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($users[5]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
40 41


zYne's avatar
zYne committed
42
        $this->connection->setAttribute(Doctrine::ATTR_COLL_LIMIT, 1);
43 44
        $idFieldNames = (array)$this->objTable->getIdentifier();
        $users = $this->connection->query("FROM User-b, User.Phonenumber-o WHERE User.".$idFieldNames[0]." = 5");
doctrine's avatar
doctrine committed
45 46 47 48

        $this->assertEqual(count($users), 1);

        $coll = $users[0]->Phonenumber;
zYne's avatar
zYne committed
49
        $this->assertEqual(count($coll), 3);
doctrine's avatar
doctrine committed
50 51
        $coll[1];

zYne's avatar
zYne committed
52
        $this->assertEqual(count($coll), 3);
doctrine's avatar
doctrine committed
53 54 55 56 57
        $this->assertEqual($coll[1]->phonenumber, "456 456");

    }

    public function testGetIterator() {
zYne's avatar
zYne committed
58 59
        $this->connection->setAttribute(Doctrine::ATTR_COLL_LIMIT, 4);
        $coll = $this->connection->query("FROM User-o");
doctrine's avatar
doctrine committed
60 61 62 63

        foreach($coll as $user) {
        }
        $this->assertEqual($coll->count(), 8);
64 65
        $this->assertEqual($coll[3]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($coll[6]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
66

zYne's avatar
zYne committed
67
        $this->connection->setAttribute(Doctrine::ATTR_COLL_LIMIT, 3);
doctrine's avatar
doctrine committed
68

zYne's avatar
zYne committed
69
        $coll = $this->connection->query("FROM User-o");
doctrine's avatar
doctrine committed
70 71 72 73

        foreach($coll as $user) {
        }
        $this->assertEqual($coll->count(), 8);
74 75
        $this->assertEqual($coll[3]->getState(), Doctrine_Entity::STATE_CLEAN);
        $this->assertEqual($coll[6]->getState(), Doctrine_Entity::STATE_CLEAN);
doctrine's avatar
doctrine committed
76 77
    }
}