qrcode.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. var expect = require('chai').expect;
  2. var fs = require('fs');
  3. var QrCode = require('../dist/index.js');
  4. var ImageParser = require("image-parser");
  5. const Jimp = require("jimp");
  6. const expectedResult = {
  7. "result": 'Test',
  8. "points": [
  9. {
  10. "count": 2,
  11. "estimatedModuleSize": 8,
  12. "x": 36,
  13. "y": 148,
  14. },
  15. {
  16. "count": 2,
  17. "estimatedModuleSize": 8,
  18. "x": 36,
  19. "y": 36,
  20. },
  21. {
  22. "count": 2,
  23. "estimatedModuleSize": 8,
  24. "x": 148,
  25. "y": 36,
  26. }
  27. ]
  28. };
  29. function copy(input) {
  30. return JSON.parse(JSON.stringify(input));
  31. }
  32. it("should work with jimp", function(done) {
  33. var buffer = fs.readFileSync(__dirname + '/image.png');
  34. Jimp.read(buffer, function(err, image) {
  35. if (err) {
  36. return done(err);
  37. }
  38. var qr = new QrCode();
  39. qr.callback = function(err, result) {
  40. if (err) {
  41. return done(err);
  42. }
  43. expect(copy(result)).to.deep.equal(expectedResult);
  44. done();
  45. };
  46. qr.decode(image.bitmap);
  47. });
  48. });
  49. it("should work with a zxing qr code with jimp", function(done) {
  50. var buffer = fs.readFileSync(__dirname + '/image-zxing.png');
  51. Jimp.read(buffer, function(err, image) {
  52. if (err) {
  53. return done(err);
  54. }
  55. var qr = new QrCode();
  56. qr.callback = function(err, result) {
  57. if (err) {
  58. return done(err);
  59. }
  60. expect(copy(result)).to.deep.equal({
  61. "result": 'Test',
  62. "points": [
  63. {
  64. "count": 2,
  65. "estimatedModuleSize": 9,
  66. "x": 34.5,
  67. "y": 160.5,
  68. },
  69. {
  70. "count": 3,
  71. "estimatedModuleSize": 9,
  72. "x": 34.5,
  73. "y": 34.5,
  74. },
  75. {
  76. "count": 2,
  77. "estimatedModuleSize": 9.428571428571429,
  78. "x": 160.5,
  79. "y": 34.5,
  80. }
  81. ]
  82. });
  83. done();
  84. };
  85. qr.decode(image.bitmap);
  86. });
  87. });
  88. it('should work with basic image', function(done) {
  89. var buffer = fs.readFileSync(__dirname + '/image.png');
  90. var img = new ImageParser(buffer);
  91. img.parse(function(err) {
  92. if (err) {
  93. return done(err);
  94. }
  95. var qr = new QrCode();
  96. qr.callback = function(err, result) {
  97. if (err) {
  98. return done(err);
  99. }
  100. expect(copy(result)).to.deep.equal(expectedResult);
  101. done();
  102. };
  103. qr.decode({width: img.width(), height: img.height()}, img._imgBuffer);
  104. });
  105. });
  106. it('should work with imageData format', function(done) {
  107. var buffer = fs.readFileSync(__dirname + '/image.png');
  108. var img = new ImageParser(buffer);
  109. img.parse(function(err) {
  110. if (err) {
  111. return done(err);
  112. }
  113. var qr = new QrCode();
  114. qr.callback = function(err, result) {
  115. if (err) {
  116. return done(err);
  117. }
  118. expect(copy(result)).to.deep.equal({
  119. "result": 'Test',
  120. "points": [
  121. {
  122. "count": 2,
  123. "estimatedModuleSize": 8,
  124. "x": 36,
  125. "y": 148,
  126. },
  127. {
  128. "count": 2,
  129. "estimatedModuleSize": 8,
  130. "x": 36,
  131. "y": 36,
  132. },
  133. {
  134. "count": 2,
  135. "estimatedModuleSize": 8,
  136. "x": 148,
  137. "y": 36,
  138. }
  139. ]
  140. });
  141. done();
  142. };
  143. qr.decode({height: img.height(), width: img.width(), data: img._imgBuffer});
  144. });
  145. });