The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use Test::More qw(no_plan);
use Test::NoWarnings;
use Test::Exception;
use Scalar::Util qw(blessed);
use lib qw( ../lib ./lib );
use Data::Dumper;

eval { chdir('t') };

use Nagios::Config;

my $lax = Nagios::Object::Config->new();
lives_ok(
    sub { $lax->parse('60flexible-attributes1.cfg') },
    "parse() does not throw exceptions by default"
);

my @contacts = $lax->list_contacts;
lives_ok(
    sub { $contacts[0]->random_one },
    "Verify that get method was instantiated"
);
lives_ok(
    sub { $contacts[0]->set_random_one('foobar') },
    "Verify that set method was instantiated"
);

# enable strict mode
Nagios::Object::Config->strict_mode(1);
my $strict = Nagios::Object::Config->new();
dies_ok(
    sub { $strict->parse('60flexible-attributes2.cfg') },
    "parse() throws exceptions with strict_mode"
);

dies_ok( sub { $contacts[0]->random_four },
    "verify that no methods were instantiated under strict_mode" );