public function testHierarchy()
 {
     $criteria = new ProxyTestCriteria();
     $p = new TestPropelConditionalProxy($criteria, true);
     $this->assertEquals($p->getCriteria(), $criteria, 'main object is the given one');
     $this->assertInstanceOf('PropelConditionalProxy', $p2 = $p->_if(true), '_if returns fluid interface');
     $this->assertEquals($p2->getCriteria(), $criteria, 'main object is the given one, even with nested proxies');
     $this->assertEquals($p2->getParentProxy(), $p, 'nested proxy is respected');
     $p = new PropelConditionalProxy($criteria, true);
     $this->assertEquals($criteria, $p->_if(true), '_if returns fluid interface');
 }
 /**
  * Returns the current object
  * Allows for conditional statements in a fluid interface.
  *
  * @return Criteria
  *
  * @throws PropelException
  */
 public function _endif()
 {
     if (!$this->conditionalProxy) {
         throw new PropelException('_endif() must be called after _if()');
     }
     $this->conditionalProxy = $this->conditionalProxy->getParentProxy();
     if ($this->conditionalProxy) {
         return $this->conditionalProxy->getCriteriaOrProxy();
     }
     // reached last level
     return $this;
 }