1eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1use strict; 4b8851fccSafresh1use warnings; 5b8851fccSafresh1 6*e0680481Safresh1use Test::More tests => 4278 # tests in require'd file 79f11ffb7Safresh1 + 20; # tests in this file 8b8851fccSafresh1 99f11ffb7Safresh1use Math::BigInt only => 'Calc'; 10b8851fccSafresh1 11b46d8ef2Safresh1our ($CLASS, $LIB); 12b8851fccSafresh1$CLASS = "Math::BigInt"; 13b46d8ef2Safresh1$LIB = Math::BigInt -> config('lib'); # backend library 14b8851fccSafresh1 15b8851fccSafresh1my $x; 16b8851fccSafresh1 17b8851fccSafresh1############################################################################# 189f11ffb7Safresh1# bgcd() as function, class method and instance method. 199f11ffb7Safresh1 209f11ffb7Safresh1my $gcd0 = Math::BigInt::bgcd(-12, 18, 27); 219f11ffb7Safresh1isa_ok($gcd0, "Math::BigInt", "bgcd() as function"); 229f11ffb7Safresh1is($gcd0, 3, "bgcd() as function"); 239f11ffb7Safresh1 249f11ffb7Safresh1my $gcd1 = Math::BigInt->bgcd(-12, 18, 27); 259f11ffb7Safresh1isa_ok($gcd1, "Math::BigInt", "bgcd() as class method"); 269f11ffb7Safresh1is($gcd1, 3, "bgcd() as class method"); 279f11ffb7Safresh1 289f11ffb7Safresh1$x = Math::BigInt -> new(-12); 299f11ffb7Safresh1my $gcd2 = $x -> bgcd(18, 27); 309f11ffb7Safresh1isa_ok($gcd2, "Math::BigInt", "bgcd() as instance method"); 319f11ffb7Safresh1is($gcd2, 3, "bgcd() as instance method"); 329f11ffb7Safresh1is($x, -12, "bgcd() does not modify invocand"); 339f11ffb7Safresh1 349f11ffb7Safresh1############################################################################# 359f11ffb7Safresh1# blcm() as function, class method and instance method. 369f11ffb7Safresh1 379f11ffb7Safresh1my $lcm0 = Math::BigInt::blcm(-12, 18, 27); 389f11ffb7Safresh1isa_ok($lcm0, "Math::BigInt", "blcm() as function"); 399f11ffb7Safresh1is($lcm0, 108, "blcm() as function"); 409f11ffb7Safresh1 419f11ffb7Safresh1my $lcm1 = Math::BigInt->blcm(-12, 18, 27); 429f11ffb7Safresh1isa_ok($lcm1, "Math::BigInt", "blcm() as class method"); 439f11ffb7Safresh1is($lcm1, 108, "blcm() as class method"); 449f11ffb7Safresh1 459f11ffb7Safresh1$x = Math::BigInt -> new(-12); 469f11ffb7Safresh1my $lcm2 = $x -> blcm(18, 27); 479f11ffb7Safresh1isa_ok($lcm2, "Math::BigInt", "blcm() as instance method"); 489f11ffb7Safresh1is($lcm2, 108, "blcm() as instance method"); 499f11ffb7Safresh1is($x, -12, "blcm() does not modify invocand"); 509f11ffb7Safresh1 519f11ffb7Safresh1############################################################################# 52b8851fccSafresh1# from_hex(), from_bin() and from_oct() tests 53b8851fccSafresh1 54b8851fccSafresh1$x = Math::BigInt->from_hex('0xcafe'); 55b8851fccSafresh1is($x, "51966", 56b8851fccSafresh1 qq|Math::BigInt->from_hex("0xcafe")|); 57b8851fccSafresh1 58b8851fccSafresh1$x = Math::BigInt->from_hex('0xcafebabedead'); 59b8851fccSafresh1is($x, "223195403574957", 60b8851fccSafresh1 qq|Math::BigInt->from_hex("0xcafebabedead")|); 61b8851fccSafresh1 62b8851fccSafresh1$x = Math::BigInt->from_bin('0b1001'); 63b8851fccSafresh1is($x, "9", 64b8851fccSafresh1 qq|Math::BigInt->from_bin("0b1001")|); 65b8851fccSafresh1 66b8851fccSafresh1$x = Math::BigInt->from_bin('0b1001100110011001100110011001'); 67b8851fccSafresh1is($x, "161061273", 68b8851fccSafresh1 qq|Math::BigInt->from_bin("0b1001100110011001100110011001");|); 69b8851fccSafresh1 70b8851fccSafresh1$x = Math::BigInt->from_oct('0775'); 71b8851fccSafresh1is($x, "509", 72b8851fccSafresh1 qq|Math::BigInt->from_oct("0775");|); 73b8851fccSafresh1 74b8851fccSafresh1$x = Math::BigInt->from_oct('07777777777777711111111222222222'); 75b8851fccSafresh1is($x, "9903520314281112085086151826", 76b8851fccSafresh1 qq|Math::BigInt->from_oct("07777777777777711111111222222222");|); 77b8851fccSafresh1 78b8851fccSafresh1############################################################################# 79b8851fccSafresh1# all the other tests 80b8851fccSafresh1 81b46d8ef2Safresh1require './t/bigintpm.inc'; # all tests here for sharing 82