95 lines
3.0 KiB
PHP
Executable File
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'));
|
|
}
|
|
}
|