use Test::More tests => 6;

use strict;
use warnings;
use File::Spec;
use lib 't/lib';
$|++;

use TestSupport qw(create_test_files delete_test_files move_test_files
  modify_attrs_on_test_files $dir received_events receive_event);

use AnyEvent::Filesys::Notify;

sub run_test {
    my %extra_config = @_;

    my $n = AnyEvent::Filesys::Notify->new(
        dirs => [$dir],
        cb   => sub {
            receive_event(@_);

            # This call back deletes any created files
            my $e = $_[0];
            unlink $e->path if $e->type eq 'created';
        },
        %extra_config,
    );
    isa_ok( $n, 'AnyEvent::Filesys::Notify' );

    # Create a file, which will be delete in the callback
    received_events( sub { create_test_files('foo') },
        'create a file', qw(created) );

    # Did we get notified of the delete?
    received_events( sub { }, 'deleted the file', qw(deleted) );
}

run_test();

SKIP: {
    skip 'Requires Mac with IO::KQueue', 3
      unless $^O eq 'darwin' and eval { require IO::KQueue; 1; };
    run_test( backend => 'KQueue' );
}
