LCOV - code coverage report
Current view: top level - lib/validators - mac_address_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 22 22 100.0 %
Date: 2023-05-18 02:05:34 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:math';
       2             : 
       3             : import 'package:flutter/services.dart';
       4             : import 'package:folly_fields/util/mask_text_input_formatter.dart';
       5             : import 'package:folly_fields/validators/abstract_validator.dart';
       6             : 
       7             : ///
       8             : ///
       9             : ///
      10             : class MacAddressValidator extends AbstractValidator<String> {
      11             :   ///
      12             :   ///
      13             :   ///
      14           1 :   MacAddressValidator()
      15           1 :       : super(
      16           1 :           <TextInputFormatter>[
      17           1 :             UppercaseMask(
      18             :               mask: '##:##:##:##:##:##',
      19           1 :               filter: <String, RegExp>{
      20           1 :                 '#': RegExp('[a-fA-F0-9]'),
      21             :               },
      22             :             ),
      23             :           ],
      24             :         );
      25             : 
      26             :   ///
      27             :   ///
      28             :   ///
      29           1 :   @override
      30           2 :   String format(String value) => strip(value).replaceAllMapped(
      31           1 :         RegExp(
      32             :           '^([A-F0-9]{2})([A-F0-9]{2})([A-F0-9]{2})'
      33             :           r'([A-F0-9]{2})([A-F0-9]{2})([A-F0-9]{2})$',
      34             :         ),
      35           8 :         (Match m) => '${m[1]}:${m[2]}:${m[3]}:${m[4]}:${m[5]}:${m[6]}',
      36             :       );
      37             : 
      38             :   ///
      39             :   ///
      40             :   ///
      41           1 :   @override
      42           2 :   String strip(String value) => value.replaceAll(RegExp('[^A-F0-9]'), '');
      43             : 
      44             :   ///
      45             :   ///
      46             :   ///
      47           1 :   @override
      48             :   bool isValid(String value) {
      49           3 :     if (value.isEmpty || value.length != 17) {
      50             :       return false;
      51             :     }
      52             : 
      53           1 :     value = strip(value);
      54             : 
      55           2 :     if (value.length != 12) {
      56             :       return false;
      57             :     }
      58             : 
      59           3 :     return format(value).length == 17;
      60             :   }
      61             : 
      62           3 :   static final Random _random = Random();
      63             : 
      64             :   ///
      65             :   ///
      66             :   ///
      67           2 :   static String generate() => List<String>.generate(
      68             :         17,
      69           1 :         (int index) =>
      70           6 :             (index + 1) % 3 == 0 ? ':' : _random.nextInt(16).toRadixString(16),
      71           2 :       ).join().toUpperCase();
      72             : }

Generated by: LCOV version 1.14