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