utils-test.js 2.9 KB

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