コード例 #1
0
 /**
  * Display information
  *
  * @param  io.StringWriter $out
  * @return void
  */
 public function display($out)
 {
     $out->write(self::declarationOf($this->mirror));
     $parent = $this->mirror->parent();
     if ('lang.Enum' !== $parent->name()) {
         $this->displayExtensions([$parent], $out, 'extends');
     }
     $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements');
     $separator = false;
     $out->writeLine(' {');
     $this->displayMembers($this->mirror->constants(), $out, $separator);
     foreach (Enum::valuesOf($this->mirror->type()) as $member) {
         $out->write('  ', $member->name(), '(', $member->ordinal(), ')');
         $mirror = new TypeMirror(typeof($member));
         if ($mirror->isSubtypeOf($this->mirror)) {
             $out->writeLine(' {');
             foreach ($mirror->methods()->declared() as $method) {
                 $out->writeLine('    ', (string) $method);
             }
             $separator = true;
             $out->writeLine('  }');
         } else {
             $out->writeLine();
             $separator = true;
         }
     }
     $constructor = $this->mirror->constructor();
     if ($constructor->present()) {
         $this->displayMembers([$constructor], $out, $separator);
     }
     $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator);
     $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator);
     $out->writeLine('}');
 }
コード例 #2
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 (\lang\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('}');
 }
コード例 #3
0
 public function staticPrimitiveMemberNotInEnumValuesOf()
 {
     Profiling::$fixture = array($this, $this->name);
     $this->assertEquals(array(Profiling::$INSTANCE, Profiling::$EXTENSION), \lang\Enum::valuesOf(\lang\XPClass::forName('net.xp_framework.unittest.core.Profiling')));
     Profiling::$fixture = NULL;
 }
コード例 #4
0
ファイル: EnumTest.class.php プロジェクト: johannes85/core
 public function staticPrimitiveMemberNotInEnumValuesOf()
 {
     Profiling::$fixture = [$this, $this->name];
     $this->assertEquals([Profiling::$INSTANCE, Profiling::$EXTENSION], Enum::valuesOf(XPClass::forName('net.xp_framework.unittest.core.Profiling')));
     Profiling::$fixture = null;
 }