Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80559 views
1
var assert = require('assert');
2
var BN = require('../').BN;
3
var fixtures = require('./fixtures');
4
5
describe('BN.js/Utils', function() {
6
describe('.toString()', function() {
7
describe('hex padding', function() {
8
it('should have length of 8 from leading 15', function() {
9
var a = new BN('ffb9602', 16);
10
var b = new Buffer(a.toString('hex', 2), 'hex');
11
assert.equal(a.toString('hex', 2).length, 8);
12
});
13
14
it('should have length of 8 from leading zero', function() {
15
var a = new BN('fb9604', 16);
16
var b = new Buffer(a.toString('hex', 8), 'hex');
17
assert.equal(a.toString('hex', 8).length, 8);
18
});
19
20
it('should have length of 8 from leading zeros', function() {
21
var a = new BN(0);
22
var b = new Buffer(a.toString('hex', 8), 'hex');
23
assert.equal(a.toString('hex', 8).length, 8);
24
});
25
26
it('should have length of 64 from leading 15', function() {
27
var a = new BN(
28
'ffb96ff654e61130ba8422f0debca77a0ea74ae5ea8bca9b54ab64aabf01003',
29
16);
30
var b = new Buffer(a.toString('hex', 2), 'hex');
31
assert.equal(a.toString('hex', 2).length, 64);
32
});
33
34
it('should have length of 64 from leading zero', function() {
35
var a = new BN(
36
'fb96ff654e61130ba8422f0debca77a0ea74ae5ea8bca9b54ab64aabf01003',
37
16);
38
var b = new Buffer(a.toString('hex', 64), 'hex');
39
assert.equal(a.toString('hex', 64).length, 64);
40
});
41
});
42
});
43
44
describe('.bitLength()', function() {
45
it('should return proper bitLength', function() {
46
assert.equal(new BN(0).bitLength(), 0);
47
assert.equal(new BN(0x1).bitLength(), 1);
48
assert.equal(new BN(0x2).bitLength(), 2);
49
assert.equal(new BN(0x3).bitLength(), 2);
50
assert.equal(new BN(0x4).bitLength(), 3);
51
assert.equal(new BN(0x8).bitLength(), 4);
52
assert.equal(new BN(0x10).bitLength(), 5);
53
assert.equal(new BN(0x100).bitLength(), 9);
54
assert.equal(new BN(0x123456).bitLength(), 21);
55
assert.equal(new BN('123456789', 16).bitLength(), 33);
56
assert.equal(new BN('8023456789', 16).bitLength(), 40);
57
});
58
});
59
60
describe('.zeroBits()', function() {
61
it('should return proper zeroBits', function() {
62
assert.equal(new BN(0).zeroBits(), 0);
63
assert.equal(new BN(0x1).zeroBits(), 0);
64
assert.equal(new BN(0x2).zeroBits(), 1);
65
assert.equal(new BN(0x3).zeroBits(), 0);
66
assert.equal(new BN(0x4).zeroBits(), 2);
67
assert.equal(new BN(0x8).zeroBits(), 3);
68
assert.equal(new BN(0x10).zeroBits(), 4);
69
assert.equal(new BN(0x100).zeroBits(), 8);
70
assert.equal(new BN(0x1000000).zeroBits(), 24);
71
assert.equal(new BN(0x123456).zeroBits(), 1);
72
});
73
});
74
75
describe('.toJSON', function() {
76
it('should return hex string', function() {
77
assert.equal(new BN(0x123).toJSON(), '123');
78
});
79
});
80
});
81
82