Annotation of embedaddon/php/ext/spl/tests/observer_001.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: SPL: SplObserver and SplSubject (empty notify)
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: class ObserverImpl implements SplObserver
        !             7: {
        !             8:        protected $name = '';
        !             9: 
        !            10:        function __construct($name = 'obj')
        !            11:        {
        !            12:                $this->name = '$' . $name;
        !            13:        }
        !            14: 
        !            15:        function update(SplSubject $subject)
        !            16:        {
        !            17:                echo $this->name . '->' . __METHOD__ . '(' . $subject->getName() . ");\n";
        !            18:        }
        !            19:        
        !            20:        function getName()
        !            21:        {
        !            22:                return $this->name;
        !            23:        }
        !            24: }
        !            25: 
        !            26: class SubjectImpl implements SplSubject
        !            27: {
        !            28:        protected $name = '';
        !            29:        protected $observers = array();
        !            30: 
        !            31:        function __construct($name = 'sub')
        !            32:        {
        !            33:                $this->name = '$' . $name;
        !            34:        }
        !            35: 
        !            36:     function attach(SplObserver $observer)
        !            37:     {
        !            38:        echo '$sub->' . __METHOD__ . '(' . $observer->getName() . ");\n";
        !            39:        if (!in_array($observer, $this->observers))
        !            40:        {
        !            41:                $this->observers[] = $observer;
        !            42:            }
        !            43:     }
        !            44: 
        !            45:     function detach(SplObserver $observer)
        !            46:     {
        !            47:        echo '$sub->' . __METHOD__ . '(' . $observer->getName() . ");\n";
        !            48:        $idx = array_search($observer, $this->observers);
        !            49:        if ($idx !== false)
        !            50:        {
        !            51:                unset($this->observers[$idx]);
        !            52:        }
        !            53:     }
        !            54: 
        !            55:     function notify()
        !            56:     {
        !            57:        echo '$sub->' . __METHOD__ . "();\n";
        !            58:        foreach($this->observers as $observer)
        !            59:        {
        !            60:                $observer->update($this);
        !            61:        }
        !            62:     }
        !            63: 
        !            64:        function getName()
        !            65:        {
        !            66:                return $this->name;
        !            67:        }
        !            68: }
        !            69: 
        !            70: $sub = new SubjectImpl;
        !            71: 
        !            72: $ob1 = new ObserverImpl("ob1");
        !            73: $ob2 = new ObserverImpl("ob2");
        !            74: $ob3 = new ObserverImpl("ob3");
        !            75: 
        !            76: $sub->attach($ob1);
        !            77: $sub->attach($ob1);
        !            78: $sub->attach($ob2);
        !            79: $sub->attach($ob3);
        !            80: 
        !            81: $sub->notify();
        !            82: 
        !            83: $sub->detach($ob3);
        !            84: 
        !            85: $sub->notify();
        !            86: 
        !            87: $sub->detach($ob2);
        !            88: $sub->detach($ob1);
        !            89: 
        !            90: $sub->notify();
        !            91: 
        !            92: $sub->attach($ob3);
        !            93: 
        !            94: $sub->notify();
        !            95: ?>
        !            96: ===DONE===
        !            97: --EXPECT--
        !            98: $sub->SubjectImpl::attach($ob1);
        !            99: $sub->SubjectImpl::attach($ob1);
        !           100: $sub->SubjectImpl::attach($ob2);
        !           101: $sub->SubjectImpl::attach($ob3);
        !           102: $sub->SubjectImpl::notify();
        !           103: $ob1->ObserverImpl::update($sub);
        !           104: $ob2->ObserverImpl::update($sub);
        !           105: $ob3->ObserverImpl::update($sub);
        !           106: $sub->SubjectImpl::detach($ob3);
        !           107: $sub->SubjectImpl::notify();
        !           108: $ob1->ObserverImpl::update($sub);
        !           109: $ob2->ObserverImpl::update($sub);
        !           110: $sub->SubjectImpl::detach($ob2);
        !           111: $sub->SubjectImpl::detach($ob1);
        !           112: $sub->SubjectImpl::notify();
        !           113: $sub->SubjectImpl::attach($ob3);
        !           114: $sub->SubjectImpl::notify();
        !           115: $ob3->ObserverImpl::update($sub);
        !           116: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>