|
| 1 | +<?php |
| 2 | + |
| 3 | +namespace MbStrSplitPHP82; |
| 4 | + |
| 5 | +use function PHPStan\Testing\assertType; |
| 6 | + |
| 7 | +class MbStrSplit { |
| 8 | + public function legacyTest(): void |
| 9 | + { |
| 10 | + /** @var string $string */ |
| 11 | + $string = doFoo(); |
| 12 | + |
| 13 | + $mbStrSplitConstantStringWithoutDefinedParameters = mb_str_split(); |
| 14 | + assertType('list<string>', $mbStrSplitConstantStringWithoutDefinedParameters); |
| 15 | + |
| 16 | + $mbStrSplitConstantStringWithoutDefinedSplitLength = mb_str_split('abcdef'); |
| 17 | + assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $mbStrSplitConstantStringWithoutDefinedSplitLength); |
| 18 | + |
| 19 | + $mbStrSplitStringWithoutDefinedSplitLength = mb_str_split($string); |
| 20 | + assertType('list<string>', $mbStrSplitStringWithoutDefinedSplitLength); |
| 21 | + |
| 22 | + $mbStrSplitConstantStringWithOneSplitLength = mb_str_split('abcdef', 1); |
| 23 | + assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $mbStrSplitConstantStringWithOneSplitLength); |
| 24 | + |
| 25 | + $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLength = mb_str_split('abcdef', 999); |
| 26 | + assertType('array{\'abcdef\'}', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLength); |
| 27 | + |
| 28 | + $mbStrSplitConstantStringWithFailureSplitLength = mb_str_split('abcdef', 0); |
| 29 | + assertType('false', $mbStrSplitConstantStringWithFailureSplitLength); |
| 30 | + |
| 31 | + $mbStrSplitConstantStringWithInvalidSplitLengthType = mb_str_split('abcdef', []); |
| 32 | + assertType('list<string>', $mbStrSplitConstantStringWithInvalidSplitLengthType); |
| 33 | + |
| 34 | + $mbStrSplitConstantStringWithVariableStringAndConstantSplitLength = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1); |
| 35 | + assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}", $mbStrSplitConstantStringWithVariableStringAndConstantSplitLength); |
| 36 | + |
| 37 | + $mbStrSplitConstantStringWithVariableStringAndVariableSplitLength = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2); |
| 38 | + assertType('list<string>', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLength); |
| 39 | + |
| 40 | + $mbStrSplitConstantStringWithOneSplitLengthAndValidEncoding = mb_str_split('abcdef', 1, 'UTF-8'); |
| 41 | + assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}", $mbStrSplitConstantStringWithOneSplitLengthAndValidEncoding); |
| 42 | + |
| 43 | + $mbStrSplitConstantStringWithOneSplitLengthAndInvalidEncoding = mb_str_split('abcdef', 1, 'FAKE'); |
| 44 | + assertType('false', $mbStrSplitConstantStringWithOneSplitLengthAndInvalidEncoding); |
| 45 | + |
| 46 | + $mbStrSplitConstantStringWithOneSplitLengthAndVariableEncoding = mb_str_split('abcdef', 1, doFoo()); |
| 47 | + assertType('list<string>', $mbStrSplitConstantStringWithOneSplitLengthAndVariableEncoding); |
| 48 | + |
| 49 | + $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndValidEncoding = mb_str_split('abcdef', 999, 'UTF-8'); |
| 50 | + assertType("array{'abcdef'}", $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndValidEncoding); |
| 51 | + |
| 52 | + $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndInvalidEncoding = mb_str_split('abcdef', 999, 'FAKE'); |
| 53 | + assertType('false', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndInvalidEncoding); |
| 54 | + |
| 55 | + $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndVariableEncoding = mb_str_split('abcdef', 999, doFoo()); |
| 56 | + assertType('list<string>', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndVariableEncoding); |
| 57 | + |
| 58 | + $mbStrSplitConstantStringWithFailureSplitLengthAndValidEncoding = mb_str_split('abcdef', 0, 'UTF-8'); |
| 59 | + assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndValidEncoding); |
| 60 | + |
| 61 | + $mbStrSplitConstantStringWithFailureSplitLengthAndInvalidEncoding = mb_str_split('abcdef', 0, 'FAKE'); |
| 62 | + assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndInvalidEncoding); |
| 63 | + |
| 64 | + $mbStrSplitConstantStringWithFailureSplitLengthAndVariableEncoding = mb_str_split('abcdef', 0, doFoo()); |
| 65 | + assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndVariableEncoding); |
| 66 | + |
| 67 | + $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndValidEncoding = mb_str_split('abcdef', [], 'UTF-8'); |
| 68 | + assertType('list<string>', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndValidEncoding); |
| 69 | + |
| 70 | + $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndInvalidEncoding = mb_str_split('abcdef', [], 'FAKE'); |
| 71 | + assertType('false', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndInvalidEncoding); |
| 72 | + |
| 73 | + $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndVariableEncoding = mb_str_split('abcdef', [], doFoo()); |
| 74 | + assertType('list<string>', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndVariableEncoding); |
| 75 | + |
| 76 | + $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndValidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, 'UTF-8'); |
| 77 | + assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}", $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndValidEncoding); |
| 78 | + |
| 79 | + $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndInvalidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, 'FAKE'); |
| 80 | + assertType('false', $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndInvalidEncoding); |
| 81 | + |
| 82 | + $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndVariableEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, doFoo()); |
| 83 | + assertType('list<string>', $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndVariableEncoding); |
| 84 | + |
| 85 | + $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndValidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, 'UTF-8'); |
| 86 | + assertType('list<string>', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndValidEncoding); |
| 87 | + |
| 88 | + $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndInvalidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, 'FAKE'); |
| 89 | + assertType('false', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndInvalidEncoding); |
| 90 | + |
| 91 | + $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndVariableEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, doFoo()); |
| 92 | + assertType('list<string>', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndVariableEncoding); |
| 93 | + } |
| 94 | + |
| 95 | + /** |
| 96 | + * @param non-empty-string $nonEmptyString |
| 97 | + * @param non-falsy-string $nonFalsyString |
| 98 | + * @param lowercase-string $lowercaseString |
| 99 | + * @param uppercase-string $uppercaseString |
| 100 | + */ |
| 101 | + function doFoo( |
| 102 | + string $string, |
| 103 | + string $nonEmptyString, |
| 104 | + string $nonFalsyString, |
| 105 | + string $lowercaseString, |
| 106 | + string $uppercaseString, |
| 107 | + int $integer, |
| 108 | + ):void { |
| 109 | + assertType('list<string>', mb_str_split($string)); |
| 110 | + assertType('non-empty-list<non-empty-string>', mb_str_split($nonEmptyString)); |
| 111 | + assertType('non-empty-list<non-empty-string>', mb_str_split($nonFalsyString)); |
| 112 | + assertType('list<lowercase-string>', mb_str_split($lowercaseString)); |
| 113 | + assertType('list<uppercase-string>', mb_str_split($uppercaseString)); |
| 114 | + |
| 115 | + assertType('list<string>', mb_str_split($string, $integer)); |
| 116 | + assertType('non-empty-list<non-empty-string>', mb_str_split($nonEmptyString, $integer)); |
| 117 | + assertType('non-empty-list<non-empty-string>', mb_str_split($nonFalsyString, $integer)); |
| 118 | + assertType('list<lowercase-string>', mb_str_split($lowercaseString, $integer)); |
| 119 | + assertType('list<uppercase-string>', mb_str_split($uppercaseString, $integer)); |
| 120 | + } |
| 121 | +} |
0 commit comments