1+ var assert = require ( 'assert' ) ;
2+ var qrcode = require ( '../qrcode.js' ) ;
3+
4+ describe ( 'QRCode' , function ( ) {
5+ it ( 'should exist' , function ( ) {
6+ assert . ok ( qrcode ) ;
7+ } ) ;
8+
9+ it ( 'should be a callable function' , function ( ) {
10+ assert . ok ( qrcode instanceof Function ) ;
11+ } ) ;
12+
13+ it ( 'should generate correct GIF image tag' , function ( ) {
14+ var sourceText = 'http://www.example.com/ążśźęćńół' ;
15+ 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"/>' ;
16+
17+ var qr = qrcode ( - 1 , 'M' ) ;
18+ qr . addData ( unescape ( encodeURI ( sourceText ) ) ) ;
19+ qr . make ( ) ;
20+
21+ assert . strictEqual ( qr . createImgTag ( ) , correctImgTag ) ;
22+ } ) ;
23+
24+ it ( 'should generate correct GIF image data' , function ( ) {
25+ var sourceText = 'http://www.example.com/ążśźęćńół' ;
26+ var correctImgData = 'R0lGODdhSgBKAIAAAAAAAP///ywAAAAASgBKAAAC/4yPqcvtD6OctNqLs968+w+G4kiWZgKk6roa7ZEiccACco1TeE6r9997uXYsna0xmw0VLyXsyHBCpKijk9qEPh1UrrXYAy4Xu3FtLEmCr9pucP3NGofyN9peBZ7DE3W9Tqd15+fDlxZXiPVlltiGqDb3BpnHRzj4uNgnSHkjZCiZGbXpRVrlyQZINopE9Jc5CdtaeCj7asvIWEvimet4oqkYKDZiCSrMWtobmcW8esfki2exN4XY2cj7aZQtehxIGHwR+41dDg3tdogLCm7N+ZTOOom+irqZGk//DF/vqDiv7cEpTMW4CZxVYSC5gghpOTt46dg4PGxE5aNUkeItje3Drm3zh9DewIytPl7LuBCkHiImpbEjaAvlloTm+DVzJXNftZM89lAz5vLiOZs94YysqZNmtZ8/vQiFeJApmKUPu30qU6mhKola1V0t6g2ZxqcaAK4biraE2axW004LyeNs1loGHfIkGY3uVLV7Ge4rSayvu7WAHQIGGMvn4KqqdLGd2S5xKE2lit2dfIlswJVhU/5VSRmoyEbr9NbdKhqkq156l8GJCFQZ0aRWFcOWGtZ2aN2IN3LlvPv149Kg8UZqi5ElP+JvkyXH+ns4MFnR/+0F/vEw6YDQk//6Dj68+PHky5s/jz69+vULCgAAOw==' ;
27+
28+ var qr = qrcode ( - 1 , 'M' ) ;
29+ qr . addData ( unescape ( encodeURI ( sourceText ) ) ) ;
30+ qr . make ( ) ;
31+
32+ var data = Buffer . from ( qr . createDataURL ( ) . replace ( 'data:image/gif;base64,' , '' ) , 'base64' ) ;
33+
34+ assert . strictEqual ( data . toString ( 'base64' ) , correctImgData ) ;
35+ } ) ;
36+
37+ it ( 'should generate correct UTF8 text data' , function ( ) {
38+ var sourceText = 'http://www.example.com/ążśźęćńół' ;
39+ var correctTextData1 = [
40+ '█████████████████████████████████' ,
41+ '██ ▄▄▄▄▄ █ ▄█▀▄██ ▀▄ ▄██ ▄▄▄▄▄ ██' ,
42+ '██ █ █ █▀ █▀▄█▀▀█▄▄ ▄█ █ █ ██' ,
43+ '██ █▄▄▄█ ███ ▀ █▄▀▄▄▀ ▀█ █▄▄▄█ ██' ,
44+ '██▄▄▄▄▄▄▄█ ▀▄█▄▀▄▀ █▄▀▄█▄▄▄▄▄▄▄██' ,
45+ '██▄█ ▀▄▄▄█▄▄█▀█▀▀▄█▀▀▀█ ▀▀▄█▄ ██' ,
46+ '██▀▀▄▀▄█▄█ ▄▄█▄ ▄█ ███ ▀█▀▄▄▀██' ,
47+ '██ ▄▀█▄▀▄ ▄▀▄ █ ▄▀▀█▀██▀██▄▄▀▀██' ,
48+ '██ █▀ ▄▄▀▀ ▀█ █▀▄ ▀█▄▀▄▄▄ ▄██' ,
49+ '██▄██ ▄▄▄▄▄█ ▀▄▄ ▀▀▄▄▄█▄▄█▀ ███' ,
50+ '██▄█▄██▄▄▄ █ █▄▄▀█▀███▄▀▄▄█▄ ████' ,
51+ '███▄▄██▄▄▄ ▀▀▄█ █▀ █ ▄ ▄▄▄ ▀▀██' ,
52+ '██ ▄▄▄▄▄ █ █ ▀█▄█ ▀ ▄ █▄█ ▄█ ▀██' ,
53+ '██ █ █ █▀▄▄ ▄▀ ▀▄█ █ ▄▄ ▄ ██' ,
54+ '██ █▄▄▄█ █▄█▄▀█ ▀ ▀ ██ █ █▀▄▀▄██' ,
55+ '██▄▄▄▄▄▄▄█▄▄█▄█▄███▄▄▄▄████▄█▄███' ,
56+ '▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀' ] . join ( '\n' ) ;
57+
58+ var correctTextData2 = [
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+ '██████████████████████████████████████████████████████████████████' , ] . join ( '\n' ) ;
92+
93+ var qr = qrcode ( - 1 , 'M' ) ;
94+ qr . addData ( unescape ( encodeURI ( sourceText ) ) ) ;
95+ qr . make ( ) ;
96+
97+ assert . strictEqual ( qr . createASCII ( ) , correctTextData1 , 'ASCII QRCode of size 1 is incorrect' ) ;
98+ assert . strictEqual ( qr . createASCII ( 2 ) , correctTextData2 , 'ASCII QRCode of size 2 is incorrect' ) ;
99+ } ) ;
100+ } ) ;
0 commit comments