forked from kazuhikoarase/qrcode-generator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqrcode.js
More file actions
100 lines (87 loc) · 9.35 KB
/
Copy pathqrcode.js
File metadata and controls
100 lines (87 loc) · 9.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
var assert = require('assert');
var qrcode = require('../qrcode.js');
describe('QRCode', function(){
it('should exist', function(){
assert.ok(qrcode);
});
it('should be a callable function', function(){
assert.ok(qrcode instanceof Function);
});
it('should generate correct GIF image tag', function(){
var sourceText = 'http://www.example.com/ążśźęćńół';
var correctImgTag = '<img src="data:image/gif;base64,R0lGODdhSgBKAIAAAAAAAP///ywAAAAASgBKAAAC/4yPqcvtD6OctNqLs968+w+G4kiWZgKk6roa7ZEiccACco1TeE6r9997uXYsna0xmw0VLyXsyHBCpKijk9qEPh1UrrXYAy4Xu3FtLEmCr9pucP3NGofyN9peBZ7DE3W9Tqd15+fDlxZXiPVlltiGqDb3BpnHRzj4uNgnSHkjZCiZGbXpRVrlyQZINopE9Jc5CdtaeCj7asvIWEvimet4oqkYKDZiCSrMWtobmcW8esfki2exN4XY2cj7aZQtehxIGHwR+41dDg3tdogLCm7N+ZTOOom+irqZGk//DF/vqDiv7cEpTMW4CZxVYSC5gghpOTt46dg4PGxE5aNUkeItje3Drm3zh9DewIytPl7LuBCkHiImpbEjaAvlloTm+DVzJXNftZM89lAz5vLiOZs94YysqZNmtZ8/vQiFeJApmKUPu30qU6mhKola1V0t6g2ZxqcaAK4biraE2axW004LyeNs1loGHfIkGY3uVLV7Ge4rSayvu7WAHQIGGMvn4KqqdLGd2S5xKE2lit2dfIlswJVhU/5VSRmoyEbr9NbdKhqkq156l8GJCFQZ0aRWFcOWGtZ2aN2IN3LlvPv149Kg8UZqi5ElP+JvkyXH+ns4MFnR/+0F/vEw6YDQk//6Dj68+PHky5s/jz69+vULCgAAOw==" width="74" height="74"/>';
var qr = qrcode(-1, 'M');
qr.addData(unescape(encodeURI(sourceText)));
qr.make();
assert.strictEqual(qr.createImgTag(), correctImgTag);
});
it('should generate correct GIF image data', function(){
var sourceText = 'http://www.example.com/ążśźęćńół';
var correctImgData = 'R0lGODdhSgBKAIAAAAAAAP///ywAAAAASgBKAAAC/4yPqcvtD6OctNqLs968+w+G4kiWZgKk6roa7ZEiccACco1TeE6r9997uXYsna0xmw0VLyXsyHBCpKijk9qEPh1UrrXYAy4Xu3FtLEmCr9pucP3NGofyN9peBZ7DE3W9Tqd15+fDlxZXiPVlltiGqDb3BpnHRzj4uNgnSHkjZCiZGbXpRVrlyQZINopE9Jc5CdtaeCj7asvIWEvimet4oqkYKDZiCSrMWtobmcW8esfki2exN4XY2cj7aZQtehxIGHwR+41dDg3tdogLCm7N+ZTOOom+irqZGk//DF/vqDiv7cEpTMW4CZxVYSC5gghpOTt46dg4PGxE5aNUkeItje3Drm3zh9DewIytPl7LuBCkHiImpbEjaAvlloTm+DVzJXNftZM89lAz5vLiOZs94YysqZNmtZ8/vQiFeJApmKUPu30qU6mhKola1V0t6g2ZxqcaAK4biraE2axW004LyeNs1loGHfIkGY3uVLV7Ge4rSayvu7WAHQIGGMvn4KqqdLGd2S5xKE2lit2dfIlswJVhU/5VSRmoyEbr9NbdKhqkq156l8GJCFQZ0aRWFcOWGtZ2aN2IN3LlvPv149Kg8UZqi5ElP+JvkyXH+ns4MFnR/+0F/vEw6YDQk//6Dj68+PHky5s/jz69+vULCgAAOw==';
var qr = qrcode(-1, 'M');
qr.addData(unescape(encodeURI(sourceText)));
qr.make();
var data = Buffer.from(qr.createDataURL().replace('data:image/gif;base64,', ''), 'base64');
assert.strictEqual(data.toString('base64'), correctImgData);
});
it('should generate correct UTF8 text data', function(){
var sourceText = 'http://www.example.com/ążśźęćńół';
var correctTextData1 = [
'█████████████████████████████████',
'██ ▄▄▄▄▄ █ ▄█▀▄██ ▀▄ ▄██ ▄▄▄▄▄ ██',
'██ █ █ █▀ █▀▄█▀▀█▄▄ ▄█ █ █ ██',
'██ █▄▄▄█ ███ ▀ █▄▀▄▄▀ ▀█ █▄▄▄█ ██',
'██▄▄▄▄▄▄▄█ ▀▄█▄▀▄▀ █▄▀▄█▄▄▄▄▄▄▄██',
'██▄█ ▀▄▄▄█▄▄█▀█▀▀▄█▀▀▀█ ▀▀▄█▄ ██',
'██▀▀▄▀▄█▄█ ▄▄█▄ ▄█ ███ ▀█▀▄▄▀██',
'██ ▄▀█▄▀▄ ▄▀▄ █ ▄▀▀█▀██▀██▄▄▀▀██',
'██ █▀ ▄▄▀▀ ▀█ █▀▄ ▀█▄▀▄▄▄ ▄██',
'██▄██ ▄▄▄▄▄█ ▀▄▄ ▀▀▄▄▄█▄▄█▀ ███',
'██▄█▄██▄▄▄ █ █▄▄▀█▀███▄▀▄▄█▄ ████',
'███▄▄██▄▄▄ ▀▀▄█ █▀ █ ▄ ▄▄▄ ▀▀██',
'██ ▄▄▄▄▄ █ █ ▀█▄█ ▀ ▄ █▄█ ▄█ ▀██',
'██ █ █ █▀▄▄ ▄▀ ▀▄█ █ ▄▄ ▄ ██',
'██ █▄▄▄█ █▄█▄▀█ ▀ ▀ ██ █ █▀▄▀▄██',
'██▄▄▄▄▄▄▄█▄▄█▄█▄███▄▄▄▄████▄█▄███',
'▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀'].join('\n');
var correctTextData2 = [
'██████████████████████████████████████████████████████████████████',
'██████████████████████████████████████████████████████████████████',
'████ ██ ████ ████ ██ ████ ████',
'████ ██████████ ██ ████ ██████ ██ ██████ ██████████ ████',
'████ ██ ██ ████ ████ ████████ ██ ██ ██ ████',
'████ ██ ██ ██ ██ ████ ██████ ████ ██ ██ ████',
'████ ██ ██ ██████ ██ ██ ██ ██ ████ ██ ██ ████',
'████ ██████████ ██████ ████ ████ ██ ██████████ ████',
'████ ██ ██ ██ ██ ██ ██ ██ ██ ████',
'████████████████████ ██████ ██ ████ ██████████████████████',
'████ ██ ██ ██ ██████████ ██████████ ████ ██ ████',
'████████ ██████████████ ██ ████ ██ ██████ ████',
'████████ ██ ██ ██ ██ ██ ██████ ██████ ██████',
'████ ██ ████████ ████████ ████ ██████ ██ ████ ████',
'████ ████ ██ ██ ██ ██████████████████ ████████',
'████ ██ ████ ██ ██ ██ ██ ██ ██ ████ ████████ ████',
'████ ████ ████ ████ ████ ████ ██ ████',
'████ ██ ████ ██ ██ ██ ████ ██████ ██████',
'████ ████ ██ ██ ████ ██ ████ ██████',
'██████████ ████████████ ████ ██████████████ ██████',
'████ ██ ████ ██ ██ ████████████ ██ ██ ████████',
'████████████████████ ██ ██████ ██ ████████ ████████ ████████',
'██████ ████ ████ ██ ████ ██ ████████',
'████████████████████ ████ ██ ██ ██ ██████ ████',
'████ ██ ██ ████ ██ ██ ██ ██ ██ ██████',
'████ ██████████ ██ ██ ██████ ██ ██████ ████ ████',
'████ ██ ██ ████ ██ ██ ██ ██ ████',
'████ ██ ██ ██ ████ ██ ████ ██ ████ ██ ████',
'████ ██ ██ ██ ██ ████ ██ ██ ████ ██ ████ ██ ████',
'████ ██████████ ████████ ██ ████ ██ ██ ██ ██████',
'████ ██ ██ ██ ██████ ████████ ██ ██████',
'██████████████████████████████████████████████████████████████████',
'██████████████████████████████████████████████████████████████████',].join('\n');
var qr = qrcode(-1, 'M');
qr.addData(unescape(encodeURI(sourceText)));
qr.make();
assert.strictEqual(qr.createASCII(), correctTextData1, 'ASCII QRCode of size 1 is incorrect');
assert.strictEqual(qr.createASCII(2), correctTextData2, 'ASCII QRCode of size 2 is incorrect');
});
});