File: bigrat.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (65 lines) | stat: -rw-r--r-- 2,017 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- mode: perl; -*-

###############################################################################

use strict;
use warnings;

use Test::More tests => 27;

use bigrat;

###############################################################################
# general tests

my $x = 5;
is(ref($x), 'Math::BigRat', '$x = 5 makes $x a Math::BigRat');

$x = 2 + 3.5;
is($x, 5.5, '2 + 3.5 = 5.5');
is(ref($x), 'Math::BigRat', '$x = 2 + 3.5 makes $x a Math::BigRat');

$x = 2 ** 255;
is(ref($x), 'Math::BigRat', '$x = 2 ** 255 makes $x a Math::BigRat');

is(1/3,         '1/3',    qq|1/3 = '1/3'|);
is(1/4+1/3,     '7/12',   qq|1/4+1/3 = '7/12'|);
is(5/7+3/7,     '8/7',    qq|5/7+3/7 = '8/7'|);

is(3/7+1,       '10/7',   qq|3/7+1 = '10/7'|);
is(3/7+1.1,     '107/70', qq|3/7+1.1 = '107/70'|);
is(3/7+3/7,     '6/7',    qq|3/7+3/7 = '6/7'|);

is(3/7-1,       '-4/7',   qq|3/7-1 = '-4/7'|);
is(3/7-1.1,     '-47/70', qq|3/7-1.1 = '-47/70'|);
is(3/7-2/7,     '1/7',    qq|3/7-2/7 = '1/7'|);

# fails ?
# is(1+3/7, '10/7', qq|1+3/7 = '10/7'|);

is(1.1+3/7,     '107/70', qq|1.1+3/7 = '107/70'|);
is(3/7*5/7,     '15/49',  qq|3/7*5/7 = '15/49'|);
is(3/7 / (5/7), '3/5',    qq|3/7 / (5/7) = '3/5'|);
is(3/7 / 1,     '3/7',    qq|3/7 / 1 = '3/7'|);
is(3/7 / 1.5,   '2/7',    qq|3/7 / 1.5 = '2/7'|);

###############################################################################
# accuracy and precision

is(bigrat->accuracy(), undef, 'get accuracy');
bigrat->accuracy(12);
is(bigrat->accuracy(), 12, 'get accuracy again');
bigrat->accuracy(undef);
is(bigrat->accuracy(), undef, 'get accuracy again');

is(bigrat->precision(), undef, 'get precision');
bigrat->precision(12);
is(bigrat->precision(), 12, 'get precision again');
bigrat->precision(undef);
is(bigrat->precision(), undef, 'get precision again');

is(bigrat->round_mode(), 'even', 'get round mode');
bigrat->round_mode('odd');
is(bigrat->round_mode(), 'odd', 'get round mode again');
bigrat->round_mode('even');
is(bigrat->round_mode(), 'even', 'get round mode again');