10 unshift @INC, '../lib'; # for running manually
14 # testing of Math::BigInt::BitVect, primarily for interface/api and not for the
17 use Math::BigInt::Calc;
19 my $C = 'Math::BigInt::Calc'; # pass classname to sub's
22 my $x = _new($C,\"123"); my $y = _new($C,\"321");
23 ok (ref($x),'ARRAY'); ok (${_str($C,$x)},123); ok (${_str($C,$y)},321);
25 # _add, _sub, _mul, _div
27 ok (${_str($C,_add($C,$x,$y))},444);
28 ok (${_str($C,_sub($C,$x,$y))},123);
29 ok (${_str($C,_mul($C,$x,$y))},39483);
30 ok (${_str($C,_div($C,$x,$y))},123);
32 ok (${_str($C,_mul($C,$x,$y))},39483);
33 ok (${_str($C,$x)},39483);
34 ok (${_str($C,$y)},321);
35 my $z = _new($C,\"2");
36 ok (${_str($C,_add($C,$x,$z))},39485);
37 my ($re,$rr) = _div($C,$x,$y);
39 ok (${_str($C,$re)},123); ok (${_str($C,$rr)},2);
41 # is_zero, _is_one, _one, _zero
42 ok (_is_zero($C,$x),0);
43 ok (_is_one($C,$x),0);
45 ok (_is_one($C,_one()),1); ok (_is_one($C,_zero()),0);
46 ok (_is_zero($C,_zero()),1); ok (_is_zero($C,_one()),0);
49 ok (_is_odd($C,_one()),1); ok (_is_odd($C,_zero()),0);
50 ok (_is_even($C,_one()),0); ok (_is_even($C,_zero()),1);
53 $x = _new($C,\"123456789");
54 ok (_digit($C,$x,0),9);
55 ok (_digit($C,$x,1),8);
56 ok (_digit($C,$x,2),7);
57 ok (_digit($C,$x,-1),1);
58 ok (_digit($C,$x,-2),2);
59 ok (_digit($C,$x,-3),3);
62 $x = _new($C,\"12356");
63 ok (${_str($C,_copy($C,$x))},12356);
66 $x = _new($C,\"1256000000"); ok (_zeros($C,$x),6);
67 $x = _new($C,\"152"); ok (_zeros($C,$x),0);
68 $x = _new($C,\"123000"); ok (_zeros($C,$x),3);
71 $x = _new($C,\"10"); $y = _new($C,\"3");
72 ok (${_str($C,_lsft($C,$x,$y,10))},10000);
73 $x = _new($C,\"20"); $y = _new($C,\"3");
74 ok (${_str($C,_lsft($C,$x,$y,10))},20000);
75 $x = _new($C,\"128"); $y = _new($C,\"4");
76 if (!defined _lsft($C,$x,$y,2))
84 $x = _new($C,\"1000"); $y = _new($C,\"3");
85 ok (${_str($C,_rsft($C,$x,$y,10))},1);
86 $x = _new($C,\"20000"); $y = _new($C,\"3");
87 ok (${_str($C,_rsft($C,$x,$y,10))},20);
88 $x = _new($C,\"256"); $y = _new($C,\"4");
89 if (!defined _rsft($C,$x,$y,2))
99 $x = _new($C,\"123456789");
100 $y = _new($C,\"987654321");
101 ok (_acmp($C,$x,$y),-1);
102 ok (_acmp($C,$y,$x),1);
103 ok (_acmp($C,$x,$x),0);
104 ok (_acmp($C,$y,$y),0);
107 $x = _new($C,\"3333"); $y = _new($C,\"1111");
108 ok (${_str($C, scalar _div($C,$x,$y))},3);
109 $x = _new($C,\"33333"); $y = _new($C,\"1111"); ($x,$y) = _div($C,$x,$y);
110 ok (${_str($C,$x)},30); ok (${_str($C,$y)},3);
111 $x = _new($C,\"123"); $y = _new($C,\"1111");
112 ($x,$y) = _div($C,$x,$y); ok (${_str($C,$x)},0); ok (${_str($C,$y)},123);
115 $x = _new($C,\"12345"); $x = _num($C,$x); ok (ref($x)||'',''); ok ($x,12345);
118 # $x = _new($C,\"-2"); $y = _new($C,\"4"); ok (_acmp($C,$x,$y),-1);
121 $x = _new($C,\"123456789");
122 ok (_check($C,$x),0);
123 ok (_check($C,123),'123 is not a reference');