Commit | Line | Data |
126f3c5f |
1 | #!/usr/bin/perl -w |
2 | |
3 | ############################################################################### |
4 | |
5 | use Test; |
6 | use strict; |
7 | |
8 | BEGIN |
9 | { |
10 | $| = 1; |
11 | chdir 't' if -d 't'; |
12 | unshift @INC, '../lib'; |
95a2d02c |
13 | plan tests => 36; |
126f3c5f |
14 | } |
15 | |
16 | use bigint; |
17 | |
18 | ############################################################################### |
19 | # _constant tests |
20 | |
21 | foreach (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"; |
95a2d02c |
43 | ok (bigint::_float_constant("$x"),"$y"); |
44 | } |
45 | |
46 | foreach (qw/ |
47 | 0100:64 |
48 | 0200:128 |
49 | 0x100:256 |
50 | 0b1001:9 |
51 | /) |
52 | { |
53 | my ($x,$y) = split /:/; |
54 | print "# Try $x\n"; |
55 | ok (bigint::_binary_constant("$x"),"$y"); |
126f3c5f |
56 | } |
57 | |
58 | ############################################################################### |
59 | # general tests |
60 | |
61 | my $x = 5; ok (ref($x) =~ /^Math::BigInt/); # :constant |
62 | |
63 | # todo: ok (2 + 2.5,4.5); # should still work |
64 | # todo: $x = 2 + 3.5; ok (ref($x),'Math::BigFloat'); |
65 | |
66 | $x = 2 ** 255; ok (ref($x) =~ /^Math::BigInt/); |
67 | |
68 | ok (12->bfac(),479001600); |
69 | ok (9/4,2); |
70 | |
71 | ok (4.5+4.5,8); # truncate |
72 | ok (ref(4.5+4.5) =~ /^Math::BigInt/); |
73 | |
74 | |
75 | ############################################################################### |
76 | # accurarcy and precision |
77 | |
990fb837 |
78 | ok_undef (bigint->accuracy()); |
79 | ok (bigint->accuracy(12),12); |
80 | ok (bigint->accuracy(),12); |
126f3c5f |
81 | |
990fb837 |
82 | ok_undef (bigint->precision()); |
83 | ok (bigint->precision(12),12); |
84 | ok (bigint->precision(),12); |
85 | |
86 | ok (bigint->round_mode(),'even'); |
87 | ok (bigint->round_mode('odd'),'odd'); |
88 | ok (bigint->round_mode(),'odd'); |
126f3c5f |
89 | |
90 | ############################################################################### |
91 | ############################################################################### |
92 | # Perl 5.005 does not like ok ($x,undef) |
93 | |
94 | sub ok_undef |
95 | { |
96 | my $x = shift; |
97 | |
98 | ok (1,1) and return if !defined $x; |
99 | ok ($x,'undef'); |
100 | } |