Example #1
0
 /**
  * Adds an InputOption object.
  *
  * @param InputOption $option An InputOption object
  *
  * @throws \LogicException When option given already exist
  *
  * @api
  */
 public function addOption(InputOption $option)
 {
     if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) {
         throw new \LogicException(sprintf('An option named "%s" already exists.', $option->getName()));
     }
     if ($option->getShortcut()) {
         foreach (explode('|', $option->getShortcut()) as $shortcut) {
             if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) {
                 throw new \LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut));
             }
         }
     }
     $this->options[$option->getName()] = $option;
     if ($option->getShortcut()) {
         foreach (explode('|', $option->getShortcut()) as $shortcut) {
             $this->shortcuts[$shortcut] = $option->getName();
         }
     }
 }
Example #2
0
 public function testEquals()
 {
     $option = new InputOption('foo', 'f', null, 'Some description');
     $option2 = new InputOption('foo', 'f', null, 'Alternative description');
     $this->assertTrue($option->equals($option2));
     $option = new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL, 'Some description');
     $option2 = new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL, 'Some description', true);
     $this->assertFalse($option->equals($option2));
     $option = new InputOption('foo', 'f', null, 'Some description');
     $option2 = new InputOption('bar', 'f', null, 'Some description');
     $this->assertFalse($option->equals($option2));
     $option = new InputOption('foo', 'f', null, 'Some description');
     $option2 = new InputOption('foo', '', null, 'Some description');
     $this->assertFalse($option->equals($option2));
     $option = new InputOption('foo', 'f', null, 'Some description');
     $option2 = new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL, 'Some description');
     $this->assertFalse($option->equals($option2));
 }