LCOV - code coverage report
Current view: top level - lib/validators - licence_plate_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 19 19 100.0 %
Date: 2023-05-11 23:59:26 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/services.dart';
       2             : import 'package:folly_fields/util/mask_text_input_formatter.dart';
       3             : import 'package:folly_fields/validators/abstract_validator.dart';
       4             : 
       5             : ///
       6             : ///
       7             : ///
       8             : class LicencePlateValidator extends AbstractValidator<String> {
       9             :   ///
      10             :   ///
      11             :   ///
      12           1 :   LicencePlateValidator()
      13           1 :       : super(
      14           1 :           <TextInputFormatter>[
      15           1 :             UppercaseMask(
      16             :               mask: 'AAA-9##9',
      17           1 :               filter: <String, RegExp>{
      18           1 :                 'A': RegExp('[a-zA-Z]'),
      19           1 :                 '9': RegExp('[0-9]'),
      20           1 :                 '#': RegExp('[a-zA-Z0-9]'),
      21             :               },
      22             :             ),
      23             :           ],
      24             :         );
      25             : 
      26             :   ///
      27             :   ///
      28             :   ///
      29           1 :   @override
      30           2 :   String format(String value) => strip(value).replaceAllMapped(
      31           1 :         RegExp(r'^([A-Z]{3})([0-9])([A-Z0-9]{2})([0-9])$'),
      32           6 :         (Match m) => '${m[1]}-${m[2]}${m[3]}${m[4]}',
      33             :       );
      34             : 
      35             :   ///
      36             :   ///
      37             :   ///
      38           1 :   @override
      39           2 :   String strip(String value) => value.replaceAll(RegExp('[^A-Z0-9]'), '');
      40             : 
      41             :   ///
      42             :   ///
      43             :   ///
      44           1 :   @override
      45             :   bool isValid(String value) {
      46           1 :     if (value.isEmpty) {
      47             :       return false;
      48             :     }
      49             : 
      50           1 :     value = strip(value);
      51             : 
      52           2 :     if (value.length != 7) {
      53             :       return false;
      54             :     }
      55             : 
      56           3 :     return format(value).length == 8;
      57             :   }
      58             : }

Generated by: LCOV version 1.14