PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/trunk/Examples/test-suite/perl5/contract_runme.pl

#
Perl | 78 lines | 69 code | 7 blank | 2 comment | 0 complexity | 725fed3ddf72304d547a045864323bb5 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Test::More tests => 32;
  5. BEGIN { use_ok('contract') }
  6. require_ok('contract');
  7. # adapted from ../python/contract_runme.py
  8. {
  9. ok(contract::test_preassert(1,2), "good preassertion");
  10. eval { contract::test_preassert(-1) };
  11. like($@, qr/\bRuntimeError\b/, "bad preassertion");
  12. ok(contract::test_postassert(3), "good postassertion");
  13. eval { contract::test_postassert(-3) };
  14. like($@, qr/\bRuntimeError\b/, "bad postassertion");
  15. ok(contract::test_prepost(2,3), "good prepost");
  16. ok(contract::test_prepost(5,-4), "good prepost");
  17. eval { contract::test_prepost(-3,4); };
  18. like($@, qr/\bRuntimeError\b/, "bad preassertion");
  19. eval { contract::test_prepost(4,-10) };
  20. like($@, qr/\bRuntimeError\b/, "bad postassertion");
  21. }
  22. {
  23. my $f = contract::Foo->new();
  24. ok($f->test_preassert(4,5), "method pre");
  25. eval { $f->test_preassert(-2,3) };
  26. like($@, qr/\bRuntimeError\b/, "method pre bad");
  27. ok($f->test_postassert(4), "method post");
  28. eval { $f->test_postassert(-4) };
  29. like($@, qr/\bRuntimeError\b/, "method post bad");
  30. ok($f->test_prepost(3,4), "method prepost");
  31. ok($f->test_prepost(4,-3), "method prepost");
  32. eval { $f->test_prepost(-4,2) };
  33. like($@, qr/\bRuntimeError\b/, "method pre bad");
  34. eval { $f->test_prepost(4,-10) };
  35. like($@, qr/\bRuntimeError\b/, "method post bad");
  36. }
  37. {
  38. ok(contract::Foo::stest_prepost(4,0), "static method prepost");
  39. eval { contract::Foo::stest_prepost(-4,2) };
  40. like($@, qr/\bRuntimeError\b/, "static method pre bad");
  41. eval { contract::Foo::stest_prepost(4,-10) };
  42. like($@, qr/\bRuntimeError\b/, "static method post bad");
  43. }
  44. {
  45. my $b = contract::Bar->new();
  46. eval { $b->test_prepost(2,-4) };
  47. like($@, qr/\bRuntimeError\b/, "inherit pre bad");
  48. }
  49. {
  50. my $d = contract::D->new();
  51. eval { $d->foo(-1,1,1,1,1) };
  52. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  53. eval { $d->foo(1,-1,1,1,1) };
  54. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  55. eval { $d->foo(1,1,-1,1,1) };
  56. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  57. eval { $d->foo(1,1,1,-1,1) };
  58. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  59. eval { $d->foo(1,1,1,1,-1) };
  60. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  61. eval { $d->bar(-1,1,1,1,1) };
  62. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  63. eval { $d->bar(1,-1,1,1,1) };
  64. like($@, qr/\bRuntimeError\b/, "inherit pre D");
  65. eval { $d->bar(1,1,-1,1,1) };
  66. 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. }