Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions tests/Core/Ruleset/Fixtures/PropertyTypeHandlingInline.inc
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,10 @@

// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsArrayWithOnlyValues[] string, 10, 1.5, null, true, false
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsArrayWithKeysAndValues[] string=>string,10=>10,float=>1.5,null=>null,true=>true,false=>false
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsArrayWithExtendedValues[] string, 15, another string
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsArrayWithExtendedKeysAndValues[] 10=>10,string=>string,15=>15,another string=>another string
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsEmptyArray[]

// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsOldSchoolArrayWithOnlyValues[] string, 10, 1.5, null, true, false
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsOldSchoolArrayWithKeysAndValues[] string=>string,10=>10,float=>1.5,null=>null,true=>true,false=>false
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsOldSchoolArrayWithExtendedValues[] string, 15, another string
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsOldSchoolArrayWithExtendedKeysAndValues[] 10=>10,string=>string,15=>15,another string=>another string
// phpcs:set TestStandard.SetProperty.PropertyTypeHandling expectsOldSchoolEmptyArray[]

echo 'hello!';
109 changes: 64 additions & 45 deletions tests/Core/Ruleset/PropertyTypeHandlingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ final class PropertyTypeHandlingTest extends TestCase
* @param mixed $expected Expected property value.
*
* @dataProvider dataTypeHandling
* @dataProvider dataArrayPropertyExtending
*
* @return void
*/
Expand Down Expand Up @@ -80,6 +81,7 @@ public function testTypeHandlingWhenSetInline($propertyName, $expected)
* Data provider.
*
* @see self::testTypeHandlingWhenSetViaRuleset()
* @see self::testTypeHandlingWhenSetInline()
*
* @return array<string, array<string, mixed>>
*/
Expand All @@ -102,99 +104,120 @@ public static function dataTypeHandling()
'false' => 'false',
];

$expectedArrayOnlyValuesExtended = [
'string',
'15',
'another string',
];
$expectedArrayKeysAndValuesExtended = [
10 => '10',
'string' => 'string',
15 => '15',
'another string' => 'another string',
];

