예제 #1
0
 /**
  * Handles enums
  *
  * @param   lang.XPClass class
  */
 protected static function printEnum(XPClass $enum)
 {
     Console::write(implode(' ', Modifiers::namesOf($enum->getModifiers())));
     Console::write(' enum ', self::displayNameOf($enum));
     // Parent class, if not lang.Enum
     if (!XPClass::forName('lang.Enum')->equals($parent = $enum->getParentClass())) {
         Console::write(' extends ', self::displayNameOf($parent));
     }
     // Interfaces
     if ($interfaces = $enum->getInterfaces()) {
         Console::write(' implements ');
         $s = sizeof($interfaces) - 1;
         foreach ($interfaces as $i => $iface) {
             Console::write(self::displayNameOf($iface));
             $i < $s && Console::write(', ');
         }
     }
     // Constants
     Console::writeLine(' {');
     $i = 0;
     foreach ($enum->getConstants() as $name => $value) {
         Console::writeLine('  const ', $name, ' = ', xp::stringOf($value));
         $i++;
     }
     // Members
     $i && Console::writeLine();
     $i = 0;
     foreach (Enum::valuesOf($enum) as $member) {
         Console::write('  ', $member->ordinal(), ': ', $member->name());
         $class = $member->getClass();
         if ($class->isSubclassOf($enum)) {
             Console::writeLine(' {');
             foreach ($class->getDeclaredMethods() as $method) {
                 Console::writeLine('    ', $method);
                 $i++;
             }
             Console::writeLine('  }');
         } else {
             Console::writeLine();
         }
         $i++;
     }
     // Methods
     $i && Console::writeLine();
     self::printMethods($enum->getMethods());
     Console::writeLine('}');
 }
예제 #2
0
 public function staticPrimitiveMemberNotInEnumValuesOf()
 {
     Profiling::$fixture = array($this, $this->name);
     $this->assertEquals(array(Profiling::$INSTANCE, Profiling::$EXTENSION), Enum::valuesOf(XPClass::forName('net.xp_framework.unittest.core.Profiling')));
     Profiling::$fixture = NULL;
 }
 public function enum_values()
 {
     $values = [];
     foreach (Enum::valuesOf($this->enumClass()) as $value) {
         $values[$value->name()] = $value->ordinal();
     }
     $this->assertEquals(['SMALL' => 0, 'MEDIUM' => 1, 'LARGE' => 2, 'X_LARGE' => 3], $values);
 }