CollectionTestCase.class.php 2.19 KB
Newer Older
doctrine's avatar
doctrine committed
1 2 3
<?php
class Doctrine_CollectionTestCase extends Doctrine_UnitTestCase {
    public function testAdd() {
doctrine's avatar
doctrine committed
4 5 6 7 8
        $coll = new Doctrine_Collection($this->objTable);
        $coll->add(new User());
        $this->assertEqual($coll->count(),1);
        $coll->add(new User());
        $this->assertTrue($coll->count(),2);
doctrine's avatar
doctrine committed
9

doctrine's avatar
doctrine committed
10
        $this->assertEqual($coll->getKeys(), array(0,1));
doctrine's avatar
doctrine committed
11

doctrine's avatar
doctrine committed
12
        $coll[2] = new User();
doctrine's avatar
doctrine committed
13

doctrine's avatar
doctrine committed
14 15 16
        $this->assertTrue($coll->count(),3);
        $this->assertEqual($coll->getKeys(), array(0,1,2));
    }
doctrine's avatar
doctrine committed
17

doctrine's avatar
doctrine committed
18
    public function testExpand() {
doctrine's avatar
doctrine committed
19 20 21
        $users = $this->session->query("FROM User-b, User.Phonenumber-l WHERE User.Phonenumber.phonenumber LIKE '%123%'");

        $this->assertTrue($users instanceof Doctrine_Collection_Batch);
doctrine's avatar
doctrine committed
22
        $this->assertTrue($users[1] instanceof User);
doctrine's avatar
doctrine committed
23
        $this->assertTrue($users[1]->Phonenumber instanceof Doctrine_Collection_Lazy);
doctrine's avatar
doctrine committed
24 25 26 27 28
        $data = $users[1]->Phonenumber->getData();
        
        $coll = $users[1]->Phonenumber;

        $this->assertEqual(count($data), 1);
doctrine's avatar
doctrine committed
29 30 31 32 33

        foreach($coll as $record) {
            $record->phonenumber;
        }

doctrine's avatar
doctrine committed
34
        $coll[1];
doctrine's avatar
doctrine committed
35

doctrine's avatar
doctrine committed
36
        $this->assertEqual(count($coll), 3);
doctrine's avatar
doctrine committed
37

doctrine's avatar
doctrine committed
38
        $this->assertEqual($coll[2]->getState(), Doctrine_Record::STATE_PROXY);
doctrine's avatar
doctrine committed
39

40 41

        $generator = new Doctrine_IndexGenerator($this->objTable->getIdentifier());
doctrine's avatar
doctrine committed
42 43
        $coll->setGenerator($generator);
        $generator = $coll->getGenerator();
44 45 46
        
        $user = $this->session->getTable("User")->find(4);
        $this->assertEqual($generator->getIndex($user), 4);
doctrine's avatar
doctrine committed
47

doctrine's avatar
doctrine committed
48 49 50 51 52
    }
    public function testGenerator() {
        $generator = new Doctrine_IndexGenerator("name");
        $coll = new Doctrine_Collection($this->objTable);
        $coll->setGenerator($generator);
doctrine's avatar
doctrine committed
53

doctrine's avatar
doctrine committed
54 55 56
        $user = new User();
        $user->name = "name";
        $coll->add($user);
doctrine's avatar
doctrine committed
57

doctrine's avatar
doctrine committed
58 59 60 61 62 63 64 65 66 67
        $this->assertEqual($coll["name"], $user);


        $this->session->getTable("email")->setAttribute(Doctrine::ATTR_COLL_KEY,"address");
        $emails = $this->session->getTable("email")->findAll();
        foreach($emails as $k => $v) {
            $this->assertTrue(gettype($k), "string");
        }

    }
doctrine's avatar
doctrine committed
68 69
}
?>