#17931 checked for wrong constant
[p5sagit/p5-mst-13.2.git] / lib / bignum / t / bigint.t
CommitLineData
126f3c5f 1#!/usr/bin/perl -w
2
3###############################################################################
4
5use Test;
6use strict;
7
8BEGIN
9 {
10 $| = 1;
11 chdir 't' if -d 't';
12 unshift @INC, '../lib';
13 plan tests => 28;
14 }
15
16use bigint;
17
18###############################################################################
19# _constant tests
20
21foreach (qw/
22 123:123
23 123.4:123
24 1.4:1
25 0.1:0
26 -0.1:0
27 -1.1:-1
28 -123.4:-123
29 -123:-123
30 123e2:123e2
31 123e-1:12
32 123e-4:0
33 123e-3:0
34 123.345e-1:12
35 123.456e+2:12345
36 1234.567e+3:1234567
37 1234.567e+4:1234567E1
38 1234.567e+6:1234567E3
39 /)
40 {
41 my ($x,$y) = split /:/;
42 print "# Try $x\n";
43 ok (bigint::_constant("$x"),"$y");
44 }
45
46###############################################################################
47# general tests
48
49my $x = 5; ok (ref($x) =~ /^Math::BigInt/); # :constant
50
51# todo: ok (2 + 2.5,4.5); # should still work
52# todo: $x = 2 + 3.5; ok (ref($x),'Math::BigFloat');
53
54$x = 2 ** 255; ok (ref($x) =~ /^Math::BigInt/);
55
56ok (12->bfac(),479001600);
57ok (9/4,2);
58
59ok (4.5+4.5,8); # truncate
60ok (ref(4.5+4.5) =~ /^Math::BigInt/);
61
62
63###############################################################################
64# accurarcy and precision
65
66# this might change!
67
68ok_undef ($Math::BigInt::accuracy);
69ok_undef ($Math::BigInt::precision);
70bigint->accuracy(5);
71ok ($Math::BigInt::accuracy,5);
72bigint->precision(-2);
73ok_undef ($Math::BigInt::accuracy);
74ok ($Math::BigInt::precision,-2);
75
76###############################################################################
77###############################################################################
78# Perl 5.005 does not like ok ($x,undef)
79
80sub ok_undef
81 {
82 my $x = shift;
83
84 ok (1,1) and return if !defined $x;
85 ok ($x,'undef');
86 }