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