test-mem-db.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var run = require('./run.js');
  2. var bodec = require('bodec');
  3. var sha1 = require('git-sha1');
  4. var codec = require('../lib/object-codec.js');
  5. var repo = {};
  6. require('../mixins/mem-db.js')(repo);
  7. var blob = bodec.fromUnicode("Hello World\n");
  8. var blobHash = "557db03de997c86a4a028e1ebd3a1ceb225be238";
  9. run([
  10. function testSaveAs(end) {
  11. repo.saveAs("blob", blob, function (err, hash) {
  12. if (err) return end(err);
  13. if (hash !== blobHash) {
  14. console.log([hash, blobHash]);
  15. return end(new Error("Hash mismatch"));
  16. }
  17. end();
  18. });
  19. },
  20. function testLoadRaw(end) {
  21. repo.loadRaw(blobHash, function (err, bin) {
  22. if (err) return end(err);
  23. var obj = codec.deframe(bin, true);
  24. if (obj.type !== "blob") return err(new Error("Wrong type"));
  25. if (bodec.toUnicode(obj.body) !== bodec.toUnicode(blob)) {
  26. return err(new Error("Wrong body"));
  27. }
  28. end();
  29. });
  30. },
  31. function testLoadAs(end) {
  32. repo.loadAs("blob", blobHash, function (err, body) {
  33. if (err) return end(err);
  34. if (bodec.toUnicode(body) !== bodec.toUnicode(blob)) {
  35. return err(new Error("Wrong body"));
  36. }
  37. end();
  38. });
  39. },
  40. function testSaveRaw(end) {
  41. var newBody = bodec.fromUnicode("A new body\n");
  42. var bin = codec.frame({type:"blob",body:newBody});
  43. var hash = sha1(bin);
  44. repo.saveRaw(hash, bin, function (err) {
  45. if (err) return end(err);
  46. repo.loadAs("blob", hash, function (err, body) {
  47. if (err) return end(err);
  48. if (bodec.toUnicode(body) !== bodec.toUnicode(newBody)) {
  49. return end(new Error("Body mismatch"));
  50. }
  51. end();
  52. });
  53. });
  54. }
  55. ]);