diff options
Diffstat (limited to 'Examples/test-suite/perl5/member_pointer_runme.pl')
| -rw-r--r-- | Examples/test-suite/perl5/member_pointer_runme.pl | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Examples/test-suite/perl5/member_pointer_runme.pl b/Examples/test-suite/perl5/member_pointer_runme.pl new file mode 100644 index 0000000..ff2cee7 --- /dev/null +++ b/Examples/test-suite/perl5/member_pointer_runme.pl @@ -0,0 +1,51 @@ +use strict; +use warnings; +use Test::More tests => 9; +# member_pointer using pointers to member functions + +BEGIN { use_ok('member_pointer') } +require_ok('member_pointer'); + +sub check($;$;$) { + my($what, $expected, $actual) = @_; + if ($expected != $actual) { + die ("Failed: $what Expected: $expected Actual: $actual"); + } +} + +# Get the pointers + +my $area_pt = member_pointer::areapt(); +my $perim_pt = member_pointer::perimeterpt(); + +# Create some objects + +my $s = new member_pointer::Square(10); + +# Do some calculations + +is(100.0, member_pointer::do_op($s,$area_pt), "Square area"); +is(40.0, member_pointer::do_op($s,$perim_pt), "Square perim"); +no strict; + +my $memberPtr = $member_pointer::areavar; +$memberPtr = $member_pointer::perimetervar; + +# Try the variables +is(100.0, member_pointer::do_op($s,$member_pointer::areavar), "Square area"); +is(40.0, member_pointer::do_op($s,$member_pointer::perimetervar), "Square perim"); + +# Modify one of the variables +$member_pointer::areavar = $perim_pt; + +is(40.0, member_pointer::do_op($s,$member_pointer::areavar), "Square perimeter"); + +# Try the constants + +$memberPtr = $member_pointer::AREAPT; +$memberPtr = $member_pointer::PERIMPT; +$memberPtr = $member_pointer::NULLPT; + +is(100.0, member_pointer::do_op($s,$member_pointer::AREAPT), "Square area"); +is(40.0, member_pointer::do_op($s,$member_pointer::PERIMPT), "Square perim"); + |
