Skip to content

Commit

Permalink
[Form] Simplified a bit FormUtil and extended test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
stloyd committed Oct 7, 2011
1 parent a74ae9d commit 18a83c6
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 6 deletions.
8 changes: 2 additions & 6 deletions src/Symfony/Component/Form/Util/FormUtil.php
Expand Up @@ -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;
}

Expand Down Expand Up @@ -52,7 +48,7 @@ static public function isChoiceGroup($choice)
*/
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
Expand Down
52 changes: 52 additions & 0 deletions tests/Symfony/Tests/Component/Form/Util/FormUtilTest.php
Expand Up @@ -50,4 +50,56 @@ public function testToArrayKeys()

$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));
}
}

0 comments on commit 18a83c6

Please sign in to comment.