1*256a93a4Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1# 3b8851fccSafresh1# Verify that 4b8851fccSafresh1# - Math::BigInt::objectify() calls as_int() (or as_number(), as a fallback) 5b8851fccSafresh1# if the target object class is Math::BigInt. 6b8851fccSafresh1# - Math::BigInt::objectify() calls as_float() if the target object class is 7b8851fccSafresh1# Math::BigFloat. 8b8851fccSafresh1# 9b8851fccSafresh1# See RT #16221 and RT #52124. 10b8851fccSafresh1 11b8851fccSafresh1use strict; 12b8851fccSafresh1use warnings; 13b8851fccSafresh1 14b8851fccSafresh1package main; 15b8851fccSafresh1 16b8851fccSafresh1use Test::More tests => 2; 17b8851fccSafresh1use Math::BigInt; 18b8851fccSafresh1use Math::BigFloat; 19b8851fccSafresh1 20b8851fccSafresh1############################################################################ 21b8851fccSafresh1 22b8851fccSafresh1my $int = Math::BigInt->new(10); 23b8851fccSafresh1my $int_percent = My::Percent::Float->new(100); 24b8851fccSafresh1 25b8851fccSafresh1is($int * $int_percent, 10, '$int * $int_percent = 10'); 26b8851fccSafresh1 27b8851fccSafresh1############################################################################ 28b8851fccSafresh1 29b8851fccSafresh1my $float = Math::BigFloat->new(10); 30b8851fccSafresh1my $float_percent = My::Percent::Float->new(100); 31b8851fccSafresh1 32b8851fccSafresh1is($float * $float_percent, 10, '$float * $float_percent = 10'); 33b8851fccSafresh1 34b8851fccSafresh1############################################################################ 35b8851fccSafresh1 36b8851fccSafresh1package My::Percent::Int; 37b8851fccSafresh1 38b8851fccSafresh1sub new { 39b8851fccSafresh1 my $class = shift; 40b8851fccSafresh1 my $num = shift; 41b8851fccSafresh1 return bless \$num, $class; 42b8851fccSafresh1} 43b8851fccSafresh1 44b8851fccSafresh1sub as_number { 45b8851fccSafresh1 my $self = shift; 46b8851fccSafresh1 return Math::BigInt->new($$self / 100); 47b8851fccSafresh1} 48b8851fccSafresh1 49b8851fccSafresh1sub as_string { 50b8851fccSafresh1 my $self = shift; 51b8851fccSafresh1 return $$self; 52b8851fccSafresh1} 53b8851fccSafresh1 54b8851fccSafresh1############################################################################ 55b8851fccSafresh1 56b8851fccSafresh1package My::Percent::Float; 57b8851fccSafresh1 58b8851fccSafresh1sub new { 59b8851fccSafresh1 my $class = shift; 60b8851fccSafresh1 my $num = shift; 61b8851fccSafresh1 return bless \$num, $class; 62b8851fccSafresh1} 63b8851fccSafresh1 64b8851fccSafresh1sub as_int { 65b8851fccSafresh1 my $self = shift; 66b8851fccSafresh1 return Math::BigInt->new($$self / 100); 67b8851fccSafresh1} 68b8851fccSafresh1 69b8851fccSafresh1sub as_float { 70b8851fccSafresh1 my $self = shift; 71b8851fccSafresh1 return Math::BigFloat->new($$self / 100); 72b8851fccSafresh1} 73b8851fccSafresh1 74b8851fccSafresh1sub as_string { 75b8851fccSafresh1 my $self = shift; 76b8851fccSafresh1 return $$self; 77b8851fccSafresh1} 78