[Form] Simplified a bit FormUtil and extended test coverage

This commit is contained in:
stloyd 2011-08-25 15:32:32 +02:00 committed by Joseph Bielawski
parent a74ae9d325
commit 18a83c67f4
2 changed files with 54 additions and 6 deletions

View File

@ -15,11 +15,7 @@ abstract class FormUtil
{
static public function toArrayKey($value)
{
if ((string) (int) $value === (string) $value) {
return (int) $value;
}
if (is_bool($value)) {
if (is_bool($value) || (string) (int) $value === (string) $value) {
return (int) $value;
}
@ -52,7 +48,7 @@ abstract class FormUtil
*/
static public function isChoiceSelected($choice, $value)
{
$choice = FormUtil::toArrayKey($choice);
$choice = static::toArrayKey($choice);
// The value should already have been converted by value transformers,
// otherwise we had to do the conversion on every call of this method

View File

@ -50,4 +50,56 @@ class FormUtilTest extends \PHPUnit_Framework_TestCase
$this->assertSame($out, FormUtil::toArrayKeys($in));
}
public function isChoiceGroupProvider()
{
return array(
array(false, 0),
array(false, '0'),
array(false, '1'),
array(false, 1),
array(false, ''),
array(false, null),
array(false, true),
array(true, array()),
array(true, new \SplFixedArray(1)),
);
}
/**
* @dataProvider isChoiceGroupProvider
*/
public function testIsChoiceGroup($expected, $value)
{
$this->assertSame($expected, FormUtil::isChoiceGroup($value));
}
public function isChoiceSelectedProvider()
{
return array(
array(true, 0, 0),
array(true, '0', 0),
array(true, '1', 1),
array(true, false, 0),
array(true, true, 1),
array(true, '', ''),
array(true, null, ''),
array(true, '1.23', '1.23'),
array(true, 'foo', 'foo'),
array(true, 'foo10', 'foo10'),
array(true, 'foo', array(1, 'foo', 'foo10')),
array(false, 10, array(1, 'foo', 'foo10')),
array(false, 0, array(1, 'foo', 'foo10')),
);
}
/**
* @dataProvider isChoiceSelectedProvider
*/
public function testIsChoiceSelected($expected, $choice, $value)
{
$this->assertSame($expected, FormUtil::isChoiceSelected($choice, $value));
}
}