merged branch stloyd/FormUtil (PR #2340)

Commits
-------

18a83c6 [Form] Simplified a bit `FormUtil` and extended test coverage

Discussion
----------

[2.0][Form] Simplified a bit `FormUtil` and extended test coverage

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
This commit is contained in:
Fabien Potencier 2011-10-07 14:05:47 +02:00
commit 4cdf6ac9f4
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));
}
}