File Coverage

blib/lib/Data/RuledCluster/Strategy/Formatted.pm
Criterion Covered Total %
statement 26 27 96.3
branch 5 6 83.3
condition n/a
subroutine 6 6 100.0
pod 0 1 0.0
total 37 40 92.5


line stmt bran cond sub pod time code
1             package Data::RuledCluster::Strategy::Formatted;
2 1     1   1775 use strict;
  1         2  
  1         42  
3 1     1   4 use warnings;
  1         1  
  1         36  
4 1     1   2425 use parent 'Data::RuledCluster::Strategy';
  1         373  
  1         6  
5 1     1   37 use Data::Util qw(is_number neat);
  1         2  
  1         36  
6 1     1   4 use Carp ();
  1         1  
  1         200  
7              
8             sub resolve {
9 8     8 0 11 my ( $class, $resolver, $node_or_cluster, $args ) = @_;
10              
11 8         28 my @keys = $class->keys_from_args($args);
12 8         10 my $key = shift @keys;
13              
14 8 50       23 unless ( is_number($key) ) {
15 0         0 Carp::croak(
16             sprintf('args has not key field or no number value (key: %s)', neat($key))
17             );
18             }
19              
20 8 100       119 my $node_format = $args->{node_format}
21             or Carp::croak('node_format settings must be required');
22              
23 7         21 my @nodes = $resolver->clusters($node_or_cluster);
24 7         26 my $expected_node = sprintf($node_format, $key);
25 7 100       9 unless (grep {$_ eq $expected_node} @nodes) {
  21         46  
26 1         200 Carp::croak(sprintf('%s node is not exists', $expected_node));
27             }
28 6         20 return ($expected_node, @keys);
29             }
30              
31             1;
32              
33             __END__