xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/bigintpm.t (revision e068048151d29f2562a32185e21a8ba885482260)
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