1#!/usr/bin/perl 2use strict; 3use warnings; 4use Test::More tests => 8; 5BEGIN { use_ok('virtual_poly') } 6require_ok('virtual_poly'); 7 8my $d = virtual_poly::NDouble->new(3.5); 9my $i = virtual_poly::NInt->new(2); 10 11# 12# the copy methods return the right polymorphic types 13# 14my $dc = $d->copy(); 15my $ic = $i->copy(); 16 17is($d->get(), $dc->get()); 18 19is($i->get(), $ic->get()); 20 21virtual_poly::incr($ic); 22 23is($i->get() + 1, $ic->get()); 24 25my $dr = $d->ref_this(); 26is($d->get(), $dr->get()); 27 28 29# 30# 'narrowing' also works 31# 32my $ddc = virtual_poly::NDouble::narrow($d->nnumber()); 33is($d->get, $ddc->get()); 34 35my $dic = virtual_poly::NInt::narrow($i->nnumber()); 36is($i->get(), $dic->get()); 37