rack.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var hat = require('../');
  2. var assert = require('assert');
  3. exports.rack = function () {
  4. var rack = hat.rack(4);
  5. var seen = {};
  6. for (var i = 0; i < 8; i++) {
  7. var id = rack();
  8. assert.ok(!seen[id], 'seen this id');
  9. seen[id] = true;
  10. assert.ok(id.match(/^[0-9a-f]$/));
  11. }
  12. assert.throws(function () {
  13. for (var i = 0; i < 10; i++) rack()
  14. });
  15. };
  16. exports.data = function () {
  17. var rack = hat.rack(64);
  18. var a = rack('a!');
  19. var b = rack("it's a b!")
  20. var c = rack([ 'c', 'c', 'c' ]);
  21. assert.equal(rack.get(a), 'a!');
  22. assert.equal(rack.get(b), "it's a b!");
  23. assert.deepEqual(rack.get(c), [ 'c', 'c', 'c' ]);
  24. assert.equal(rack.hats[a], 'a!');
  25. assert.equal(rack.hats[b], "it's a b!");
  26. assert.deepEqual(rack.hats[c], [ 'c', 'c', 'c' ]);
  27. rack.set(a, 'AAA');
  28. assert.equal(rack.get(a), 'AAA');
  29. };
  30. exports.expandBy = function () {
  31. var rack = hat.rack(4, 16, 4);
  32. var seen = {};
  33. for (var i = 0; i < 8; i++) {
  34. var id = rack();
  35. assert.ok(!seen[id], 'seen this id');
  36. seen[id] = true;
  37. assert.ok(id.match(/^[0-9a-f]$/));
  38. }
  39. for (var i = 0; i < 8; i++) {
  40. var id = rack();
  41. assert.ok(!seen[id], 'seen this id');
  42. seen[id] = true;
  43. assert.ok(id.match(/^[0-9a-f]{1,2}$/));
  44. }
  45. for (var i = 0; i < 8; i++) {
  46. var id = rack();
  47. assert.ok(!seen[id], 'seen this id');
  48. seen[id] = true;
  49. assert.ok(id.match(/^[0-9a-f]{2}$/));
  50. }
  51. };