undefined offset fix (#19406)

This commit is contained in:
ReenExe 2016-07-28 19:22:45 +03:00 committed by Fabien Potencier
parent 37cd583e78
commit 9813888a4f
2 changed files with 36 additions and 10 deletions

View File

@ -101,11 +101,11 @@ class Table
self::$styles = self::initStyles(); self::$styles = self::initStyles();
} }
if (!self::$styles[$name]) { if (isset(self::$styles[$name])) {
throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); return self::$styles[$name];
} }
return self::$styles[$name]; throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
} }
/** /**
@ -117,13 +117,7 @@ class Table
*/ */
public function setStyle($name) public function setStyle($name)
{ {
if ($name instanceof TableStyle) { $this->style = $this->resolveStyle($name);
$this->style = $name;
} elseif (isset(self::$styles[$name])) {
$this->style = self::$styles[$name];
} else {
throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
}
return $this; return $this;
} }
@ -611,4 +605,17 @@ class Table
'symfony-style-guide' => $styleGuide, 'symfony-style-guide' => $styleGuide,
); );
} }
private function resolveStyle($name)
{
if ($name instanceof TableStyle) {
return $name;
}
if (isset(self::$styles[$name])) {
return self::$styles[$name];
}
throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
}
} }

View File

@ -577,6 +577,25 @@ TABLE;
$this->assertEquals($table, $table->addRow(new TableSeparator()), 'fluent interface on addRow() with a single TableSeparator() works'); $this->assertEquals($table, $table->addRow(new TableSeparator()), 'fluent interface on addRow() with a single TableSeparator() works');
} }
/**
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Style "absent" is not defined.
*/
public function testIsNotDefinedStyleException()
{
$table = new Table($this->getOutputStream());
$table->setStyle('absent');
}
/**
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Style "absent" is not defined.
*/
public function testGetStyleDefinition()
{
Table::getStyleDefinition('absent');
}
protected function getOutputStream() protected function getOutputStream()
{ {
return new StreamOutput($this->stream, StreamOutput::VERBOSITY_NORMAL, false); return new StreamOutput($this->stream, StreamOutput::VERBOSITY_NORMAL, false);