#!perl

use strict;
use warnings;
use UNIVERSAL qw(isa);
use lib '../lib';
use Test::More tests => 3;
use Test::CallFlow qw(:all); # package under test

my $mocked = mock_object( 'Mocked::Pkg', { 'some field' => 'some value' } );

eval {
        # catcher for static calls
        Test::CallFlow::instance()->mock_call(
                arg_check( qr/^Mocked::Pkg::/ ),
                arg_check( sub { ! isa( $_[2][$_[1]], 'Mocked::Pkg' ) } ),
                arg_any(0,99)
                )
                ->max(9)
                ->anytime;

        mock_run;
        Mocked::Pkg::first_ok_call( 'any', 'args' );
        Mocked::Pkg::second_ok_call();
        Mocked::Pkg::finally_fail( bless {}, 'Mocked::Pkg' );
};
unlike( $@, qr/_ok_call/, "Regex matcher accepts any static calls" )
        or diag $@;
like( $@, qr/\bfinally_fail\b/, "ArgCheck::Code correctly denies an argument blessed as class to deny" )
        or diag $@;

mock_clear;

TODO: {
	local $TODO = "write more complex tests";
	ok(0, "unimplemented");
}
