test_large_numbers.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /**
  2. * Created by bmf on 03/28/16.
  3. */
  4. "use strict";
  5. var assert = require('assert');
  6. var sodium = require('../build/Release/sodium');
  7. var assert = require('assert');
  8. describe('LargeNumbers', function() {
  9. it('should increment a zero filled buffer to 3 after 3 calls', function(done) {
  10. var buf = Buffer.alloc(10);
  11. sodium.increment(buf,10);
  12. sodium.increment(buf,10);
  13. sodium.increment(buf,10);
  14. var zeros = 0;
  15. assert.equal(buf[0], 3);
  16. for(var i=1; i<buf.length; i++) {
  17. assert.equal(buf[i], 0);
  18. }
  19. done();
  20. });
  21. it('should add two buffers of the same size', function(done) {
  22. var buf1 = Buffer.allocUnsafe(10);
  23. var buf2 = Buffer.allocUnsafe(10);
  24. var buf3 = Buffer.alloc(10);
  25. sodium.randombytes_buf(buf1);
  26. buf1.copy(buf2);
  27. var j= sodium.randombytes_uniform(10000);
  28. for(var i = 0; i < j; i++) {
  29. sodium.increment(buf1);
  30. sodium.increment(buf3);
  31. }
  32. sodium.add(buf2, buf3, 10);
  33. assert(sodium.compare(buf1, buf2)==0);
  34. done();
  35. });
  36. it('should throw on buffers of different sizes', function(done) {
  37. var buf1 = Buffer.allocUnsafe(10);
  38. var buf2 = Buffer.allocUnsafe(100);
  39. assert.throws(function() {
  40. sodium.add(buf1, buf2);
  41. });
  42. done();
  43. });
  44. it('add should fail on param 1 ont being a buffer', function(done) {
  45. var buf = Buffer.allocUnsafe(10);
  46. assert.throws(function() {
  47. sodium.add("abc", buf);
  48. });
  49. done();
  50. });
  51. it('add should fail on param 2 ont being a buffer', function(done) {
  52. var buf = Buffer.allocUnsafe(10);
  53. assert.throws(function() {
  54. sodium.add(buf, "abc");
  55. });
  56. done();
  57. });
  58. it('compare should return true on equal buffers', function(done) {
  59. var buf1 = Buffer.allocUnsafe(10);
  60. var buf2 = Buffer.allocUnsafe(10);
  61. sodium.randombytes_buf(buf1);
  62. buf1.copy(buf2);
  63. assert(sodium.compare(buf1, buf2)==0);
  64. done();
  65. });
  66. it('compare should return not return 0 on different buffers', function(done) {
  67. var buf1 = Buffer.allocUnsafe(10);
  68. var buf2 = Buffer.allocUnsafe(10);
  69. sodium.randombytes_buf(buf1);
  70. sodium.randombytes_buf(buf2);
  71. assert(sodium.compare(buf1, buf2)!=0);
  72. done();
  73. });
  74. it('compare should throw on different size buffers', function(done) {
  75. var buf1 = Buffer.allocUnsafe(10);
  76. var buf2 = Buffer.allocUnsafe(100);
  77. sodium.randombytes_buf(buf1);
  78. sodium.randombytes_buf(buf2);
  79. assert.throws(function() {
  80. sodium.compare(buf1, buf2);
  81. });
  82. done();
  83. });
  84. it('is_zero test for 0', function(done) {
  85. var buf = Buffer.alloc(10);
  86. assert(sodium.is_zero(buf)==1);
  87. done();
  88. });
  89. it('is_zero test should be false for non zero buffers', function(done) {
  90. var buf = Buffer.allocUnsafe(10);
  91. sodium.randombytes_buf(buf);
  92. assert(sodium.is_zero(buf)==0);
  93. done();
  94. });
  95. });