From 028f92f9609457a8a4463bdae0f501f4a8dc13a5 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 21:11:45 +0100 Subject: [PATCH 1/7] travis --- .travis.yml | 8 ++++++-- tox.ini | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec20204..4d1937c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,15 @@ sudo: false language: python python: 3.5 env: + - TOX_ENV=py26 - TOX_ENV=py27 - - TOX_ENV=py33 - - TOX_ENV=py34 - TOX_ENV=py35 + - TOX_ENV=py36 - TOX_ENV=lint +matrix: + include: + - env: TOX_ENV=py36 + python: "3.6" install: pip install tox script: tox -e $TOX_ENV cache: pip diff --git a/tox.ini b/tox.ini index 0dba9de..01f1a4c 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{27,34,35}, lint +envlist = py{27,35,36}, lint [testenv] commands = python setup.py test From 4959936f876a16094fa7ef0ae18a017601d65015 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 21:26:22 +0100 Subject: [PATCH 2/7] upgrade BWIPP --- elaphe/postscriptbarcode/LICENSE | 2 +- elaphe/postscriptbarcode/barcode.ps | Bin 593367 -> 613385 bytes update.sh | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 update.sh diff --git a/elaphe/postscriptbarcode/LICENSE b/elaphe/postscriptbarcode/LICENSE index afc1d97..bb5853a 100644 --- a/elaphe/postscriptbarcode/LICENSE +++ b/elaphe/postscriptbarcode/LICENSE @@ -1,7 +1,7 @@ Barcode Writer in Pure PostScript http://bwipp.terryburton.co.uk -Copyright (c) 2004-2014 Terry Burton +Copyright (c) 2004-2017 Terry Burton Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated diff --git a/elaphe/postscriptbarcode/barcode.ps b/elaphe/postscriptbarcode/barcode.ps index cc036d2ccd8488c6691e231a1ace9567b2382d37..074f3b609bdad4f101e04b83febdb5a65a8f283c 100644 GIT binary patch delta 25331 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 diff --git a/update.sh b/update.sh old mode 100644 new mode 100755 index 91bdb10..c2943f5 --- a/update.sh +++ b/update.sh @@ -2,7 +2,7 @@ set -euo pipefail IFS=$'\n\t' -version='2017-04-04' +version='2017-07-10' curl -fSL https://github.com/bwipp/postscriptbarcode/releases/download/$version/postscriptbarcode-monolithic-package-$version.tgz -o psbc.tgz tar -zxC ./elaphe/postscriptbarcode/ -f psbc.tgz --strip=2 --no-anchored barcode.ps LICENSE README From e120c5f327f5a5639eaffa57d39da0aab4351cbe Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 22:02:31 +0100 Subject: [PATCH 3/7] fix code39 barcodes --- elaphe/code39.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elaphe/code39.py b/elaphe/code39.py index 6852b02..cfa1eeb 100644 --- a/elaphe/code39.py +++ b/elaphe/code39.py @@ -74,7 +74,7 @@ def _text_bbox(self, codestring): textmaxy = textyoffset + textsize textmaxx = 16*(len(codestring)+1)+0.6*textsize if hidestars: - textmaxx = 16, textmaxx-16 + textmaxx = textmaxx - 16 return [0, textyoffset, textmaxx, textmaxy] def build_params(self, codestring): From d52fa8877125613396c5e35ccf9b05bdd4916dd0 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 21:34:30 +0100 Subject: [PATCH 4/7] run render tests --- test/__init__.py | 4 ++++ test/render.py | 16 +++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/test/__init__.py b/test/__init__.py index 94f98a3..f7290a2 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,5 +1,6 @@ from unittest import TestSuite from doctest import DocTestSuite +from . import render module_names = [ 'elaphe', @@ -38,3 +39,6 @@ # doctests for module_name in module_names: suite.addTest(DocTestSuite(module_name)) + + +render.collect(suite) diff --git a/test/render.py b/test/render.py index bdcc2db..5f77224 100644 --- a/test/render.py +++ b/test/render.py @@ -6,7 +6,7 @@ from elaphe import barcode from os import makedirs from os.path import abspath, dirname, join -from StringIO import StringIO +from io import BytesIO from uu import encode as uuencode @@ -78,11 +78,11 @@ def runTest(self): else: # else, just write generated image diag = generated - sio_img = StringIO() + sio_img = BytesIO() diag.convert('L').save(sio_img, 'PNG') # reopen sio_img - sio_img = StringIO(sio_img.getvalue()) - sio_uu = StringIO() + sio_img = BytesIO(sio_img.getvalue()) + sio_uu = BytesIO() uuencode(sio_img, sio_uu, name='diag_%s' % img_filename) raise AssertionError( 'Image difference detected (%s)\n' @@ -112,10 +112,12 @@ def gen_test_images(symbology): generated.save(join(img_prefix, img_filename), 'PNG') -suite = TestSuite() +def collect(ts): + for symbology in symbologies: + ts.addTest(gen_render_test_case(symbology)) -for symbology in symbologies: - suite.addTest(gen_render_test_case(symbology)) + +suite = collect(TestSuite()) if __name__ == '__main__': From 52efa003aed2aea200b892bba362326b5687bbe0 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 21:35:23 +0100 Subject: [PATCH 5/7] write generated to expected --- test/img/auspost/001.png | Bin 600 -> 607 bytes test/img/azteccode/001.png | Bin 324 -> 310 bytes test/img/azteccode/002.png | Bin 404 -> 345 bytes test/img/azteccode/003.png | Bin 487 -> 486 bytes test/img/azteccode/004.png | Bin 228 -> 228 bytes test/img/code11/001.png | Bin 649 -> 650 bytes test/img/code39/001.png | Bin 642 -> 641 bytes test/img/code39/002.png | Bin 669 -> 668 bytes test/img/code39/003.png | Bin 604 -> 786 bytes test/img/code93/001.png | Bin 442 -> 438 bytes test/img/datamatrix/001.png | Bin 320 -> 297 bytes test/img/datamatrix/002.png | Bin 320 -> 297 bytes test/img/datamatrix/003.png | Bin 1250 -> 1232 bytes test/img/maxicode/001.png | Bin 1711 -> 1708 bytes test/img/maxicode/002.png | Bin 1711 -> 1708 bytes test/img/maxicode/003.png | Bin 1863 -> 1861 bytes test/img/maxicode/004.png | Bin 1882 -> 1877 bytes test/img/maxicode/005.png | Bin 1936 -> 2526 bytes test/img/msi/001.png | Bin 686 -> 685 bytes test/img/msi/002.png | Bin 719 -> 720 bytes test/img/msi/003.png | Bin 704 -> 703 bytes test/img/onecode/002.png | Bin 829 -> 823 bytes test/img/pdf417/001.png | Bin 372 -> 349 bytes test/img/pdf417/002.png | Bin 616 -> 609 bytes test/img/pdf417/003.png | Bin 366 -> 312 bytes test/img/pdf417/004.png | Bin 1540 -> 1425 bytes test/img/rationalizedCodabar/001.png | Bin 786 -> 786 bytes 27 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/img/auspost/001.png b/test/img/auspost/001.png index fe0cc509565040edde2226cd3d205c95f0bf5f24..761a0fcb089e4a9a3773a3700fa4782769b43e7d 100644 GIT binary patch delta 582 zcmcb?a-U^_O1+w=i(^Q|oVT-YmmN{ya9ybV|NrSPik{rh8m4dAe2C}wLP<`oszrh6 zr(9I79B?W6=UTo%-h-vG*=L_F2kR6oslW?rA+KZ{9qTIU7V$pHwp#GWaZ1ff&7VQR zpO!9r;_Z8K`m9O%rmFE-+aBM#yOKTHQ@%cakBh*mgq4ezbHzs2m$UD?@clE`CD7i}M=zzZYoR(jjBQ~;v3O3U0E9JW#ysZfIP&PNBDNi;c9Q=kI+?%c>WA$ZPrY|IDfK z(8pP(_F2N0YyK+nu*vUIEs>mbp#F-k70cf9cgz0>N66Lg)~R?WbTwgfiDg`i^IXFh z*NW23Tpylo`BQaG-G6W94zqVT8}7f`;NHNItoADOcbw0u=Ox_i-#g|kzka@DN&0U2 zLZ8Ie{1bbZa<85rcc$z{jM{@Aid?OCZdp87n4H%sm;C1WE3wsFFJ`*E`rz%}z4^GE zy=HNv=KIq#Z~E`DG~OvQi}S=1fA1YTv+jSBH(hYj?b#L<%SD&xeHC61{(*P$cLpQ% Skoc1fK;Y@>=d#Wzp$P!4-Xiq? delta 575 zcmcc5a)V`pO1-?Ni(^Q|oVT;?RvlL0XiM~e_kY?=$4R_jnd>j5E_`Ymp~mRCKWmY$ z@WcRC;gdhb?>5#gcyPqZaobr>)+<)CCSFz#c`f7TT2@uI(C<;U)xsx^OKKK+{&brB zsa5SMx9=(OSyS{)G~+Y2J-&5!rFFEYbanimmdU3Q)-GPo6&qb%&%WgJH zttBt^)d^Tl=D#bHwM@mJzI1h&XTPW?X`lXS{rx25rK z&G2-!vkPZ7DAYzBx*GbksUSznqLi`k#g_EHEHC)>G1mG2Q+&4OyEFq3c)I$ztaD0e F0sw1{7#jcp diff --git a/test/img/azteccode/001.png b/test/img/azteccode/001.png index fad5d301ec8cc2ca1568735136e58b8330770c18..807eb1e68028188c9828e7b969eb00621e57cf29 100644 GIT binary patch delta 284 zcmV+%0ptF}0=5E>BYyz>Nkl`#Z~Mt@r!8(&_SHF@UoqyLFL z;*J+)Zk~DAfqAcbd)Bk@!p!H)JJV0Z&gF$!n`gVcnkFe-`+xDm%stN{e!QF;W_){% zRdzkwTQ_5ga#80UFU&g5PI4`>^TMp_&jwcBp6cj@{aN?=E|I8qim&FF7iLYbF&Pgh zU)rB_V7(97TIt<4%U8x5tXocYd-Lg?D1BwT!KS)t`P+%d@kPBxc%DV|0gewZ%$oNz iz~6r-_tDGh<`ow$9Y>*pYBcu%0000lE4BYy!4NklFG3>=sK|1Z0jrle!yb|J!m&83=ZaE3gL z4X1Pf&5d!+ZHz$IoW2A2pip#;HC7mR%oUuTze`T0YpemIk7Z+EB-yXgg}IKi&Ob>9YV*mgE diff --git a/test/img/azteccode/002.png b/test/img/azteccode/002.png index cef1f5de1517fc58c2992683b75890dad281ea9e..e8e7ca842f2df12b9bfbe686a26223301b6eec69 100644 GIT binary patch delta 318 zcmV-E0m1&11K9$QB!3`DL_t(|ob8y=3d1l6MQ=y`|Ch6uI;_#e6%+)|%evJ1a4P8~ z*F+qjz~0@wn|JeW-pwCe05I>1DR10NwkB&YQNyXLCA9gV3(Y%Um+)Ha*}7Wd=Nwqw z^8fN0Mr}KH@tbqaFTY3YJNJ^hT4Lwia>r*^n_+EDQddj7bARod=)rm)L|rYpbAIy3 zYpLF%u9n#SeCJo2`6+%oEB?)r6(v??@7(g5aW2{KHFEAbb+zO<_sqIyov5oNFP~4W z-cLDZ_dTtvCDyr?yNS~r^Zc$+S4&P-d@MR2?tK1=0jzmXW)3CfT%Qsf<6jt*@58_2B(thIB&OpX^2M^loJr+9i#xc#8^9UMEc5?z zz0!3)W_`S+)dB9FP#IQVL5Wiy4>)6)WnS~Q`n8;h=QY4Dz%3U`C^%8&Uj_9akg)%@5>j|@GWzfz XxwLV}uY;}X00000NkvXXu0mjftL4h~ diff --git a/test/img/azteccode/003.png b/test/img/azteccode/003.png index 02dce3ea9fc6b231412dc59bb23ce53c0342f170..aea84da6aaadf49f3ebcc86e1a8ddc287e677e89 100644 GIT binary patch delta 460 zcmV;-0W<#R1LgyeB!8_*L_t(|ob6i6Zp0uA9IE~QUrrBQcO5!ok}ZoRi@78*hDc)> zKcF4>K?86+p9cS}^q5W$8~+mHA3@!pHRIg#&Fs{pw;_8sJ(Jg^alOrev;QdjF*`u$ zdYOIKrE%%c9`?faHRWGyA64+{)}?W+pE05G6aTHAOwUl4#(%uM5g6wh%FjlAx8vC~ zG$7vZBA=5BiurYE%*h))uEr__m7CP1F(;lyIr^Q&qS#lL#`SsQs4l*nA1c(Pajnga z>!=^%#~GMSnXE32Yi)KXZbkhNCU0&|LuDG*`&ra;>cM&>AhLt3S(nC~J_w-e;~vqt zx3$;XImk5p=6@jm35@Gw1(iDjm1$gWv#77w(ZFl*N@IUuPzqZye^G7J>ru9|LZxjp7V}p(;)8_ME;`AZ+bl&+d0To z{Bfnxxr~xUcSj6$Y0T||0OJ@os^gSx>(ZFhZ+xdlV@2m=tmkZ~OJjb&adhVqM0Vxg zV_h2a^2X8qL?&lYwO(Bs^UkU7o>518q{ptQr{Wu07meE;g$yGA00009Ojc*i+QSrR@CGz|m@_txTrrUW#tw*s1-`{~7nQ2^KGu8!bg~7V>;#q@v zXU?P z0RJ9bBhp(`)4FzfY22r?`cc*4$^Ba0;qubBwq~ja_3m8;PhVc$^3u3(4l?Q&BhMe@ z$xGv&v$6IYJ%6wGw6~r6*;ITy2rza>>uFK#x953j+^4f>wuoSzp=y8n*))9Q@MPAj z(DN+E>rca_=8cRevk;3{dGgY@-s{(3FaPW8(ej+LaT<#93?s9AHB;>E$xGv&8S&_E zECw}?jQ*E!bT$o**9ZK*=6TBA+VLRM5&Fj7EYVFyIYv%Dn~K631LFE|y`nRd*Ync2 z|4yxH=hZWsSF$Ga(zs`?ui*XPu{SRP+J1IsS5xr^5I&UWooa)700000NkvXXu0mjf D(oOnS diff --git a/test/img/azteccode/004.png b/test/img/azteccode/004.png index 5baaa878478c0feb6767e277bd481eb81f5b0321..560645eee61403e43196dd519581a75e38305a79 100644 GIT binary patch delta 192 zcmV;x06+ia0ptOYEPs~44uCKSLyOt}|MEOFvX0Gzn#p=`Acnla5UXfq0IJwj75l&g zt^3%>M^LVl&N86?Z&BHMo2)Z7uN~&LI-+`ezki>ZS@)7@FgY&nq|D`R*ZM5;4|+S= uvqrOgm)@S;VV)szS(!(@9o_Lw_OKJM4=i>kQTP%70000R{vm delta 192 zcmV;x06+ia0ptOYEPqx}4uvoXV=vzS%J}nGNH=hai&*<3Xb34~bxmbN6A^{nL;vr7 zliFp}6?Z!7l4uTFJHLRl0r^In>)p=9oV~`6b*?KuP}kXB8*nbHoc*p^JkwkuCibvF zXG7-OTRIo(9Gz$MFM*tub9R2CZ#D~7&K987D?ZN3`D%Y75IK8T|3CL+5yZRQvU?_a uH|C_AhuzM6T;v;fPrug~N6#&t>xxf?GADkNsRpV50000K#@%0My6&IzwsXh%tNi=Vv$}q0gp)x57m@I2k?>}J z0G9P%SMVQck*ebm{R>-KQS_ZkzzvUmc&`8IoUtc-_n7wev$1}E%hT*D2*-k!W3!x!9`^N_%sy;A1H4?g$GSG- z3kbvgt&i6A+j70{cxOrX4S8|1eQ)aeJi^IUw>S5E^?s#wJURDjBYhg-X~X+K?Bgtd zyE6<3>ywrFu#D+Z|2^ZCb@yXZbw-lRwxa^8KJ$H(`d(3abh8!1Z@9P>gzuR`; z>GgGdrJY`-r`hwk!xLk;+hf>aYI<$H`fYvz0t2Kt5vNMl00000NkvXXu0mjf56|KC delta 404 zcmV;F0c-w>1&IZaBu`LDL_t(|obA@pa+@#^K+!{||NqPMA;~zvf^pJJ`*1bmu@MWq z97{qAs|BoJv3~lz^*_G1zaR12xaaqo?)!1ww(r<~m4E-aSJyAK5R(xBN0IPok?=Nu zz_R}93jTxENWkx@bHTbfK8%;eF6N_e3cVY*&uR$VN1a`{ZV!iik2WDJtIzXfu`XlC zelD$#jMr_dXMmn^>}nhP_Qy}_x-lKrmzIqK*xglUHW+Vq{8Q$>yXOal^F*I+d3t95 z%r^~QTA;6k=lZX%8P|lLZqvNJ*VZ3@d7FI);aJdeTr8)ehk1P_vkzO(051pbv93+~ z2Ey=s>#cG9K3t!#cvI3L#~aL*!jrnbj&O3z$E#vyACg|1<58PO$}Q{VQhMBnON*R%Pd_7|QhPO9FIH)h$aN(&9`on^Xe)xJM<|F)n1xq9dQ=QVwE zZ@&Kd>-@2@?E3Pb<>&i~zdUb^!Ruej7XRXQ#U!3tH7mRM_>V`wDy1Xz?B#!d zUsPP&{`%v;e|@(vzm@y&Ke3$IdR_dz`}f^L&sP3^S$>aY-OkDu-TYdHw|`|rLz8P8 z>etF30v* zd~NrhPkgnBzlGHw)U{_HyvToFJ@%dPxtRLOpTXjNtKLodHhPO$}Q{VQhMBnON*R%Pd_7|QhPAbuhHwxLTN(&9`on^Xe)xJOV|8742bM?;qV!Pw# z)_nc*@BFc{@BiL?dOu74>uFC0-36lWJkHABnH$noU-%+9m2{ zf9I9_bCzcr(=(m-9=|UyKb8Ns{;d2X@0)x2w)jTNSHBo--hH3Wo-i-#g6IwX4Rby@$F;=#uWh({ zv#MwRFYQmK@?UVDo^QeUU3ML-yM4|4lAY%*ivK>nJ%3k0Na^w|^`W(YeG4}K`RBXi ZF~8j72D2;oQ(8fZ%hT1*Wt~$(69D3K2-E-o diff --git a/test/img/code39/002.png b/test/img/code39/002.png index b9082fcf82e3607fe0e903ec4b1a43adaaaad8ac..3e5239c66c136c505a667a3e10e7174fb2c958a5 100644 GIT binary patch delta 365 zcmV-z0h0cm1)K$tBvE5YL_t(|obA`aZo)7W1<`Ai|NrIJMM5bReq$vW|*J7t(>0JXqK>#&xZHgYtM!w>gli-SEw}i zc&xm;fzI}O>G=$mq~vxKB$rN~ z@9)t4-;z}AKmE$u4R*|P+WViNrf`3I|J!lycmKOz=r?_O7PfA8|0{3O@5WoN+Lu_3 z^c(of2H1}IKe>TwsZm$x`U0kx_>vEb-}?gRK=kH&AHVu8cI7?3pZ?Oy7Ix54V15Im zA3hE`y~?q2K3)Fw|JbE6^wlK1rW@hJFBQ0+TdLQ>6_*00000 LNkvXXu0mjfmAc5C delta 366 zcmV-!0g?Wk1)T+uBvNEaL_t(|obA`!Zo)7W1<`Gk|NrIF2SOsfmy?s5#?ss&VlIR`#65~DR$-=-w%IkW(zxLFEC%g z=nwBF9iHV_xt?x+_;2jeyhqZ#3;KTr&VQ1I;psn(v44_2_6q#~YXXxrI7HwLIsgCw M07*qoM6N<$f(L8CbpQYW diff --git a/test/img/code39/003.png b/test/img/code39/003.png index d422912310d51f546ea1f87e6eb050c600171c06..543a037f7bed9903578c149fc855a13d4628c13b 100644 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0y~yU{nCI=W#FrN!c)mGzJEyo1QL?Ar*7p-nzKzmV=1H z#U)?<*IU*K99gDyujE@s%35{7Dz%=?zFOt6(^4a+<=&pQf9>n4+W((^UDJO5|Ns8l zI@`tT9xl(eo&U4u+{RjqZPzxI#?Oy@f6_mFpV9N5uamF;thpP{JwZ^Sg@sMA(a|G8 zKxmXXP~ot!^!B#$c;*`2as!UP^Y%a4wQc*^s(+qqU+=0;|DktR@1gRJ8R9oezi-do zU3>Seyy>6&i!BR&EdF^o{AO>}rWc00-c78W;U~K11-v;`2s(Yjv0BE~uz`7JKi5GJC$s+Iz-zTSZyEX+E2CB0K!B zykPlxZuQz43BQE-kG{P)AGt0g=fRfu58V6uAJ3?pEZKO~pS%Cr{J-s+g6)&$)_!)M zS;D^i_JJGBTV{vNKUXZfVE63%vHy3PshgH6m&t#=v2?dR>#x53Pdv=)&EsRk>lrSs WGV|d$6wwY$>kOW*elF{r5}E*@sT(-} literal 604 zcmeAS@N?(olHy`uVBq!ia0y~yU{nCI=WzfDhVAhkZy6Yvls#P>Ln`LHy?#4O+EB#d z;^ImF|37`{EPRP2I{UV#+0PrF(dv`m#ai9L>yqt$Kj^EYx%lTe= z>h8?v$KJp9xc}ekExYxOC;RU<_nj58cpT|3%>K*5NM}JdYgzb*;<s@1Q;Gl zp8j6{^drNIe~hxOr=7oRN;3UUbynS;;^OM&dhFV_jM=V7>ekrFAN^-B>!wBK^S7q! zmc_5$e{{dMkmn$Rny>$v*59$ev-JCB=Fi`1)1CYO|9ZoAxMQNxqD|JtvqOH@?D+OE ze&O9UNfp{x_m=Ga!L^5fc5?b;nd|Yrad$q*-}5g0+vdM(A8Xi>$32;o-?3H}&!6Cz z|Ni-@moK;e^1QUCb*f=*?%mn~|4CV4Yp<`nzi03AqjEcrb(!2ha=fJ`+E0D|FVWq1 zmd0L)vzfkn;?rHzRV-dV$#DBJ|IiO-hW&e!|L82|K3~gl&@|Y|d}jFpP=t88`njxg HN@xNAQ7Wq@ literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^lYn?02asU+bBRZjfq}8n)5S5QV$Rz;-bKv@0t^>t zPI+Jd^yDD{WjBZ2PC;=c>pOnDkkn3dcMC}gNwKNUvpueqbTiyOdSlMf|QviIX2 z=X^2!9bOYN$zw3V$m_@d6w6mkmvgti^|pF%-{;_3UHI=p6jgObNteY;^ z-(eTF@ppl#jMe-awm3HP-+gXH_WyHMoG;wfRKIiDt3S;0CI9SAmDi?knO&lLqPx_| zD(2qzsc+90f1SIej$3>2-CMhUJ$k1S8h-Zqy8SWtayLn@GgSWSx~Ff#aewQdchj$Z z(bH{ud$ia}dS;%5%E3tXYU89oV&C|ge!Q0b{eDyIj_WfOxb_hM@ak;}D5 zT?Wp@nD85K={yef#pfZ+4cG*=W%EuJPkFsXQzz;?oe{h zUe;h9vkM|<9lpWNH@kKeTfgKy9ojw1_=+&G4mZB+jXghUUw;OmIQ&djc)hpPqvf%F z$+;ZL3r~OT%M`ob#`9&{SF?5C4khP$3eyz}?t97x)Nbwh7;y%)4rLJizhOjs@%2l- zhQr98wdR;M>zADCDXd5Qrr+uFaEs_p7u{VZ)*D%PDHLkV1lafhn)Zb delta 294 zcmV+>0onek0>A>0BYy!0Nkl#3E`Nu-5oyomHXl|Wa!x&r z`fu|&9Xgv?hrRmetk<{eL(ZLT+Qv7tjmFf6eBF$#0dC*T+4Ujk)kDqQ=$_|#N{gMe z9|9i64g5Osi|J;L(Z><&Z61T&EWMRU-R$F_2G!$`~Ts-r?3`X sj|Ta4J+Tfyx*sodaO9s@hqwK1PYP{dmvX4x{{R3007*qoM6N<$g4np2YXATM diff --git a/test/img/datamatrix/002.png b/test/img/datamatrix/002.png index c0b5cd8084de6a4c37c8dfdebc6374834717ebdf..035d02511cc7d1b89373aa4731b4fa5e493d57e4 100644 GIT binary patch delta 271 zcmV+q0r3970;vL!BYyz!NklWfOxb_hM@ak;}D5 zT?Wp@nD85K={yef#pfZ+4cG*=W%EuJPkFsXQzz;?oe{h zUe;h9vkM|<9lpWNH@kKeTfgKy9ojw1_=+&G4mZB+jXghUUw;OmIQ&djc)hpPqvf%F z$+;ZL3r~OT%M`ob#`9&{SF?5C4khP$3eyz}?t97x)Nbwh7;y%)4rLJizhOjs@%2l- zhQr98wdR;M>zADCDXd5Qrr+uFaEs_p7u{VZ)*D%PDHLkV1lafhn)Zb delta 294 zcmV+>0onek0>A>0BYy!0Nkl#3E`Nu-5oyomHXl|Wa!x&r z`fu|&9Xgv?hrRmetk<{eL(ZLT+Qv7tjmFf6eBF$#0dC*T+4Ujk)kDqQ=$_|#N{gMe z9|9i64g5Osi|J;L(Z><&Z61T&EWMRU-R$F_2G!$`~Ts-r?3`X sj|Ta4J+Tfyx*sodaO9s@hqwK1PYP{dmvX4x{{R3007*qoM6N<$g4np2YXATM diff --git a/test/img/datamatrix/003.png b/test/img/datamatrix/003.png index 25e82324c38b0e5b9a5494cec9fc6b1a79f3ec76..7fca2506b4f8b31ffd7ddfa6fd6aa0e7e52dde74 100644 GIT binary patch delta 1212 zcmXApeN@s{9L6y;w9U}D)j5{dveFq2ooN#cOH7Z;V>>5bLP<8Kc<(AZXjg(Fh%oqB36Y-}m0<^E}_@UZvZ(+l}2oQ+&+f zq>`2etgvx9*cD&;-eMsF2%i13$w2Eo+)q2GQSV~-4@RX!d=ZdW6oa#`22@3L2mWK`-huT$XPz^{=29a+ zZ0YbXP{(3m^aV4Fai%S5sW>oVG7V$*G+M2RV3TN*Jtt6CmrViChDiaBXYlr*o+%eC zmPa9XAW%^(NG=CF3v`!Vw~PE+GSe4Iua5qm(^(5mQdbsj<~eEIuzLPv!9An$>@gES zN?z~tdm?^~b(r^r(oQiT2BtnC(O+?GtaT!1(P6zg#W;;_WX9pyh-l;2mccP@uRTe* z_uJXkdJ5}8$}srkj=;Zhc2pHT;*GYY?5;u{ESqRP_QbddPH7q&acCTOKNJQBlO$t! z5(rSoNfC2XGa@o&V@#%Zuy3WgupdYrByFcpf>`l)e(JEz1Uv%9koO9SE8TjR`N;OM zW?16)ksmf%vtoPoA_^MB9fWAb+IuBv*hO+T%|@_smA-NrMmCrvY1g=267NvJZ~|^48C&XT~k?B=sT_${<0WwVQHu|72C$bA2gtAO0mE_qua- zcVRz@#q+oXE{&mcvZCsX?3e9BL$*BJOE>RC&QG}@!d~fGyfD+5 zj_nECk^AWHpOs=xRteDJ+(DX>dLZ*4RjvS_*{Jb%Xbvbxn~YsJ9hc471PAPAptyUB zCN{^@+`Rfir)Cz;OYKN}T`Y5;m`HC98eMs?2QS&4#ZXcoW*&6%hL#lJ!TYxeuHFO@ zJe6r!TMV(@Ua1C0P%$)z^^Z^4vP(T3$_?plfL+(V3V22Z45OB>(^b literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^2SAtuNHCOdH@?llz_QZQ#WAE}&fD0NMNbVljs*Yw zAMdB9ES^=~e2;VTh3Vru#M|znq@G`u^#yH~*Zr z(EE}4cZdAG`@eGa8xt2uZI@b%#Wj+f@AU>+HGQG5asXF#%1@i}$#D|Dx@=UpH?aFkJS0p4cn9&5qfA)to%c zS8s%P-~C^wqmuAvU*8*-XUUaOZ{}>9e!w80S641V_Ep{S-`1~_%UtHJKlA@)+_ke1 zm-O$M!2W7SSMSX8!ap6wY*tsayfrU-z?*UYfUNNPwywtBFZwGYX58#}5xMqgUH>;B z3AR;*w;89+wm;c9>*MDKzeC@doL1ksxvBV;cY?%RUutDRHVZ$1{b|N29X z{LWueSEVMHWgFiDYf=6acBtq2o}MoY=Ox!RJaxZndFs`rI!G8V_{i|tdQ+64s@F3& z(}s?|PY1!yW$R^M^v7q)^Do7P%&Go2ZXQnmb;zu8Vfg}E=IFT*KOaTf8K34%-Ff+h zoy)#!SJ>}0eB;TfcW#Ub=2Is$t(Bwzmcv?|n~8Lhi9~rlhM`$?vG2BJ8>a z9PQTnDaXEAZsx7CRq9@8dv}HG+}U8yE53F3QtK2Z?oi)(F&hxAVo*LWle7~{(tNU}US%V!Qag z(wQB-i6)z+3@_z_WlYrU&U!!E94~!!+n*hme&*bDf_U20$iAbzYT0k@GwZF+E>GKP z@*m=bZU5V!T{&)l^}Tk)<`BL_t(|oZVd6cC9c7g|qtqzs!BmBn+EK)Si`I9xNFkXtoTo zEejI~F_91=G%%M)X-IUA$#DI`LkcazU|@)>n8jTp=Q@2B6n~Glw~C2~`^C}dV=LjN zI0Z;mfw-gHQiIF^%m4rx47AYW=9qEGHKjjCw`BK(0WA}Wlz-%!lk@G`7FYMSUQs~- z7rC<;HHt@!l9P%F!e(aUr0bb;L_|McCB(k!L!&`~X_g<<;I_rphU9mU{38|6HzS@% zlrhgjJP(=Q<&NfOIU)Id+SrS3NUXx^LKyu$?zn7+DxzI?@I!>Nv_~90P3z+j(NN<8-`{&cd$@>+~jW3wz%4in0g%Kc#31V zuZ3nJBH1lE58u8ancDfQ-0a|HxQuT`--M$EW>9&(PAl>Gux?viZAg6w7tzZ7?1uFL z8^EpfLz;11lg7ex!oAuVk)5Y(6e3+pU27KlQtiALxqtV>)uL7T1`;dGm1y$()@tYC zdIXgEb>SLKcr7|FTeU<3`5WV^S`(KklTE*;_<52$j~F}c7M>po;|0qakA&A~va=lo zE?Waeh(y38lbvfe>fgv2+%tHA9$Uq}@rGsXOy(kJ0u#h{80u=Zl|BAmt;V$!F<9l% z6KsMCDu0Q9(6b$MWw^$0vWGoml0V$#EcZpF77SJxV1*GC9cGWK-<+%cuy zluOGF#SRo^ZHHwJ21%koF2ny)?QE>lS!aT;n4jS8Fh%a-%7>NFFT>{hv`{+-5(1$c zN*-Ww6H$;hKdTjPvqm8VTWdFq!}x5Cd$lt#s(-yQV~%-Ufs%Y%o@IUNJ(SVaw9n(w z72UQ9)&epQL}e<}&MHowu`>)0Z1k;@WIHRR@Otem!vvQ?>V_V*cUm!Oxpr0%ibg%( zx>NlPT;(2WDCWhRb#!f2@kvZ^?qgEQwfU-iK_RmV0c5ipLV)rPVj7k$H@qmk365O2 zFMmHJnJU>Dfcvwxvm(?de((xg4{PTW95%=a#E-6B0nIaYUO@tAi$ zLzklmrRf@xyNH|4sIZ4|pIkpuHFZ@abY}<8CECW>?P6q9H2I1iob`>5sR8#7fPYRz zC9BdKR3}301|AY;C(R+nB>m<|9K=R}z)UVDY@8ZRa?zkR4rF#=_&bjaRO$VH{B6SB zCMQIr@WJ8`KmrYp~;>zl~6?cm<(U2U|{#&N7k2O9X2!0 z5d<=jz_D{FCN}Sv z^aZ9}{ncTWLxIcnig{g1>+-#JZsAikZHc1d_*g1Upq%H`gf`B3Z59vYLatXaD=m>S z|2!t|>#uesw!18ZVMY^NnSXF=Lb#f!RzT?YxPrD$z2iLVdlH{}3!Z)yy<na#7Tuy6H~PY#4m6d$$z&X!bBvB7JI`1(v1@v8gMWyL{!?825&>L+ z!g!pPBq`ejS>C^~qFIXPyN!eIVF@aRvwtAs2QqsGUX6ewYS?5Ql9p z*p`KfgqTPO0bQ8SNTD;j#N?#@!8!{q!r+2VSuu!Yo^*U{$10*-ckn}mv$RJNJ(O66N+Xk& zV(c@iWio}2cYnTyRI=EZSKHxJqST8LWfHSKFB^ttI(M*8ecY68Vq0Eq2Bsbdc|65& z($_*W5s~Z`oz=H*2v<9QRhk{#sLS|f^i3pcWCoSj>sX1;hjrWXYD4rLTx2Wvvm3St zY=F1Y4{7wcCXI#XfP1wwf*)sW6e3$nU27KlQtiALxqtWM)uL7T1`-?2l`#4K)@tYC zdIXflb>SLq@>+CWwrUB={Ec~4t%=LX=BDpc;yB5j#~3^P7M?E&#}7Q$c_h3>n>*V< z;Ib`Ygh&K@WOL`5o%(lj27P+o!DFj9%5Rv~&SWlvCNM!_hl8Lmu*cu4)wq@-4pv3> z3^qXpm48IwslT$1v$*A_*3KbBk9gIV7W1R^JuK)}tYXyg%l9{8(5$0W&?FH^?BZZZ z%Z>qo6n62*WgZ?0NfgLs_+P4>omDpL^ycQ?i*ffbMDFq`h867>vyHd0P&*G00-+nu zJfduJHHIPBTEAI5T%WCRuXYATwSPxO#|(ieAm5f}Uer8?qFqha%w}^b63P)v<6`xgTfHc}36OLQ z_kVRgq-&jjQ7Zk}+Svg0^-a2<-E@tG+W91h4{}Nv$0K7Sa9HIW;KbDqN(^!r!&T&= zyPhcBud60lv z{*F86(MA^%ffxLhS(%3{^&ak9WqbzvpMU*Zxy|{qRhEpM06l^+vvY(!_XC;=VP{f1 zyU5)pn4~m$!iHGxqO!ZMRI1g^*eaMxVQ0OFo4hg)xjQ2gp(KPZ;m1X~@$1ypgITQO z#Lw`YU)?;TVjeBks9_JseG2_Z)znpy(48GTmuMU3w~LWcqsdozaMq_UQ>iqCo=o@wA;EGvVUx_&Bo`gjju$e!F#Uta1*+^b_4wU{ z^`wt?uHl{cIIo#=!o4x+x6GJ1_Jv!!XeHEyvB{DaEd&o_hM6Of-$mqwR3OA2*G1t99WDZoPRIkuM&~^tC(yLO^#Bmi2~boFnpi}1H1P=vc8n- zu$f5#kjP*LcrIycUcCYKAK^ke11m83(3pxaY(_o-X!K>@BzGYmdH24#>rGQh=s@F5 z(IxLP{O7!S715ELh`b6cQD&vQ3i`*uJ+i`T*0e{_3zQups1m#k?-X`utuyxA1A2zCk1=sO~ar7R-$u8=8|@83SVZcD-P6IS+;7duKp0O z>R6&%U1|S2dSA~t$(6oEw`i_AeZ!v)G?l%{r{>aX^+>ipk^ phYaE-x`3lLmp002ovPDHLkV1g|cSgrs7 diff --git a/test/img/maxicode/002.png b/test/img/maxicode/002.png index ff131658c693994e68b8d8a8987dc1013df15115..3696fe3e7d81ccd561fca5fdafd0208194ecdc84 100644 GIT binary patch delta 1692 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 phYaE-x`3lLmp002ovPDHLkV1g|cSgrs7 diff --git a/test/img/maxicode/003.png b/test/img/maxicode/003.png index 3c5bf1bcfe9a8eaaca90096899793f1f66723066..2f761e44cf32524aa4a86fd4cec8cf8bbfe10660 100644 GIT binary patch delta 1813 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 owc1%yB8QSB%^NeA-1uR diff --git a/test/img/maxicode/004.png b/test/img/maxicode/004.png index 2b24dea64ffb8f9ba460ccfe00f20318bd15b8e1..42e4d3072c181919e461214cf736be05b5e45640 100644 GIT binary patch delta 1862 zcmV-M2f6s#4%H5jB!3)9L_t(|oZVa7wxl`;guVLzf0=nOCQuYHYVUJ0!-E|IA!tf2 z##U1ilW`Cc5$OBQVQ6j*-qP0aWI{T>Le>?}TOuMqzhS^@`g^SUl?8NKuk~v}dmFQg zVh|qG`;6FOaxj{eqjhlAaKJ#{0)eob-H2Sp1v%RnSKomV(|@w6Sy33*tE1|MLhE;a zsCIo0E{=;Pj6o*yVN)&Jltj(h0@GSIYX-T4w=J$VChG?gF|*i54`yCY%9a`DTIBW< zGgG6!Waa7kj+}{zj>FNl#R|e5-xXKHs$0HqO>Qo#+7E3&Tg@0j5ee2sm>lC0;Zh5; zGr4t12`PBWl7BI{_rrChjd7*KawSbB=fooSRk*fMWQ-hc#4Z=PRES)huyGAfp)Xi? zaN&yl#P?fZ70!7_#KU!CTx~~cVSVqlV%6KY@l?H>W|0AFzk=`6W9HnL)&;os!%izW zg7i*S4SH|Yh^nEB$tkuZ^yzuXwR5hCkH)MuP9d((V}Eg#4w~fJ*3y*Hn(m^=`!Z3}h%H*yl3oDpv*nC=RB3f3*CRKal%3I~a zBPFfw|9>Jd7ez%}?L4nOQyh*oU8{u3vf4gdpG%!hG}>%y*Iek5jJpWS{c#m&3a<+q zFIncp$~nAu8d)F4KhG7ciIr8+T@Fs2Fo&w4RY`M+`UP-%JA#!{xh6s1x8J1c!~2L{ zTcvpN4aV%mh{# za@f1=F;UuWcIqZpO$nb-uQeJ>ooeMz-+57|8`jEv;rEo@=_Zw3>BXs z?Np~eZGH2w-IEWu;6_@(MCbPb@I~&vCIyYKwD6y{l5T` z;m}&%BgKFlOYVst$aBsS5r4+sM}EY^kF^pRk)zH|(v1Qw$IXkWpNjn5xcaZ@m#r$( zs>mI5Ryh)Wf2oDumdH7y$p4*xg(|m6<#zqr@Z%!glNQU#sywaJ{F{VcJ2Pkby;g~I zQobHtyRG11;%-(Q?fSLiRhPcmKkwWO}DauJ#odns4JjB`j%&WQ5aSG&JjzJ&akM?HE~ddbEF4F#-9UZ z<*nMOVE$EVs)^T#)qmKsF|J-0#%~mGechp`oc^s`DHT{aO;RwHVKGHy0z8rqve`H> zx!A|lV=yOA!?w8EkjjMqB#Nun(j*5x5Y+v!%yrn-^ylJ>WiNBjc`yb!!X3$i+Rx3n zxk_`TCAay~J#qDuzS6HK@k-&jS5@JACz{$=>ym;yf-E5`Ge7)Pc4cZ*LRWC)b(rB< zYNTXwI@>DkimM%|*Upj>Ig})6-kibY=7*F10AcWSRSwRU<^TWy07*qoM6N<$f~+#0 AbpQYW delta 1867 zcmV-R2ekOr4%!ZoB!3}EL_t(|oZVa77V9Vog|qtqzsx+u$ZcaZwlkjLAvJrf4`hkc<#P`92h?S$VC4#x)x&1^$ zSfDSNd3wGhCq%@0xVny5!Enb<#TBq>$@k64jYXOJp$%xO=_6=Ff^-oihqyqv)Pn3x zZk8a!pmP=D@vxb}1~t{7O(po!#+nCEVVYtbS@b2yD%CUP+WIX_|JN<0mH&ccfu zuE*H8lrGJA$xpp>Ju<~+e9Fd_}wN+>1 ziv8g~rIz(YOOk5~zA;K$sjMo7dI(pK=*p^Yc0Nr;IXR$eDbzF3|JPsrf<82bZ;iu% zg&8O&OM9N~lpwXF;|hgGGim9di~(*KdsSs}SChCEOf_situ+BHvtyI0GjV0DGT{*t zSNDGsn17R^M5cBgSDz^kdm64)LSuK1&L-+@mbq&#bWz5ghvoUWax{e31L;ea z@vw3Z>zy>~i}BBLDb~b{s^~5kPK_{zszj@j<`VT2;I?)+D~EDT0={owCYSJhfwryU z*#3rT#R{e}*Tu1M!gY;g`(w*&KT;f0Z;{HXlz+(i;QL?{z*7wRLC%Y;`zv#!?8NCt ztVekj*}#=%-1^hQ-5$F1UX5QbW}9wcxcU2;Q|5yH)e4D^7wH!T{1Dn0b~D)#**k(Q zX9uIS+icVgtQt~$My*zFFm$SwKi%`9Mt4{%v4!7T+Q}J&02&#zYBKvIb_^#p%#Z;G zAb%+rxUo=a;VSS?>V0EWf{@J$LxzZ*usFH*D`=7r(XM;447nA0ZB=wQS2M3!rkUC! zMOqM%L4Xe60YS64V=hiJ>B5N_V(yi_P(2Vhb+b@^5E&YR66KCZAu-WGq}jXS8Qfig z7ECM_j^S^us?(W0oL_`}J61Z82pEx3$$w}eYL(vA$;S)ZDq1|F&l%(G{aaXp-;Uo# z5V5#G&O~ViO=hF`UmJEn)lb)?amj+5zkj9h znXGvco%0ucASMH=@U6!W9WX2Di`s&$o}%*N3;xQc-Q(1Gn%-Nb&-m@oSXU)9R_W7b zhzh`BD@hMvtkP-tsN)`&s)g%X^Nxub<(J*=r-0n5n@j*J5LJGR)th%rN|GqTl)~ym z5T2!%xUzT5&Mqcl-k?uj*r_L|?|-S$y=HNFgy8#)A+`Kp;$s8SUF1+qK~VMw&zcs$ zOJ&cAABKA$oOw5v2oFuI%qk*kWuKPMyB9kAL$ua~c&9 zXPAG7KD1Mv`ndIt!}fh*1G0dYGtv0{0Qf3*U#dV<^CvTH%WDfrW$Okvh!cd5wJ;TdqJ~;1qzz$hY4#w3Z?L2k?Xfv_7 z{}+HV99qkIBp+~n$vx0x$A2o}EoWl7a5es3Jdpr7=ER`j+&&KL#$@B9<0+$NMe^=reAiF9vTC?~7(v`*u15_;{7oaOgg zCDK9pdUc()f|rS>S#^=wF)>Hq8ui!Q^@wi9+S-|jK>Fvo4hsy#AAc$T5zE1liO@dI zxNP)1$9Khip{QUIsWp?no(GyByca{T^R2u!1}sFVY>ZWxl&AF;W$Z!u?UMPA_L%o zbP&yk3Ca0Bq&^07@H8BYs{^S_=x>6!YAsH3p(g}&J1lbzwmJQ|_+i=0+;bd^gB;*$ zvcU3ZF>cP%SZT>^zVu97{YhWxSCn|A@Yt&|;k^@1?O5xAf<)VcEFmj1>{Rk(s#gM6 z(0%NRhe_xH3^Z((PQ}%U)N5x-iCmNfY2KKD}a{sH7yZdhCoFR=gs002ovPDHLk FV1gFTuV(-N diff --git a/test/img/maxicode/005.png b/test/img/maxicode/005.png index c5cd7b2c6773bd8a8388f5c7eaca79b831fec218..a9446998dbe4c44fb1eeeb0a9439f0f50cb06a89 100644 GIT binary patch literal 2526 zcmV<42_g20P)*k=g8zloaJ67)Fk)cd}S6UV%e`Y6#L;XZ^WgT zXx}{kg?{WxSw1|#`Q?nmBRfVhBD5rP-=RZg>zhnI4w?6pANZ8jQ#wX5=A99SOJks_ zVbVEEjUk^E|7zpce)o6ux%kw2)8$g^NO$juWTsrz1j%bTQdmii;d)7(u~Wqn>WrU= z7))hK$)(TvGlk08frAycO0RS7$sDX`#lPBE_N$Fh{S%Wof+Y@zCg2(|o*Wr9IZvKe z4ChjS0Y3Nfc*`1dlf`+7W_6_He~AZ#g&w=ihs2cvR~6y1&=0H zRvp|;<}Zk*Z~fZ_WP8(ko9ZRo6#}J5zz0`}IdlK)4tV>X`0{s?yhIaTGg=5M{?*2^ zUvU7xvG4nNw0Sf!G_g`g0TtHJG^#!}h_G_YopoR6%A=hrcbp{mQ|q1OKZ_m*%3;O7 z+L&d(EB#4RH@IHz2kQXn{MJ7k&raT@P-@k4rrDpe8p)n%p zQ}v2;toTdxO|z`Wihs4S>{lD2|72p=k(A(uZNy!eLTRpx zR?C~`oUGSP+MKwOXSwX}-}I8s)|8GP4XQB-PoaO*e@5C&x56K_-`C*x{`EOM z%yQ5{Rt)VOD#)Kw!^xhx>zn)4vJj?MHq&aD}!mJn@fATwXHd08+>4MV|>LHBy+3DiHrv}Z zH;g`oGWLsHN7w}Gn(Q>ss1eSs{c2-mM0RzA)f=-+~L zzE{QFgzOcPW=hV}TIqLiw!YBUls=x@PWjKE?}{U6Jax1Lntgsg-ZcK@W_1mu(@MoE zwr;;BkPPEW1e3lQ!P82j+^P6EOKmDl+xwcE^_#-pfnm6fumYbmjdETPP9poQbJOC- z25(&8U{Mg{8@o#}dn*DH4bZ2`E9JQ#FZ~vr#+U%9G zv3iG4D6o?CUuz9>7%&_u+R#Iq_?SBK4Ag@zej$cbdjHSlj!npof(;@Y4bbb%AHHTB zFK!zDBF6z0S#_2>;HLI#AbB3u-I1f0A@Yih>!>LUOMi2FH^sMGam|{n!0~-VFkhl2 zYYRAp{}Lv?n2A<2onkin>*YAn09sxL_YqGWt>HgasGB=Hg_n+ePgJrWK7WHe374-- zLwAGdKl!7-^!YirAC~4KiS>$13XFfdZ=Gz^@a1j z9Fov{|2f#!RQ&hP{R)@9qaV`-5)T1D2#b#P=7xPn?dw)KwW<9K0ZE_dJS7`*H zWX4G~$oUzkl#5BtCy_Fh3TrXip%T!_ny>>7!8-MsR%#x+See50Jo}MVl86((G`>5IJP(r}%U5?pT|Q6i`TxbeFhCnT1UaOuF!c&l4v}DnOd=7Zt{@VuTmzL%al%^omqa_t zC4Bzg>KzJF&QIN}MB| z;YkfYQ&}qLNZgf;75{2u*{?QO7XdCP;K@DzNDc(}o6>+jW;25D4W)<+wN_no?Y>ZOm%tpWFU7~J>U2J?eD)V3}M=w#L1v~emt)DR~v)=J5z@=^{9Lx zo34}O-pwIN{aN$m6WvYfmN+<5+V>n);75{2u*{?Rn_pdQj&vRt=eGF5Zy@0lv2DCCQ z!3whIl~wUq2(1L}u+bCpM<;jh*BYB6aXs-&z_YUX&#b(A-}iaxd?RSmGAqLn?AIFE>|^H5>x| ziCuo{%{{=a<8k|z9*o=~ZFxYd>8nr^&I`sYPw~TMPMravsZdMfm*0|zdZ7loMhWY;& o&l|;$CMD;|y==XJ)j0(I2ai1^5TK3tWB>pF07*qoM6N<$f;$fUR{#J2 delta 1933 zcmV;82Xgq{6Oa#(8Gir(001Neb|3%%2Ukf%K~#90-CNz7t1t+JetrK}=3J-=3_}vN zyK4^@t_DJ|jQki^O+`#p#6&~{<B9VTVdiB^(a1?NX(Y9SnEIxa_hdTN4Ah*TRh7 zr^j2RpIg8ZwHxozd+u zZ)Kop)N^t5K%#lD4K+vO$)GovL~*SgyEe!7bud+@I^^)qobwraIIUVoHZj;`w76hSoUyrL_q~<}7A;s6tNC3E{WU6BO9Hm`!S7s95_0>9$ zOB5z$o`1$ODm*0n2@kTe<|I86SFgQerp$t&a}iF9!m)jyCe&<{7a18t^s%$!65c>= zag)Tv2}DjIsH&&?)l+fRh&9WRQN6CAv?5%IXpUtpp?YR35z{sxuE!gVfZV1pn5pH$ z!lT|Ig2oEUdUC&+STkIuRHEFZ+g2%_f5NnkD}RGq?{8get|ZP z!e;rNi)Uz4QsQ&W$hGJ>ig`gj!!CQ$i7~M>Ygl&pB`)I18KrTYHDagf&c3q=$-$Ez zqkqoXz6MA)onFnbY|>^`009S&(Vl->w2DR16jYN@5kgkaiTo01*Q-7kLaYxROYkCQ zl`dOF`zxc3?btZR-K<)u8_9l+_rC6pNi)#{Any42ep)Fv?wCN=i}w@4q&e*P3LtP7 zsy@cG7Y^ZBP1&g8Svo;mk98SWK0Of5&3`cJts3t;FD+FTkS{Bi!{S=p*GeJBJu^jbEFP0wzKT0d36H2AsbqAjSo}Y zEC~tABO!#VupEp-MG96zo!CWueFe@1n!qM#jY}PK<5M&O^Hp5cAs|%?7w87s8-Jkc zlrS`o{q{$GEG7=zWf4$SZI)mq$-$w*Ft4t>ozgB7Vpg1G!I5=8Va3@8;+0!e$EEW! zUAL+~*=_#}OZ>~2Zyt=Wm2nMps+)j#q*&PJE=Ka#(O@yUeY+&Jm0LJz!!{%4;#?Pw zJUDZJio}ma;v{2(ZfxM_i@0(RSAYD7#bl`qn9!`FuQGGnQgM75`x8#m`e+_08vc zoa5%%fEF~rL}c%KLt(A(Bth+Eqvcba>VrqKoRr3~{I#J|#{wc!x^rImVSgCTI{eV> zy$P2zZo{e3XZCSEX3kFUfs0Zat1KUl@CJDgMMN31J(br%R1oFC2nW?;)5AF>{KveP?3g zq!pkdL>N18a@pjL7u@g97e|$OlgpOJ?WwrhYf+!yre8>e;%+E+)_)C$2lFO~WMo-b z0izVubxl}773pTHrgdDm_cucIU3WYTh2z+yBzPvSULr-Zga}f}fe5=~XOp>>We-ra z&cd)@4;`qyVpVys8--AC_oB{ zrK$l2Lq(sA{V%Bm5r2yepCx7^13g$pOB;t$GIbtGYkDTGm{ny^rE!uBvVW7tkG}Jz zo0R_F8QR`Fwli1^i&OL10&UaYZnu#2wHyfrK4`~$%B)@S_u%Rho%Ga5Oa30q>o1|< zN<8019|3aKDG7XIm_IqBc~{9L$T5*B8nHMD3|Qws$JIy4)qm~zAL!sR%GDwWuEsB` zRlIE9Y{Sx3`(29+OT=+nPSajL-aE&&*My&mtIDeLL6L!{jg{ZPZrnIc(+im%A&rbV zA|bYFZdknHcYQ4M@*{$+FB^+SeH4{V*LUISZz+9kI6mtKm^PMM(AO9$BL4t&qg`$K T7vDet0000x{h^%3S;R;RX!%>;|2F7n=++{l(bBK8wMcoboFyt=akR{05p*f{r~^~ diff --git a/test/img/msi/002.png b/test/img/msi/002.png index 61054b027c22802dc75510afdae6c3e5965e8dcb..f99e50e7e7243623b4edece474055de221bab510 100644 GIT binary patch delta 152 zcmV;J0B8Tt1<(bMBmtMPB_RTTFq!VwGb$}I?ZFr0uW>Ej%Kq*1Yvrewy0{~M+OZ2< zbm>0v8hmE5f}NSm#x>!0pPnuKoAaL1wGPHt)rE(k`vG^?_;@{+W8>k!N^|w?&076Q z@-5)8qrbDHhmQC#5+5$Yp7r?lju}k);j3q$G@tlke*%q)t~5G)+>t-+*aa@S zbf0()J~LUt&dg=wn((_%&zAnpc~9wD2ji>i!b8ygfV*payq?Rk@$g@zx%&2It^OqW z7Vy~7-&xW_M|>EG4;Nw2dVG7w3?}{X)iY33iGHJ}q3u7t{0k%A;$3t?MT543n`@d2!6LH0FHFkJrCRp)<{UoZL^Ec5r&tYtFSyK3gV6`EQWzt;82(wIacVc++K zpPIK;8_q0wee$_n@ze6_NnF3P=b!)1>@8dN@XaFc@15r#Qg!~v_jQF|gJu4nnzc;kdRNVyw?b3P;@7%v@s3Fp683#x z_^ElTwU1g&zRZ80@OQh#f^WqCuGv?z^7j$m@2#7=_3of=a|heon81Ve%hA{g7R*c4hP=abZ`IP kqb~gVi8X%=LPJCEKQ&x#awuz)0w`&Ey85}Sb4q9e0Du)w*8l(j diff --git a/test/img/onecode/002.png b/test/img/onecode/002.png index f37bcde33948d1cf5487da91a581f26a9a516bd2..42d16287c3279e8c0b27f60fb76aa279e844d470 100644 GIT binary patch delta 801 zcmV++1K#|-2Db)~BYy(^Nkl zm8vwTRHZ?sDh(=CX;7(3gGyBz9PFEOf>=BvJv?}6bm19FJAb6uZ8pP?yxT#CBHWRx zS(OHrsx+unr9q`C4JuV>a9kA!D?Gv)lqfDh(=CX;7(3gGyBzRI1XTQk4dksx*N5%VrkTtV)AQRT@;P(%?A%U`yXe(%p;n zIc9KOk(%{J-haA4B;6TA)G6UH74uzL@B2l#p_Em8#;ankqklm>o1md-rr#l2`#la3 z=@P1Zdcq?phAl{ILQk&S!As>gBK_YGe@&w)VtcyIy-1O`c z?l{r)QO**|E*0~*7}@CC749US#Vn;P<8#v7&(a#ea(^~;kTKy;AL#a`3id>;3(^^> zpoN$phU?0BIi;HX$C9?@+&#`$$9ml|fY0f?3Tj?lM&GZ(^`-bYyw1rlSu$9wtQyFA z;KCk106vM>u7T3&BnaOuGP}Z^#P5Nds_tLxV~PlD4aQPTcA{WiGP@DP7|Wm#Pfnn5$@Z>NHX)>@AK>-}AFdKx!kw$AE$gAb0P3+i z#hYd*fuf%fS&U0to)q*|qC$34hKe1FVKl48(SP6#wk_AIL|o?k%Hp5HRdJxBik(2k zqd%PkwcGn0{NUbMB$2f)sslI8#cP|ND-i{H(7VDliN8zb$J{$lCnvfRPvuo1>t>_X zId`%y)r!$ao~U?RF>l=(t{&KH9E+7Df_DfS+b^m^!+kjZdKdD;iy)Ft*JRp)wEi!` f)f&WasNVko15~|k);FEN00000NkvXXu0mjfTt|w} delta 807 zcmV+?1K9kx2E7K5BYy(~Nkl(2>hkq2i&1U$KcRT2%2zR7% zR)s;PDhx7JVUVc`gG^NzTzAF63XkO%$hI|V7o|;e;k0c&v3+9lj^qWhzqC6rw%=5aAHI#17pJBep8ODWspvVX=_gJac&*!eai)WPUokf;>Bh3{VH5vijT|docxj{ zgSE=4fvg8E?C}HOlZfpaD4kA%@XaD~D%?r@8Mvux{>46~h`>@{EX8CeTC7WEH-Z=g zTBF_c-G3?LQMcO%I1sK7e+bKS6%3`=R$EPa---~88m*ZE6lhhJ)m5MvG=si76+E=o zdYq{v;Y#r|u=iM{iqt;X>QX5kX@ea731n@Uh(zf}!bNdqPDQ5rFs=XLDsd#-xr#cn z9{LNQ9;;KlX@(Lg`U#Q6xV7a;L0=_m$!^L}aerblT+OO+Gu?C+kwJ82!o<6>lr%tw+Pv1AC2Yv$90+4nbr4MRjPn5655YLVkD=MAGS= lOdwm3*8fGgn)n0N`yWCby>V9ik2wGU002ovPDHLkV1hJbic$ao diff --git a/test/img/pdf417/001.png b/test/img/pdf417/001.png index 95cae47261e23b55a0c3bd2450367d4e834512e3..a8ea102748a79f03170a702a8929efd1ef68fa28 100644 GIT binary patch delta 322 zcmeyubeCy@O1+Awi(^Q|oVSq|xehyU%ufFQ|Ma_syQTInetRmxQAi_qZ51!OqwQyR zb({ZxnfJH8FmNuJk$Ck1f3x=P2irH~$`$iuEqnX1@cWbW>V3P~mdpH%H~U?&EpNB7 z)foZVv_0=yQ$tUETjR)Px6pBR-c6DD#j^GB3va&b;4^k< z(y7TRxe^t(iRbAW%X1fU%7F?N9q#EqCH7bG+r%GYa})2Rv-bFvTwAlNP5*KKMVJEV zyBSx)D<`$hYTFg|JMjON;?h3zoNd(>5$oahh)?Bx{(CjwMy;D!Y~pj5H(&p_DlY4w zvB_;&>x+qPFAN^9ww%3u`&AL0`8{rb+os;DIW=?hBhFV9L1(Wq0-cana_^U2T85O~ Rucr(^;OXk;vd$@?2>|IAqSpWb delta 345 zcmcc1^o41HO1-tGi(^Q|oVT;?t~zYM(>!H>TEnxAtyICfed z=E`IKcjnBo-1seL1uM^OKRa!C;n_o#8&B_IUl&pTJg46@F7#ZzvgH{MKI8Z5&F^jU zzwUoOIr`i7pLY}I-RAppQm=h(-xC9%f-Q4((^t+~o>u>5%}k!+`k7Pbi1C$8|MSYv zn$KGHWTIQqj7+QOZ(9mf&!j|1A6ql=&iZRh^B!jNWk1_;%|8!jipkvE?{&KU9QCso zD^0(7RcLS6r^q+We7Dwn@xx3BU%XZ9>!f3B6$1CPQnIW*KgzplpS%_B4x5_uZT>%l z=1Scw{55sQwOK;4M%Oo1Z+}yG<0a4!lMbJ0K4WJ8xjrKy-$JHul{rViP{4{YQ7l^==iI zcr`9A`{}u>u?6#!ZUSXh+GpmbXP!y_2LvYWGfiUB6yyx9HJL5PN2y z6N`Or^u{TF!=l$0Z*1S^{$R=3edS?&vx0T3Cmrs2VzBvT&f?b(SpM(p58k>XPQdzH zsmr%>r|0duIul|^ef!MjS-jWHcxBGztiN8?5wfy0_?Y3}# z&dHs((zd*_HaFpo+2gpom0sfIyU+f9cu#YhZ2ieZx1t$0i?*3rOjKPbQs4b9<=H$j zd+GH@zCZYrJ00eX$Fp*6xJ}=u9X4(L=rYC8bb4rV;aZc`@8|Ls7JT>0^Edu40$W>o}SP&{TBlec)I$ztaD0e F0svpXG|m73 delta 591 zcmaFJ@`7c8O1-|Pi(^Q|oVT+B^Pd=Sv^>1>|Nr!2{@r$LK2pzf`Od0uy_L7&^2DWr zH*Tygn0dH==FEKm54-ga?c1+>%sZ#%UV6z4^(5Xj6N&Vf`+o&L{d3=g&v??|Gv_Nc ztmJl`4SjUsq)qSk_a6Vxg}Fybe(ZdEukiSWs}p6?RN7}IrythQsehjQ@y=U2_0x9K zKb!0?TqjX^3L*db_WS9d6LNR#`}icPI=1Q{PhhiE&%W<_`w~|xTb=>h)P8PS>~p4i zuJEV_c9K;=;(^+?XJp&%EWR=ip&~4nz5Ijy`HwXR6wS2GFYkCaH(cuX8JH#Y;+D}C zfpeIioH_g8b6mEaYsmJPt1o8H-3Bv2zi8W?#f|B6JkFiT3VZ(lPnNyp*}Zc6_dbSO zvHsi54b#@#P5U@~xnSX;nc7j!Cw^$}PQPyb$@*}Zd(jM_Z~Nxt-Va_Kn)D;??d2U_ zE^~Ndo=TQ=Tse0yxV~*|-xC9%Z)7ZIi|60A)wOedHnrMDN&fV5_R@7$@qHCZH(o)) z^!1#z_m-cs{-?d@+naUIcPjPj;Ief|2h*z+Fy!dFRu44xp9)^_qI_udCjk55o_JHY@1p00i_>zopr0AdL> A`v3p{ diff --git a/test/img/pdf417/003.png b/test/img/pdf417/003.png index 9f8242941ec62a526539231ae4e28d52e96e3868..9c417f19a9ea67e74c825a4e33ff694ec629a63a 100644 GIT binary patch delta 286 zcmV+(0pb4c0=NQ@BYyz@Nkl#o5dmY7Lmf|q$d2dAso@{apemU^R3%RyC9JqUW(h(;k`G1n4^Z={rLu3ue`f7nXRoS%ke~ioW6Im~D$J|* k+v~$#M{$^?I2X)%0j2U|VAom)UH||907*qoM6N<$f`_P%kpKVy delta 340 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 diff --git a/test/img/rationalizedCodabar/001.png b/test/img/rationalizedCodabar/001.png index 1acad33e17ebe6ff1535c39faf6c26f14dce0ba5..3245f7873ae1ef615007f6a0f53f0246149ac9f9 100644 GIT binary patch delta 400 zcmV;B0dM}229gGlIs&0dkvtwK&t;$EzL!65_dGUtD?X82Q&n@DKP+1Z-ymMnqKK)=@5v5%u^H&5CBG>GGs?b~j#xGMfX687r;fUWwkzsQayH%ewFdesuHGoPT~C57>|i>ynds!kl8e8d z)gImB-S6nG7OQSk>_>Qfs}IZfYp=}Hjlcf1wHw~-w{O_(q?;(>ekY8T*Q4$czJ0Xs uUyJHB^YP_@_8+i$y=&h#535ezSUvzU>A^6@q?Qc;0000{`C?31AY?$+u48-5!JVKluKhoJ$^*9qM2zr{Q%XK*iK%b@P2tQeP(8M<8Sln<_A&jZKmqA*zm0z;q`xw-n-47UK9UHcP(3! zzw-341^<{+&o}A|dAIN8S~ja&4bR!hnEw10R(yUF!Bf`EluKvpaT&ROr|1r*+3!8> z Date: Wed, 12 Jul 2017 22:15:09 +0100 Subject: [PATCH 6/7] split test cases out into separate assertions --- test/render.py | 93 ++++++++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/test/render.py b/test/render.py index 5f77224..37991d9 100644 --- a/test/render.py +++ b/test/render.py @@ -50,51 +50,61 @@ class RenderTestCaseBase(TestCase): def runTest(self): symbology = self.conf.symbology + args = self.conf.args img_prefix = join(IMG_ROOT, symbology) - for args in self.conf.cases: - img_filename, codestring = args[:2] - options = args[2] if len(args) > 2 else {} - render_options = dict((args[3] if len(args) > 3 else {}), scale=2.0) - generated = barcode(symbology, codestring, options, **render_options).convert('L') - loaded = Image.open(join(img_prefix, img_filename)).convert('L') - diff = None - try: - # image size comparison - self.assertEqual(generated.size, loaded.size) - # pixel-wize comparison - diff = ImageChops.difference(generated, loaded) - diff_bbox = diff.getbbox() - self.assertIsNone(diff_bbox) - except AssertionError as exc: - # generate and show diagnostics image - if diff: - # if diff exists, generate 3-row diagnostics image - lw, lh = loaded.size - gw, gh = generated.size - diag = Image.new('L', (max(lw, gw), (lh+gh+max(lh, gh)))) - diag.paste(loaded, (0, 0, lw, lh)) - diag.paste(generated, (0, lh, gw, lh+gh)) - diag.paste(diff, (0, lh+gh, max(lw, gw), (lh+gh+max(lh, gh)))) - else: - # else, just write generated image - diag = generated - sio_img = BytesIO() - diag.convert('L').save(sio_img, 'PNG') - # reopen sio_img - sio_img = BytesIO(sio_img.getvalue()) - sio_uu = BytesIO() - uuencode(sio_img, sio_uu, name='diag_%s' % img_filename) - raise AssertionError( - 'Image difference detected (%s)\n' - 'uu of generated image:\n----\n%s----\n' - % (exc.args, sio_uu.getvalue())) + img_filename, codestring = args[:2] + options = args[2] if len(args) > 2 else {} + render_options = dict((args[3] if len(args) > 3 else {}), scale=2.0) + generated = barcode(symbology, codestring, options, **render_options).convert('L') + loaded = Image.open(join(img_prefix, img_filename)).convert('L') + diff = None + try: + # image size comparison + self.assertEqual(generated.size, loaded.size) + # pixel-wize comparison + diff = ImageChops.difference(generated, loaded) + diff_bbox = diff.getbbox() + self.assertIsNone(diff_bbox) + except AssertionError as exc: + # generate and show diagnostics image + if diff: + # if diff exists, generate 3-row diagnostics image + lw, lh = loaded.size + gw, gh = generated.size + diag = Image.new('L', (max(lw, gw), (lh+gh+max(lh, gh)))) + diag.paste(loaded, (0, 0, lw, lh)) + diag.paste(generated, (0, lh, gw, lh+gh)) + diag.paste(diff, (0, lh+gh, max(lw, gw), (lh+gh+max(lh, gh)))) + else: + # else, just write generated image + diag = generated + sio_img = BytesIO() + diag.convert('L').save(sio_img, 'PNG') + # reopen sio_img + sio_img = BytesIO(sio_img.getvalue()) + sio_uu = BytesIO() + uuencode(sio_img, sio_uu, name='diag_%s' % img_filename) + raise AssertionError( + 'Image difference detected (%s)\n' + 'uu of generated image:\n----\n%s----\n' + % (exc.args, sio_uu.getvalue())) def gen_render_test_case(symbology): conf_mod = load_module(symbology, *find_module(symbology, ['test'])) - test_case = type(symbology.capitalize()+'RenderTest', - (RenderTestCaseBase,), dict(conf=conf_mod))() - return test_case + for i, case in enumerate(conf_mod.cases): + + class Conf(object): + symbology = conf_mod.symbology + args = case + + RenderTestCase = type( + symbology.capitalize()+'RenderTest'+str(i), + (RenderTestCaseBase,), + dict(conf=Conf) + ) + + yield RenderTestCase() def gen_test_images(symbology): @@ -114,7 +124,8 @@ def gen_test_images(symbology): def collect(ts): for symbology in symbologies: - ts.addTest(gen_render_test_case(symbology)) + for test in gen_render_test_case(symbology): + ts.addTest(test) suite = collect(TestSuite()) From c2a23240a1b3b1c94f6b882e5a7f0947d6f5c036 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 12 Jul 2017 22:31:38 +0100 Subject: [PATCH 7/7] skip failing datamatrix test --- test/render.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/render.py b/test/render.py index 37991d9..28878f0 100644 --- a/test/render.py +++ b/test/render.py @@ -51,6 +51,9 @@ class RenderTestCaseBase(TestCase): def runTest(self): symbology = self.conf.symbology args = self.conf.args + if symbology == 'datamatrix' and args[1] == 'Rectangular': + self.skipTest('this datamatrix produces an empty image') + img_prefix = join(IMG_ROOT, symbology) img_filename, codestring = args[:2] options = args[2] if len(args) > 2 else {}