File Coverage

blib/lib/Mo/utils/Time.pm
Criterion Covered Total %
statement 41 41 100.0
branch 20 20 100.0
condition 3 3 100.0
subroutine 8 8 100.0
pod 2 2 100.0
total 74 74 100.0


line stmt bran cond sub pod time code
1             package Mo::utils::Time;
2              
3 4     4   161679 use base qw(Exporter);
  4         8  
  4         519  
4 4     4   30 use strict;
  4         12  
  4         81  
5 4     4   17 use warnings;
  4         5  
  4         179  
6              
7 4     4   1693 use Error::Pure qw(err);
  4         24302  
  4         78  
8 4     4   231 use Readonly;
  4         6  
  4         2075  
9              
10             Readonly::Array our @EXPORT_OK => qw(check_time_24hhmm check_time_24hhmmss);
11              
12             our $VERSION = 0.01;
13              
14             sub check_time_24hhmm {
15 6     6 1 231796 my ($self, $key) = @_;
16              
17 6 100       14 _check_key($self, $key) && return;
18              
19 4 100       23 if ($self->{$key} !~ m/^(\d{2})\:(\d{2})$/ms) {
20             err "Parameter '".$key."' doesn't contain valid time in HH:MM format.",
21 1         6 'Value', $self->{$key},
22             ;
23             }
24 3         12 my ($hour, $min) = ($1, $2);
25 3 100       8 if ($hour > 23) {
26             err "Parameter '".$key."' doesn't contain valid hour in HH:MM time format.",
27 1         7 'Value', $self->{$key},
28             ;
29             }
30 2 100       4 if ($min > 59) {
31             err "Parameter '".$key."' doesn't contain valid minute in HH:MM time format.",
32 1         4 'Value', $self->{$key},
33             ;
34             }
35              
36 1         2 return;
37             }
38              
39             sub check_time_24hhmmss {
40 7     7 1 347432 my ($self, $key) = @_;
41              
42 7 100       11 _check_key($self, $key) && return;
43              
44 5 100       24 if ($self->{$key} !~ m/^(\d{2})\:(\d{2})\:(\d{2})$/ms) {
45             err "Parameter '".$key."' doesn't contain valid time in HH:MM:SS format.",
46 1         7 'Value', $self->{$key},
47             ;
48             }
49 4         13 my ($hour, $min, $sec) = ($1, $2, $3);
50 4 100       12 if ($hour > 23) {
51             err "Parameter '".$key."' doesn't contain valid hour in HH:MM:SS time format.",
52 1         4 'Value', $self->{$key},
53             ;
54             }
55 3 100       5 if ($min > 59) {
56             err "Parameter '".$key."' doesn't contain valid minute in HH:MM:SS time format.",
57 1         4 'Value', $self->{$key},
58             ;
59             }
60 2 100       5 if ($sec > 59) {
61             err "Parameter '".$key."' doesn't contain valid second in HH:MM:SS time format.",
62 1         4 'Value', $self->{$key},
63             ;
64             }
65              
66 1         2 return;
67             }
68              
69             sub _check_key {
70 13     13   21 my ($self, $key) = @_;
71              
72 13 100 100     61 if (! exists $self->{$key} || ! defined $self->{$key}) {
73 4         12 return 1;
74             }
75              
76 9         21 return 0;
77             }
78              
79             1;
80              
81             __END__