| 
<?phpnamespace eMapper\Type;
 
 use eMapper\Reflection\Profiler;
 use Acme\Type\RGBColorTypeHandler;
 
 /**
 * Tests default and custom types defined in TypeManager class
 *
 * @author emaphp
 * @group type
 */
 class TypeManagerTest extends \PHPUnit_Framework_TestCase {
 public function testManager1() {
 $typeManager = new TypeManager();
 
 //string
 $this->assertArrayHasKey('string', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\StringTypeHandler', $typeManager->getTypeHandler('string'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\StringTypeHandler');
 $this->assertFalse($profile->isSafe());
 
 $this->assertArrayHasKey('s', $typeManager->getAliases());
 $this->assertArrayHasKey('str', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\StringTypeHandler', $typeManager->getTypeHandler('s'));
 $this->assertInstanceOf('eMapper\Type\Handler\StringTypeHandler', $typeManager->getTypeHandler('str'));
 
 //boolean
 $this->assertArrayHasKey('boolean', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\BooleanTypeHandler', $typeManager->getTypeHandler('boolean'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\BooleanTypeHandler');
 $this->assertTrue($profile->isSafe());
 
 $this->assertArrayHasKey('b', $typeManager->getAliases());
 $this->assertArrayHasKey('bool', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\BooleanTypeHandler', $typeManager->getTypeHandler('b'));
 $this->assertInstanceOf('eMapper\Type\Handler\BooleanTypeHandler', $typeManager->getTypeHandler('bool'));
 
 //integer
 $this->assertArrayHasKey('integer', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\IntegerTypeHandler', $typeManager->getTypeHandler('integer'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\IntegerTypeHandler');
 $this->assertTrue($profile->isSafe());
 
 $this->assertArrayHasKey('i', $typeManager->getAliases());
 $this->assertArrayHasKey('int', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\IntegerTypeHandler', $typeManager->getTypeHandler('int'));
 $this->assertInstanceOf('eMapper\Type\Handler\IntegerTypeHandler', $typeManager->getTypeHandler('i'));
 
 //float
 $this->assertArrayHasKey('float', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\FloatTypeHandler', $typeManager->getTypeHandler('float'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\FloatTypeHandler');
 $this->assertTrue($profile->isSafe());
 
 $this->assertArrayHasKey('f', $typeManager->getAliases());
 $this->assertArrayHasKey('double', $typeManager->getAliases());
 $this->assertArrayHasKey('real', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\FloatTypeHandler', $typeManager->getTypeHandler('f'));
 $this->assertInstanceOf('eMapper\Type\Handler\FloatTypeHandler', $typeManager->getTypeHandler('double'));
 $this->assertInstanceOf('eMapper\Type\Handler\FloatTypeHandler', $typeManager->getTypeHandler('real'));
 
 //blob
 $this->assertArrayHasKey('blob', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\BlobTypeHandler', $typeManager->getTypeHandler('blob'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\BlobTypeHandler');
 $this->assertTrue($profile->isSafe());
 
 $this->assertArrayHasKey('x', $typeManager->getAliases());
 $this->assertArrayHasKey('bin', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\BlobTypeHandler', $typeManager->getTypeHandler('x'));
 $this->assertInstanceOf('eMapper\Type\Handler\BlobTypeHandler', $typeManager->getTypeHandler('bin'));
 
 //datetime
 $this->assertArrayHasKey('DateTime', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\DatetimeTypeHandler', $typeManager->getTypeHandler('DateTime'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\DatetimeTypeHandler');
 $this->assertFalse($profile->isSafe());
 
 $this->assertArrayHasKey('dt', $typeManager->getAliases());
 $this->assertArrayHasKey('timestamp', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\DatetimeTypeHandler', $typeManager->getTypeHandler('dt'));
 $this->assertInstanceOf('eMapper\Type\Handler\DatetimeTypeHandler', $typeManager->getTypeHandler('timestamp'));
 
 //date
 $this->assertArrayHasKey('date', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\DateTypeHandler', $typeManager->getTypeHandler('date'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\DateTypeHandler');
 $this->assertFalse($profile->isSafe());
 
 $this->assertArrayHasKey('d', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\DateTypeHandler', $typeManager->getTypeHandler('d'));
 
 //safe strings
 $this->assertArrayHasKey('sstring', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\SafeStringTypeHandler', $typeManager->getTypeHandler('sstring'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\SafeStringTypeHandler');
 $this->assertTrue($profile->isSafe());
 
 $this->assertArrayHasKey('ss', $typeManager->getAliases());
 $this->assertArrayHasKey('sstr', $typeManager->getAliases());
 $this->assertInstanceOf('eMapper\Type\Handler\SafeStringTypeHandler', $typeManager->getTypeHandler('ss'));
 $this->assertInstanceOf('eMapper\Type\Handler\SafeStringTypeHandler', $typeManager->getTypeHandler('sstr'));
 
 //json
 $this->assertArrayHasKey('json', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\JSONTypeHandler', $typeManager->getTypeHandler('json'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\JSONTypeHandler');
 $this->assertFalse($profile->isSafe());
 
 //null
 $this->assertArrayHasKey('null', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('eMapper\Type\Handler\NullTypeHandler', $typeManager->getTypeHandler('null'));
 
 $profile = Profiler::getClassProfile('eMapper\Type\Handler\NullTypeHandler');
 $this->assertTrue($profile->isSafe());
 }
 
 public function testCustomType() {
 $typeManager = new TypeManager();
 $typeManager->setTypeHandler('Acme\RGBColor', new RGBColorTypeHandler());
 $typeManager->addAlias('Acme\RGBColor', 'clr');
 
 $this->assertArrayHasKey('Acme\RGBColor', $typeManager->getTypeHandlers());
 $this->assertInstanceOf('Acme\Type\RGBColorTypeHandler', $typeManager->getTypeHandler('Acme\RGBColor'));
 
 $this->assertArrayHasKey('clr', $typeManager->getAliases());
 $this->assertInstanceOf('Acme\Type\RGBColorTypeHandler', $typeManager->getTypeHandler('clr'));
 }
 }
 ?>
 |