1# This script should be runnable with 'make test'.
2
3######################### We start with some black magic to print on failure.
4
5BEGIN { $| = 1 }
6END { print "not ok 1\n"  unless $loaded }
7
8use lib qw( ./t );
9use Magic;
10
11use Class::Contract;
12$loaded = 1;
13print "ok 1\n";
14
15######################### End of black magic.
16
17::ok('desc'   => 'Empty Contract',
18     'expect' => 1,
19     'code'   => 'package Empty; use Class::Contract; contract {}');
20
21::ok('desc'   => 'Circular Inheritence',
22     'expect' => qr/Can\'t create circular reference in inheritence/,
23     'code'   => <<'CODE');
24package Mobius;
25use Class::Contract;
26contract { inherits 'Mobius' };
27CODE
28
29
30=pod
31
32:#:ok('desc'   => 'Garbage Collection',
33 	   'expect' => 1,
34   	 'need'   => 'Empty Contract',
35   	 'code'   => <<'CODE');
36package Garbage;
37use Class::Contract;
38contract {
39  attr 'name';
40  dtor;
41    impl { 1 };
42};
43{ my @o = (Garbage->new, Garbage->new, Garbage->new, Garbage->new); }
44(keys %$Class::Contract::hook) ? 0 : 1;
45CODE
46
47=cut
48
491;
50__END__
51
52