| 
                                
                                    @@ 1174-1196 (lines=23) @@
                                 | 
                            
                                                            
                                    | 1171 | 
                                     | 
                                         * @return Assert  | 
                                
                                                            
                                    | 1172 | 
                                     | 
                                         * @throws AssertionFailedException  | 
                                
                                                            
                                    | 1173 | 
                                     | 
                                         */  | 
                                
                                                            
                                    | 1174 | 
                                     | 
                                        public function length(int $length, string $message='', string $fieldName='', string $encoding='utf8') : Assert  | 
                                
                                                            
                                    | 1175 | 
                                     | 
                                        { | 
                                
                                                            
                                    | 1176 | 
                                     | 
                                            if ( $this->doAllOrNullOr(__FUNCTION__, func_get_args()) )  | 
                                
                                                            
                                    | 1177 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1178 | 
                                     | 
                                                return $this;  | 
                                
                                                            
                                    | 1179 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1180 | 
                                     | 
                                            $this->string($message, $fieldName);  | 
                                
                                                            
                                    | 1181 | 
                                     | 
                                            if ( mb_strlen($this->value, $encoding) !== $length )  | 
                                
                                                            
                                    | 1182 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1183 | 
                                     | 
                                                $message    = $message ?: $this->overrideError;  | 
                                
                                                            
                                    | 1184 | 
                                     | 
                                                $message    = sprintf(  | 
                                
                                                            
                                    | 1185 | 
                                     | 
                                                    $message ?: 'Value "%s" has to be %d exactly characters long, but length is %d.',  | 
                                
                                                            
                                    | 1186 | 
                                     | 
                                                    $this->stringify($this->value),  | 
                                
                                                            
                                    | 1187 | 
                                     | 
                                                    $length,  | 
                                
                                                            
                                    | 1188 | 
                                     | 
                                                    mb_strlen($this->value, $encoding)  | 
                                
                                                            
                                    | 1189 | 
                                     | 
                                                );  | 
                                
                                                            
                                    | 1190 | 
                                     | 
                                                $constraints = ['length' => $length, 'encoding' => $encoding];  | 
                                
                                                            
                                    | 1191 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1192 | 
                                     | 
                                                throw $this->createException($message, $this->overrideCode ?: self::INVALID_LENGTH, $fieldName, $constraints);  | 
                                
                                                            
                                    | 1193 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1194 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1195 | 
                                     | 
                                            return $this;  | 
                                
                                                            
                                    | 1196 | 
                                     | 
                                        }  | 
                                
                                                            
                                    | 1197 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1198 | 
                                     | 
                                        /**  | 
                                
                                                            
                                    | 1199 | 
                                     | 
                                         * Assert that value is a string and has a character count which is  | 
                                
                                                                                
                                 | 
                                
                                    @@ 1209-1232 (lines=24) @@
                                 | 
                            
                                                            
                                    | 1206 | 
                                     | 
                                         * @return Assert  | 
                                
                                                            
                                    | 1207 | 
                                     | 
                                         * @throws AssertionFailedException  | 
                                
                                                            
                                    | 1208 | 
                                     | 
                                         */  | 
                                
                                                            
                                    | 1209 | 
                                     | 
                                        public function minLength(int $minLength, string $message='', string $fieldName='', string $encoding='utf8') : Assert  | 
                                
                                                            
                                    | 1210 | 
                                     | 
                                        { | 
                                
                                                            
                                    | 1211 | 
                                     | 
                                            if ( $this->doAllOrNullOr(__FUNCTION__, func_get_args()) )  | 
                                
                                                            
                                    | 1212 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1213 | 
                                     | 
                                                return $this;  | 
                                
                                                            
                                    | 1214 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1215 | 
                                     | 
                                            $this->string($message, $fieldName);  | 
                                
                                                            
                                    | 1216 | 
                                     | 
                                            if ( mb_strlen($this->value, $encoding) < $minLength )  | 
                                
                                                            
                                    | 1217 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1218 | 
                                     | 
                                                $message = $message ?: $this->overrideError;  | 
                                
                                                            
                                    | 1219 | 
                                     | 
                                                $message     = sprintf(  | 
                                
                                                            
                                    | 1220 | 
                                     | 
                                                    $message  | 
                                
                                                            
                                    | 1221 | 
                                     | 
                                                        ?: 'Value "%s" is too short, it should have more than %d characters, but only has %d characters.',  | 
                                
                                                            
                                    | 1222 | 
                                     | 
                                                    $this->stringify($this->value),  | 
                                
                                                            
                                    | 1223 | 
                                     | 
                                                    $minLength,  | 
                                
                                                            
                                    | 1224 | 
                                     | 
                                                    mb_strlen($this->value, $encoding)  | 
                                
                                                            
                                    | 1225 | 
                                     | 
                                                );  | 
                                
                                                            
                                    | 1226 | 
                                     | 
                                                $constraints = ['min_length' => $minLength, 'encoding' => $encoding];  | 
                                
                                                            
                                    | 1227 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1228 | 
                                     | 
                                                throw $this->createException($message, $this->overrideCode ?: self::INVALID_MIN_LENGTH, $fieldName, $constraints);  | 
                                
                                                            
                                    | 1229 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1230 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1231 | 
                                     | 
                                            return $this;  | 
                                
                                                            
                                    | 1232 | 
                                     | 
                                        }  | 
                                
                                                            
                                    | 1233 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1234 | 
                                     | 
                                        /**  | 
                                
                                                            
                                    | 1235 | 
                                     | 
                                         * Assert that value is a string and has a character count which is  | 
                                
                                                                                
                                 | 
                                
                                    @@ 1245-1267 (lines=23) @@
                                 | 
                            
                                                            
                                    | 1242 | 
                                     | 
                                         * @return Assert  | 
                                
                                                            
                                    | 1243 | 
                                     | 
                                         * @throws AssertionFailedException  | 
                                
                                                            
                                    | 1244 | 
                                     | 
                                         */  | 
                                
                                                            
                                    | 1245 | 
                                     | 
                                        public function maxLength(int $maxLength, string $message='', string $fieldName='', string $encoding='utf8') : Assert  | 
                                
                                                            
                                    | 1246 | 
                                     | 
                                        { | 
                                
                                                            
                                    | 1247 | 
                                     | 
                                            if ( $this->doAllOrNullOr(__FUNCTION__, func_get_args()) )  | 
                                
                                                            
                                    | 1248 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1249 | 
                                     | 
                                                return $this;  | 
                                
                                                            
                                    | 1250 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1251 | 
                                     | 
                                            $this->string($message, $fieldName);  | 
                                
                                                            
                                    | 1252 | 
                                     | 
                                            if ( mb_strlen($this->value, $encoding) > $maxLength )  | 
                                
                                                            
                                    | 1253 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1254 | 
                                     | 
                                                $message = $message ?: $this->overrideError;  | 
                                
                                                            
                                    | 1255 | 
                                     | 
                                                $message     = sprintf(  | 
                                
                                                            
                                    | 1256 | 
                                     | 
                                                    $message ?: 'Value "%s" is too long, it should have no more than %d characters, but has %d characters.',  | 
                                
                                                            
                                    | 1257 | 
                                     | 
                                                    $this->stringify($this->value),  | 
                                
                                                            
                                    | 1258 | 
                                     | 
                                                    $maxLength,  | 
                                
                                                            
                                    | 1259 | 
                                     | 
                                                    mb_strlen($this->value, $encoding)  | 
                                
                                                            
                                    | 1260 | 
                                     | 
                                                );  | 
                                
                                                            
                                    | 1261 | 
                                     | 
                                                $constraints = ['max_length' => $maxLength, 'encoding' => $encoding];  | 
                                
                                                            
                                    | 1262 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1263 | 
                                     | 
                                                throw $this->createException($message, $this->overrideCode ?: self::INVALID_MAX_LENGTH, $fieldName, $constraints);  | 
                                
                                                            
                                    | 1264 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1265 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1266 | 
                                     | 
                                            return $this;  | 
                                
                                                            
                                    | 1267 | 
                                     | 
                                        }  | 
                                
                                                            
                                    | 1268 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1269 | 
                                     | 
                                        /**  | 
                                
                                                            
                                    | 1270 | 
                                     | 
                                         * Assert that value has a length between min,max lengths (inclusive).  | 
                                
                                                                                
                                 | 
                                
                                    @@ 1328-1349 (lines=22) @@
                                 | 
                            
                                                            
                                    | 1325 | 
                                     | 
                                         * @return Assert  | 
                                
                                                            
                                    | 1326 | 
                                     | 
                                         * @throws AssertionFailedException  | 
                                
                                                            
                                    | 1327 | 
                                     | 
                                         */  | 
                                
                                                            
                                    | 1328 | 
                                     | 
                                        public function startsWith(string $needle, string $message='', string $fieldName='', string $encoding='utf8') : Assert  | 
                                
                                                            
                                    | 1329 | 
                                     | 
                                        { | 
                                
                                                            
                                    | 1330 | 
                                     | 
                                            if ( $this->doAllOrNullOr(__FUNCTION__, func_get_args()) )  | 
                                
                                                            
                                    | 1331 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1332 | 
                                     | 
                                                return $this;  | 
                                
                                                            
                                    | 1333 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1334 | 
                                     | 
                                            $this->string($message, $fieldName);  | 
                                
                                                            
                                    | 1335 | 
                                     | 
                                            if ( mb_strpos($this->value, $needle, 0, $encoding) !== 0 )  | 
                                
                                                            
                                    | 1336 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1337 | 
                                     | 
                                                $message = $message ?: $this->overrideError;  | 
                                
                                                            
                                    | 1338 | 
                                     | 
                                                $message     = sprintf(  | 
                                
                                                            
                                    | 1339 | 
                                     | 
                                                    $message ?: 'Value "%s" does not start with "%s".',  | 
                                
                                                            
                                    | 1340 | 
                                     | 
                                                    $this->stringify($this->value),  | 
                                
                                                            
                                    | 1341 | 
                                     | 
                                                    $this->stringify($needle)  | 
                                
                                                            
                                    | 1342 | 
                                     | 
                                                );  | 
                                
                                                            
                                    | 1343 | 
                                     | 
                                                $constraints = ['needle' => $needle, 'encoding' => $encoding];  | 
                                
                                                            
                                    | 1344 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1345 | 
                                     | 
                                                throw $this->createException($message, $this->overrideCode ?: self::INVALID_STRING_START, $fieldName, $constraints);  | 
                                
                                                            
                                    | 1346 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1347 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1348 | 
                                     | 
                                            return $this;  | 
                                
                                                            
                                    | 1349 | 
                                     | 
                                        }  | 
                                
                                                            
                                    | 1350 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1351 | 
                                     | 
                                        /**  | 
                                
                                                            
                                    | 1352 | 
                                     | 
                                         * Assert that value ends with a sequence of chars.  | 
                                
                                                                                
                                 | 
                                
                                    @@ 1395-1416 (lines=22) @@
                                 | 
                            
                                                            
                                    | 1392 | 
                                     | 
                                         * @return Assert  | 
                                
                                                            
                                    | 1393 | 
                                     | 
                                         * @throws AssertionFailedException  | 
                                
                                                            
                                    | 1394 | 
                                     | 
                                         */  | 
                                
                                                            
                                    | 1395 | 
                                     | 
                                        public function contains(string $needle, string $message='', string $fieldName='', string $encoding='utf8') : Assert  | 
                                
                                                            
                                    | 1396 | 
                                     | 
                                        { | 
                                
                                                            
                                    | 1397 | 
                                     | 
                                            if ( $this->doAllOrNullOr(__FUNCTION__, func_get_args()) )  | 
                                
                                                            
                                    | 1398 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1399 | 
                                     | 
                                                return $this;  | 
                                
                                                            
                                    | 1400 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1401 | 
                                     | 
                                            $this->string($message, $fieldName);  | 
                                
                                                            
                                    | 1402 | 
                                     | 
                                            if ( mb_strpos($this->value, $needle, 0, $encoding) === false )  | 
                                
                                                            
                                    | 1403 | 
                                     | 
                                            { | 
                                
                                                            
                                    | 1404 | 
                                     | 
                                                $message = $message ?: $this->overrideError;  | 
                                
                                                            
                                    | 1405 | 
                                     | 
                                                $message     = sprintf(  | 
                                
                                                            
                                    | 1406 | 
                                     | 
                                                    $message ?: 'Value "%s" does not contain "%s".',  | 
                                
                                                            
                                    | 1407 | 
                                     | 
                                                    $this->stringify($this->value),  | 
                                
                                                            
                                    | 1408 | 
                                     | 
                                                    $this->stringify($needle)  | 
                                
                                                            
                                    | 1409 | 
                                     | 
                                                );  | 
                                
                                                            
                                    | 1410 | 
                                     | 
                                                $constraints = ['needle' => $needle, 'encoding' => $encoding];  | 
                                
                                                            
                                    | 1411 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1412 | 
                                     | 
                                                throw $this->createException($message, $this->overrideCode ?: self::INVALID_STRING_CONTAINS, $fieldName, $constraints);  | 
                                
                                                            
                                    | 1413 | 
                                     | 
                                            }  | 
                                
                                                            
                                    | 1414 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1415 | 
                                     | 
                                            return $this;  | 
                                
                                                            
                                    | 1416 | 
                                     | 
                                        }  | 
                                
                                                            
                                    | 1417 | 
                                     | 
                                     | 
                                
                                                            
                                    | 1418 | 
                                     | 
                                        /**  | 
                                
                                                            
                                    | 1419 | 
                                     | 
                                         * Assert that value is in an array of choices.  |