return [
'String value (default)' => [
'String value (default)' => [
'propertyName' => 'expectsString',
'expected' => 'arbitraryvalue',
],
'String value with whitespace gets trimmed' => [
'String value with whitespace gets trimmed' => [
'propertyName' => 'expectsTrimmedString',
'expected' => 'some value',
],
'String with whitespace only value becomes null' => [
'String with whitespace only value becomes null' => [
'propertyName' => 'emptyStringBecomesNull',
'expected' => null,
],
'Integer value gets set as string' => [
'Integer value gets set as string' => [
'propertyName' => 'expectsIntButAcceptsString',
'expected' => '12345',
],
'Float value gets set as string' => [
'Float value gets set as string' => [
'propertyName' => 'expectsFloatButAcceptsString',
'expected' => '12.345',
],
'Null value gets set as string' => [
'Null value gets set as string' => [
'propertyName' => 'expectsNull',
'expected' => 'null',
],
'Null (uppercase) value gets set as string' => [
'Null (uppercase) value gets set as string' => [
'propertyName' => 'expectsNullCase',
'expected' => 'NULL',
],
'True value gets set as boolean' => [
'True value gets set as boolean' => [
'propertyName' => 'expectsBooleanTrue',
'expected' => true,
],
'True (mixed case) value gets set as string' => [
'True (mixed case) value gets set as string' => [
'propertyName' => 'expectsBooleanTrueCase',
'expected' => 'True',
],
'True (with spaces) value gets set as boolean' => [
'True (with spaces) value gets set as boolean' => [
'propertyName' => 'expectsBooleanTrueTrimmed',
'expected' => true,
],
'False value gets set as boolean' => [
'False value gets set as boolean' => [
'propertyName' => 'expectsBooleanFalse',
'expected' => false,
],
'False (mixed case) value gets set as string' => [
'False (mixed case) value gets set as string' => [
'propertyName' => 'expectsBooleanFalseCase',
'expected' => 'fALSe',
],
'False (with spaces) value gets set as boolean' => [
'False (with spaces) value gets set as boolean' => [
'propertyName' => 'expectsBooleanFalseTrimmed',
'expected' => false,
],
'Array with only values (new style)' => [
'Array with only values (new style)' => [
'propertyName' => 'expectsArrayWithOnlyValues',
'expected' => $expectedArrayOnlyValues,
],
'Array with keys and values (new style)' => [
'Array with keys and values (new style)' => [
'propertyName' => 'expectsArrayWithKeysAndValues',
'expected' => $expectedArrayKeysAndValues,
],
'Array with only values extended (new style)' => [
'propertyName' => 'expectsArrayWithExtendedValues',
'expected' => $expectedArrayOnlyValuesExtended,
],
'Array with keys and values extended (new style)' => [
'propertyName' => 'expectsArrayWithExtendedKeysAndValues',
'expected' => $expectedArrayKeysAndValuesExtended,
],
'Empty array (new style)' => [
'Empty array (new style)' => [
'propertyName' => 'expectsEmptyArray',
'expected' => [],
],
'Array with only values (old style)' => [
'Array with only values (old style)' => [
'propertyName' => 'expectsOldSchoolArrayWithOnlyValues',
'expected' => $expectedArrayOnlyValues,
],
'Array with keys and values (old style)' => [
'Array with keys and values (old style)' => [
'propertyName' => 'expectsOldSchoolArrayWithKeysAndValues',
'expected' => $expectedArrayKeysAndValues,
],
'Empty array (old style)' => [
'propertyName' => 'expectsOldSchoolEmptyArray',
'expected' => [],
],
];

}//end dataTypeHandling()


/**
* Data provider.
*
* Array property extending is a feature which is only supported from a ruleset, not for inline property setting.
*
* @see self::testTypeHandlingWhenSetViaRuleset()
*
* @return array<string, array<string, mixed>>
*/
public static function dataArrayPropertyExtending()
{
$expectedArrayOnlyValuesExtended = [
'string',
'15',
'another string',
];
$expectedArrayKeysAndValuesExtended = [
10 => '10',
'string' => 'string',
15 => '15',
'another string' => 'another string',
];

return [
'Array with only values extended (new style)' => [
'propertyName' => 'expectsArrayWithExtendedValues',
'expected' => $expectedArrayOnlyValuesExtended,
],
'Array with keys and values extended (new style)' => [
'propertyName' => 'expectsArrayWithExtendedKeysAndValues',
'expected' => $expectedArrayKeysAndValuesExtended,
],
'Array with only values extended (old style)' => [
'propertyName' => 'expectsOldSchoolArrayWithExtendedValues',
'expected' => $expectedArrayOnlyValuesExtended,
Expand All @@ -203,13 +226,9 @@ public static function dataTypeHandling()
'propertyName' => 'expectsOldSchoolArrayWithExtendedKeysAndValues',
'expected' => $expectedArrayKeysAndValuesExtended,
],
'Empty array (old style)' => [
'propertyName' => 'expectsOldSchoolEmptyArray',
'expected' => [],
],
];

}//end dataTypeHandling()
}//end dataArrayPropertyExtending()


/**
Expand All @@ -225,7 +244,7 @@ private function getSniffObjectForRuleset()

if (isset($sniffObject) === false) {
// Set up the ruleset.
$standard = __DIR__."/PropertyTypeHandlingTest.xml";
$standard = __DIR__.'/PropertyTypeHandlingTest.xml';
$config = new ConfigDouble(["--standard=$standard"]);
$ruleset = new Ruleset($config);

Expand Down Expand Up @@ -255,7 +274,7 @@ private function getSniffObjectAfterProcessingFile()

if (isset($sniffObject) === false) {
// Set up the ruleset.
$standard = __DIR__."/PropertyTypeHandlingInlineTest.xml";
$standard = __DIR__.'/PropertyTypeHandlingInlineTest.xml';
$config = new ConfigDouble(["--standard=$standard"]);
$ruleset = new Ruleset($config);

Expand Down