/**
  * @dataProvider getTypeNames()
  * 
  * @param string $typeName
  * @param string $category
  * @return void
  */
 public function testTypeCategorization($typeName, $category)
 {
     switch ($category) {
         case 'scalar':
             self::assertTrue($this->fixture->isScalarType($typeName));
             self::assertFalse($this->fixture->isArray($typeName));
             self::assertFalse($this->fixture->isMixed($typeName));
             break;
         case 'class':
             self::assertfalse($this->fixture->isScalarType($typeName));
             self::assertFalse($this->fixture->isArray($typeName));
             self::assertFalse($this->fixture->isMixed($typeName));
             break;
         case 'array':
             self::assertFalse($this->fixture->isScalarType($typeName));
             self::assertTrue($this->fixture->isArray($typeName));
             self::assertFalse($this->fixture->isMixed($typeName));
             break;
         case 'mixed':
             self::assertFalse($this->fixture->isScalarType($typeName));
             self::assertFalse($this->fixture->isArray($typeName));
             self::assertTrue($this->fixture->isMixed($typeName));
             break;
     }
 }
 /**
  * Creates a type object for given type name
  * @param string|ReflectionClass $typeName
  * @return ezcReflectionType
  * @todo ArrayAccess stuff, how to handle? has to be implemented
  */
 public function getType($typeName)
 {
     if ($typeName instanceof ReflectionClass) {
         return new ezcReflectionObjectType($typeName);
     }
     $typeName = trim($typeName);
     if (empty($typeName)) {
         return null;
     } elseif ($this->mapper->isScalarType($typeName) or $this->mapper->isSpecialType($typeName)) {
         return new ezcReflectionPrimitiveType($typeName);
     } elseif ($this->mapper->isArray($typeName)) {
         return new ezcReflectionArrayType($typeName);
     } elseif ($this->mapper->isMixed($typeName)) {
         return new ezcReflectionMixedType($typeName);
     } else {
         // otherwhise it has to be a class name
         return new ezcReflectionObjectType($typeName);
     }
 }