id.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. var hat = require('../');
  2. var assert = require('assert');
  3. function digits (bits, base) {
  4. return Math.ceil(
  5. Math.log(parseInt(Array(bits + 1).join('1'), 2)
  6. ) / Math.log(base));
  7. }
  8. exports.lengths = function () {
  9. for (var i = 0; i < 10; i++) {
  10. assert.equal(hat(4).length, 1);
  11. }
  12. for (var i = 0; i < 10; i++) {
  13. assert.equal(hat(3).length, 1);
  14. }
  15. (function () {
  16. var d = digits(32, 16);
  17. for (var i = 0; i < 10; i++) {
  18. assert.equal(hat(32, 16).length, d);
  19. assert.equal(hat(33, 16).length, d + 1);
  20. }
  21. })();
  22. };
  23. exports.range = function () {
  24. for (var base = 2; base < 32; base++) {
  25. for (var bits = 0; bits < 256; bits += base) {
  26. for (var k = 0; k < 10; k++) {
  27. var id = hat(bits, base);
  28. var iid = parseInt(id, base);
  29. assert.ok(iid >= 0);
  30. assert.ok(iid < Math.pow(2, bits));
  31. }
  32. }
  33. }
  34. };
  35. exports.big = function () {
  36. var id = hat(1024);
  37. assert.equal(id.length, 256);
  38. };
  39. exports.bigger = function () {
  40. var id = hat(2048);
  41. assert.equal(id.length, 512);
  42. };