h2xs -AX TestDemo

package TestDemo;

use Moose;
use Color;

has 'testing' => (is => 'rw', isa => 'Int');

sub ret1 {
  return 1;
}


sub get_color {
  my $c = Color->new;
  return $c;
}


sub add {
  my $self = shift;
  my ($a, $b) = @_;
  return $a + $b;
}


sub _execute_ping {
  my $self = shift;
  my ($hostname) = @_;
  my $pr;
  if ($self->testing == 1) {
    $pr = ' 0% packet loss';
  } else {
    $pr = `ping -c 1 $hostname`;
  }
  return $pr;
}


sub _parse_ping {
  my $self = shift;
  my ($input) = @_;
  return 1 if $input =~ / 0% packet loss/ms;
  return 0;
}


sub ping {
  my $self = shift;
  my ($hostname) = @_;
  my $pr = $self->_execute_ping($hostname);
  return $self->_parse_ping($pr);
}

1;
## t/TestDemo.t
use Test::More;
my $fixed_tests = 3;

my $t = YAML::LoadFile('t/add_data.yaml');
plan tests => $fixed_tests + scalar @$t;
BEGIN { use_ok('TestDemo') };
use YAML;
use Data::Dumper;

#########################

# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.

my $td = TestDemo->new();

is($td->ret1, 1, 'Returns 1');

isa_ok($td->get_color, 'Color', 'Is object of type Color');

foreach (@$t) {
  is($td->add($_->[0], $_->[1]), $_->[2], 'Add correct');
}

$td->testing(1);
is($td->ping('8.6.5.5'), 1, 'Ping OK');
## add_data.yaml
-
  - 1
  - 2
  - 3
-
  - 3
  - 4
  - 7
-
  - 3
  - 3
  - 6