#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use File::Monitor;
use File::Monitor::Object;
my @READ_ONLY = qw(
dev inode mode num_links uid gid rdev size atime mtime ctime blk_size
blocks error files name
);
plan tests => 6 + @READ_ONLY * 2;
ok my $monitor = File::Monitor->new(), 'object creation OK';
isa_ok $monitor, 'File::Monitor';
eval { File::Monitor::Object->new( { owner => $monitor } ); };
like $@, qr/name/, 'name is mandatory';
eval { File::Monitor::Object->new( { name => '.' } ); };
like $@, qr/owner/, 'owner is mandatory';
ok my $object
= File::Monitor::Object->new( { name => '.', owner => $monitor } ),
'object creaton OK';
isa_ok $object, 'File::Monitor::Object';
for my $field ( @READ_ONLY ) {
eval { $object->$field };
ok !$@, "$field can be read";
eval { $object->$field( 'something' ); };
like $@, qr/read\W+only/, "$field can't be written";
}