public function setUp()
 {
     $this->extractionTrait = $this->getObjectForTrait('Matryoshka\\Model\\Criteria\\ExtractionTrait');
     $this->modelHydratorMock = $this->getMockBuilder('\\Zend\\Stdlib\\Hydrator\\AbstractHydrator')->disableOriginalConstructor()->setMethods(['extractValue', 'extractName'])->getMockForAbstractClass();
     $this->objectHydratorMock = $this->getMockBuilder('\\Zend\\Stdlib\\Hydrator\\AbstractHydrator')->disableOriginalConstructor()->setMethods(['hydrateName', 'extractName'])->getMockForAbstractClass();
     $object = new ActiveRecordObject();
     $object->setHydrator($this->objectHydratorMock);
     $resultSet = new HydratingResultSet();
     $resultSet->setObjectPrototype($object);
     $resultSet->setHydrator($this->modelHydratorMock);
     $this->testModel = new ConcreteAbstractModel();
     $this->testModel->setResultSetPrototype($resultSet);
     $this->testModel->setHydrator($this->modelHydratorMock);
 }
 /**
  * @{inheritDoc}
  * @see http://php.net/manual/en/mongocursor.count.php
  */
 public function count()
 {
     if ($this->count === null && $this->dataSource instanceof MongoCursor) {
         $this->count = $this->dataSource->count(true);
     }
     return parent::count();
 }
 public function testCtor()
 {
     $hydrator = new ObjectProperty();
     $resultSet = new HydratingResultSet($hydrator);
     $this->assertSame($hydrator, $resultSet->getHydrator());
     $this->assertInstanceOf('Matryoshka\\Model\\ResultSet\\HydratingResultSetInterface', $resultSet);
     $this->assertInstanceOf('Matryoshka\\Model\\Object\\PrototypeStrategy\\PrototypeStrategyAwareInterface', $resultSet);
     $abstractObject = $this->getMockForAbstractClass('\\Matryoshka\\Model\\Object\\AbstractObject');
     $resultSet = new HydratingResultSet(null, $abstractObject);
     $this->assertSame($abstractObject, $resultSet->getObjectPrototype());
     $this->assertSame($abstractObject->getHydrator(), $resultSet->getHydrator());
     //Defaults
     $resultSet = new HydratingResultSet();
     $this->assertInstanceOf('\\ArrayObject', $resultSet->getObjectPrototype());
     $this->assertInstanceOf('\\Zend\\Stdlib\\Hydrator\\ArraySerializable', $resultSet->getHydrator());
 }
 public function testGetObjectPrototype()
 {
     $this->assertSame($this->resultSet->getObjectPrototype(), $this->model->getObjectPrototype());
     //Test model instance injection
     $modelAwareObject = new ActiveRecordObject();
     $resultSet = new HydratingResultSet();
     $resultSet->setObjectPrototype($modelAwareObject);
     $this->setResultSetPrototype($resultSet);
     $this->assertSame($modelAwareObject, $this->model->getObjectPrototype());
     $this->assertSame($this->model, $modelAwareObject->getModel());
 }