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 warnings;

BEGIN { require "t/test.pl" }

use TB2::Counter;
my $CLASS = "TB2::Counter";

{
    my $counter = $CLASS->new;
    isa_ok $counter, $CLASS;

    is $counter->get, 0,                "default count";
    is $counter->increment, 1,          "increment's return";
    is $counter->get, 1,                "  and increments";
    is $counter->increment(3), 4,       "  return with argument";
    is $counter->get, 4,                "  and increments";

    is $counter->set(22), 4,            "set's return";
    is $counter->get, 22,               "  and sets";

    my $other = $CLASS->new;
    is $other->get, 0,                  "create()";
    is $counter->get, 22,               "  separate object";
}


# Test bad counts
{
    # The errors from Mouse are messy, just make sure it fails
    my $count = $CLASS->new;
    ok !eval { $count->set(1.1) };
    ok !eval { $count->set(-1) };
    ok !eval { $count->set("John Belushi") };
    ok !eval { $count->set() };
}

done_testing();