4 use Test::More tests => 32;
5 BEGIN { use_ok('contract') }
6 require_ok('contract');
8 # adapted from ../python/contract_runme.py
10 ok(contract::test_preassert(1,2), "good preassertion");
11 eval { contract::test_preassert(-1) };
12 like($@, qr/\bRuntimeError\b/, "bad preassertion");
14 ok(contract::test_postassert(3), "good postassertion");
15 eval { contract::test_postassert(-3) };
16 like($@, qr/\bRuntimeError\b/, "bad postassertion");
18 ok(contract::test_prepost(2,3), "good prepost");
19 ok(contract::test_prepost(5,-4), "good prepost");
20 eval { contract::test_prepost(-3,4); };
21 like($@, qr/\bRuntimeError\b/, "bad preassertion");
22 eval { contract::test_prepost(4,-10) };
23 like($@, qr/\bRuntimeError\b/, "bad postassertion");
26 my $f = contract::Foo->new();
27 ok($f->test_preassert(4,5), "method pre");
28 eval { $f->test_preassert(-2,3) };
29 like($@, qr/\bRuntimeError\b/, "method pre bad");
31 ok($f->test_postassert(4), "method post");
32 eval { $f->test_postassert(-4) };
33 like($@, qr/\bRuntimeError\b/, "method post bad");
35 ok($f->test_prepost(3,4), "method prepost");
36 ok($f->test_prepost(4,-3), "method prepost");
37 eval { $f->test_prepost(-4,2) };
38 like($@, qr/\bRuntimeError\b/, "method pre bad");
39 eval { $f->test_prepost(4,-10) };
40 like($@, qr/\bRuntimeError\b/, "method post bad");
43 ok(contract::Foo::stest_prepost(4,0), "static method prepost");
44 eval { contract::Foo::stest_prepost(-4,2) };
45 like($@, qr/\bRuntimeError\b/, "static method pre bad");
46 eval { contract::Foo::stest_prepost(4,-10) };
47 like($@, qr/\bRuntimeError\b/, "static method post bad");
50 my $b = contract::Bar->new();
51 eval { $b->test_prepost(2,-4) };
52 like($@, qr/\bRuntimeError\b/, "inherit pre bad");
55 my $d = contract::D->new();
56 eval { $d->foo(-1,1,1,1,1) };
57 like($@, qr/\bRuntimeError\b/, "inherit pre D");
58 eval { $d->foo(1,-1,1,1,1) };
59 like($@, qr/\bRuntimeError\b/, "inherit pre D");
60 eval { $d->foo(1,1,-1,1,1) };
61 like($@, qr/\bRuntimeError\b/, "inherit pre D");
62 eval { $d->foo(1,1,1,-1,1) };
63 like($@, qr/\bRuntimeError\b/, "inherit pre D");
64 eval { $d->foo(1,1,1,1,-1) };
65 like($@, qr/\bRuntimeError\b/, "inherit pre D");
67 eval { $d->bar(-1,1,1,1,1) };
68 like($@, qr/\bRuntimeError\b/, "inherit pre D");
69 eval { $d->bar(1,-1,1,1,1) };
70 like($@, qr/\bRuntimeError\b/, "inherit pre D");
71 eval { $d->bar(1,1,-1,1,1) };
72 like($@, qr/\bRuntimeError\b/, "inherit pre D");
73 eval { $d->bar(1,1,1,-1,1) };
74 like($@, qr/\bRuntimeError\b/, "inherit pre D");
75 eval { $d->bar(1,1,1,1,-1) };
76 like($@, qr/\bRuntimeError\b/, "inherit pre D");