Merge Math::BigRat 0.04, from Tels.
[p5sagit/p5-mst-13.2.git] / lib / Math / BigRat / t / bigrat.t
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Test;
5
6 BEGIN 
7   {
8   $| = 1;
9   chdir 't' if -d 't';
10   unshift @INC, '../lib'; # for running manually
11   plan tests => 36;
12   }
13
14 # testing of Math::BigRat
15
16 use Math::BigRat;
17
18 my ($x,$y,$z);
19
20 $x = Math::BigRat->new(1234);           ok ($x,1234);
21 $x = Math::BigRat->new('1234/1');       ok ($x,1234);
22 $x = Math::BigRat->new('1234/2');       ok ($x,617);
23
24 $x = Math::BigRat->new('100/1.0');      ok ($x,100);
25 $x = Math::BigRat->new('10.0/1.0');     ok ($x,10);
26 $x = Math::BigRat->new('0.1/10');       ok ($x,'1/100');
27 $x = Math::BigRat->new('0.1/0.1');      ok ($x,'1');
28 $x = Math::BigRat->new('1e2/10');       ok ($x,10);
29 $x = Math::BigRat->new('1e2/1e1');      ok ($x,10);
30 $x = Math::BigRat->new('1 / 3');        ok ($x,'1/3');
31 $x = Math::BigRat->new('-1 / 3');       ok ($x,'-1/3');
32 $x = Math::BigRat->new('NaN');          ok ($x,'NaN');
33 $x = Math::BigRat->new('inf');          ok ($x,'inf');
34 $x = Math::BigRat->new('-inf');         ok ($x,'-inf');
35 $x = Math::BigRat->new('1/');           ok ($x,'NaN');
36
37 $x = Math::BigRat->new('1/4'); $y = Math::BigRat->new('1/3');
38 ok ($x + $y, '7/12');
39 ok ($x * $y, '1/12');
40 ok ($x / $y, '3/4');
41
42 $x = Math::BigRat->new('7/5'); $x *= '3/2'; 
43 ok ($x,'21/10');
44 $x -= '0.1';
45 ok ($x,'2');    # not 21/10
46
47 $x = Math::BigRat->new('2/3');          $y = Math::BigRat->new('3/2');
48 ok ($x > $y,'');                
49 ok ($x < $y,1);
50 ok ($x == $y,'');
51
52 $x = Math::BigRat->new('-2/3');         $y = Math::BigRat->new('3/2');
53 ok ($x > $y,'');                
54 ok ($x < $y,'1');
55 ok ($x == $y,'');
56
57 $x = Math::BigRat->new('-2/3');         $y = Math::BigRat->new('-2/3');
58 ok ($x > $y,'');                
59 ok ($x < $y,'');
60 ok ($x == $y,'1');
61
62 $x = Math::BigRat->new('-2/3');         $y = Math::BigRat->new('-1/3');
63 ok ($x > $y,'');                
64 ok ($x < $y,'1');
65 ok ($x == $y,'');
66
67 $x = Math::BigRat->new('-124');         $y = Math::BigRat->new('-122');
68 ok ($x->bacmp($y),1);
69
70 $x = Math::BigRat->new('-124');         $y = Math::BigRat->new('-122');
71 ok ($x->bcmp($y),-1);
72
73 $x = Math::BigRat->new('-144/9'); $x->bsqrt(); ok ($x,'NaN');
74 $x = Math::BigRat->new('144/9');  $x->bsqrt(); ok ($x,'4');
75
76 # done
77
78 1;
79