1 | 'use strict';
|
2 |
|
3 |
|
4 | var chai = require('chai');
|
5 | var should = chai.should();
|
6 | var expect = chai.expect;
|
7 |
|
8 | var BN = require('../../lib/index').BigNumber
|
9 |
|
10 |
|
11 |
|
12 | describe('BigNumber', function() {
|
13 |
|
14 | describe('New a big number', function() {
|
15 | it('should return 0x0', function() {
|
16 | let bn = new BN.BigNumber('0x')
|
17 | bn._hex.should.equal('0x0');
|
18 | });
|
19 |
|
20 | it('invalid BigNumber string value', function() {
|
21 | (function() {
|
22 | new BN.BigNumber('0xQWER')
|
23 | }.should.throw('invalid BigNumber string value'))
|
24 | });
|
25 |
|
26 | it('underflow', function() {
|
27 | (function() {
|
28 | new BN.BigNumber(1.1)
|
29 | }.should.throw('underflow'))
|
30 | });
|
31 |
|
32 | it('value is bignumber', function() {
|
33 | let bn = new BN.BigNumber(123)
|
34 | let bn1 = new BN.BigNumber(bn)
|
35 | bn1._hex.should.equal('0x7b');
|
36 | });
|
37 |
|
38 | it('invalid BigNumber value', function() {
|
39 | (function() {
|
40 | new BN.BigNumber([123,456])
|
41 | }.should.throw('invalid BigNumber value'))
|
42 | });
|
43 | });
|
44 |
|
45 | describe('calculate big number', function() {
|
46 | it('from twos', function() {
|
47 | let bn = new BN.BigNumber(11)
|
48 | bn.fromTwos(2)._hex.should.equal('-0x01');
|
49 | });
|
50 |
|
51 | it('add', function() {
|
52 | let bn1 = new BN.BigNumber(11)
|
53 | let bn2 = new BN.BigNumber(12)
|
54 | bn1.add(bn2)._hex.should.equal('0x17');
|
55 | });
|
56 |
|
57 | it('sub', function() {
|
58 | let bn1 = new BN.BigNumber(11)
|
59 | let bn2 = new BN.BigNumber(12)
|
60 | bn2.sub(bn1)._hex.should.equal('0x01');
|
61 | });
|
62 |
|
63 | it('div', function() {
|
64 | let bn1 = new BN.BigNumber(12)
|
65 | let bn2 = new BN.BigNumber(4)
|
66 | bn1.div(bn2)._hex.should.equal('0x03');
|
67 | });
|
68 |
|
69 | it('mul', function() {
|
70 | let bn1 = new BN.BigNumber(3)
|
71 | let bn2 = new BN.BigNumber(4)
|
72 | bn1.mul(bn2)._hex.should.equal('0x0c');
|
73 | });
|
74 |
|
75 | it('mod', function() {
|
76 | let bn1 = new BN.BigNumber(9)
|
77 | let bn2 = new BN.BigNumber(4)
|
78 | bn1.mod(bn2)._hex.should.equal('0x01');
|
79 | });
|
80 |
|
81 | it('pow', function() {
|
82 | let bn1 = new BN.BigNumber(2)
|
83 | let bn2 = new BN.BigNumber(3)
|
84 | bn1.pow(bn2)._hex.should.equal('0x08');
|
85 | });
|
86 |
|
87 | it('eq', function() {
|
88 | let bn1 = new BN.BigNumber(3)
|
89 | let bn2 = new BN.BigNumber(3)
|
90 | bn1.eq(bn2).should.equal(true);
|
91 | });
|
92 |
|
93 | it('lte', function() {
|
94 | let bn1 = new BN.BigNumber(3)
|
95 | let bn2 = new BN.BigNumber(4)
|
96 | bn1.lte(bn2).should.equal(true);
|
97 | });
|
98 |
|
99 | it('gte', function() {
|
100 | let bn1 = new BN.BigNumber(3)
|
101 | let bn2 = new BN.BigNumber(4)
|
102 | bn1.gte(bn2).should.equal(false);
|
103 | });
|
104 |
|
105 | it('isZero', function() {
|
106 | let bn1 = new BN.BigNumber(3)
|
107 | bn1.isZero().should.equal(false);
|
108 | });
|
109 |
|
110 | it('toString', function() {
|
111 | let bn1 = new BN.BigNumber(3)
|
112 | bn1.toString().should.equal('3');
|
113 | });
|
114 |
|
115 | });
|
116 | });
|