tikiwiki/packages/tiki-pkg-tikimanager/symfony/console/Tests/Question/ChoiceQuestionTest.php
2023-11-20 20:52:04 +00:00

95 lines
3.0 KiB
PHP
Executable File

<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Console\Tests\Question;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Question\ChoiceQuestion;
class ChoiceQuestionTest extends TestCase
{
/**
* @dataProvider selectUseCases
*/
public function testSelectUseCases($multiSelect, $answers, $expected, $message, $default = null)
{
$question = new ChoiceQuestion('A question', [
'First response',
'Second response',
'Third response',
'Fourth response',
null,
], $default);
$question->setMultiselect($multiSelect);
foreach ($answers as $answer) {
$validator = $question->getValidator();
$actual = $validator($answer);
$this->assertEquals($actual, $expected, $message);
}
}
public function selectUseCases()
{
return [
[
false,
['First response', 'First response ', ' First response', ' First response '],
'First response',
'When passed single answer on singleSelect, the defaultValidator must return this answer as a string',
],
[
true,
['First response', 'First response ', ' First response', ' First response '],
['First response'],
'When passed single answer on MultiSelect, the defaultValidator must return this answer as an array',
],
[
true,
['First response,Second response', ' First response , Second response '],
['First response', 'Second response'],
'When passed multiple answers on MultiSelect, the defaultValidator must return these answers as an array',
],
[
false,
[null],
null,
'When used null as default single answer on singleSelect, the defaultValidator must return this answer as null',
],
[
false,
['First response'],
'First response',
'When used a string as default single answer on singleSelect, the defaultValidator must return this answer as a string',
'First response',
],
];
}
public function testNonTrimmable()
{
$question = new ChoiceQuestion('A question', [
'First response ',
' Second response',
' Third response ',
]);
$question->setTrimmable(false);
$this->assertSame(' Third response ', $question->getValidator()(' Third response '));
$question->setMultiselect(true);
$this->assertSame(['First response ', ' Second response'], $question->getValidator()('First response , Second response'));
}
}