public function testRetrieveRequirements()
{
$requirement = Shanty_Mongo::retrieveRequirement('Validator:MongoId');
$this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT, $requirement);
$this->assertEquals('Shanty_Mongo_Validate_Class', get_class($requirement));
$requirement = Shanty_Mongo::retrieveRequirement('Validator:Hostname');
$this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT, $requirement);
$this->assertEquals('Zend_Validate_Hostname', get_class($requirement));
$this->assertTrue($requirement->isValid('google.com'));
$requirement = Shanty_Mongo::retrieveRequirement('Validator:Hostname', Zend_Validate_Hostname::ALLOW_IP);
$this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT, $requirement);
$this->assertEquals('Zend_Validate_Hostname', get_class($requirement));
$this->assertFalse($requirement->isValid('shantymongo.org'));
$requirement = Shanty_Mongo::retrieveRequirement('Document:My_ShantyMongo_User');
$this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT, $requirement);
$this->assertEquals('Shanty_Mongo_Validate_Class', get_class($requirement));
$user = $this->getMock('My_ShantyMongo_User');
$this->assertTrue($requirement->isValid($user));
$this->assertNull(Shanty_Mongo::createRequirement('Document:Class does not exist'));
// even though we tested this with testCreateRequirement, we need to make sure the vars were passed through correctly
$requirement = Shanty_Mongo::retrieveRequirement('Validator:InArray', array('one', 'two'));
$this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT, $requirement);
$this->assertEquals('Zend_Validate_InArray', get_class($requirement));
$this->assertTrue($requirement->isValid('one'));
$this->assertFalse($requirement->isValid('three'));
}