PageRenderTime 39ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

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

#
Perl | 51 lines | 28 code | 16 blank | 7 comment | 2 complexity | 79451090e3deccdff2f7cd027d3e9830 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. use strict;
  2. use warnings;
  3. use Test::More tests => 9;
  4. # member_pointer using pointers to member functions
  5. BEGIN { use_ok('member_pointer') }
  6. require_ok('member_pointer');
  7. sub check($;$;$) {
  8. my($what, $expected, $actual) = @_;
  9. if ($expected != $actual) {
  10. die ("Failed: $what Expected: $expected Actual: $actual");
  11. }
  12. }
  13. # Get the pointers
  14. my $area_pt = member_pointer::areapt();
  15. my $perim_pt = member_pointer::perimeterpt();
  16. # Create some objects
  17. my $s = new member_pointer::Square(10);
  18. # Do some calculations
  19. is(100.0, member_pointer::do_op($s,$area_pt), "Square area");
  20. is(40.0, member_pointer::do_op($s,$perim_pt), "Square perim");
  21. no strict;
  22. my $memberPtr = $member_pointer::areavar;
  23. $memberPtr = $member_pointer::perimetervar;
  24. # Try the variables
  25. is(100.0, member_pointer::do_op($s,$member_pointer::areavar), "Square area");
  26. is(40.0, member_pointer::do_op($s,$member_pointer::perimetervar), "Square perim");
  27. # Modify one of the variables
  28. $member_pointer::areavar = $perim_pt;
  29. is(40.0, member_pointer::do_op($s,$member_pointer::areavar), "Square perimeter");
  30. # Try the constants
  31. $memberPtr = $member_pointer::AREAPT;
  32. $memberPtr = $member_pointer::PERIMPT;
  33. $memberPtr = $member_pointer::NULLPT;
  34. is(100.0, member_pointer::do_op($s,$member_pointer::AREAPT), "Square area");
  35. is(40.0, member_pointer::do_op($s,$member_pointer::PERIMPT), "Square perim");