
    )cC                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	Zd dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
l	mZmZmZmZ dZdZdZdZ G d dej@                        Z! G d dej@                        Z"y)    N)mkdtemp)mock)Image)DataOverflowError)	BaseImage)
PyPNGImage)StyledPilImage)
colormasksmoduledrawers)MODE_8BIT_BYTEMODE_ALPHA_NUMMODE_NUMBERQRDatau   αβγ)   r   r   )r   r   r   )r   r   r   c                   J   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z ej$                  e d      d        Z ej$                  e d      d        Z ej$                  e d      d        Z ej$                  e d      d        Z ej$                  e d      d        Zd Zd Zd Zd Zd Zd Z ej$                  e d      d        Z ej$                  e d      d        Z  ej$                  e d      d        Z! ej$                  e d      d        Z" ej$                  e d      d        Z# ej$                  e d      d         Z$ ej$                  e d      d!        Z% ej$                  e d      d"        Z& ej$                  e d      d#        Z' ej$                  e d      d$        Z( ej$                  e d      d%        Z) ej$                  e d      d&        Z* ej$                  e d      d'        Z+ ej$                  e d      d(        Z, ej$                  e d      d)        Z- ej$                  e d      d*        Z. ej$                  e d      d+        Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<y9):QRCodeTestsc                 "    t               | _        y N)r   tmpdirselfs    :/usr/lib/python3/dist-packages/qrcode/tests/test_qrcode.pysetUpzQRCodeTests.setUp   s    i    c                 B    t        j                  | j                         y r   )osrmdirr   r   s    r   tearDownzQRCodeTests.tearDown   s    
r   c                 v    t        j                  d      }|j                  d       |j                  d       y N   versionaFfitqrcodeQRCodeadd_datamaker   qrs     r   
test_basiczQRCodeTests.test_basic!   s*    ]]1%
C
Er   c                 v    t        j                  d      }|j                  d       |j                  d       y )N   r"   r$   Fr%   r'   r,   s     r   
test_largezQRCodeTests.test_large&   s*    ]]2&
C
Er   c                 P    | j                  t        t        j                  d       y )N)   r"   assertRaises
ValueErrorr(   r)   r   s    r   test_invalid_versionz QRCodeTests.test_invalid_version+   s    *fmmR@r   c                 P    | j                  t        t        j                  d       y )Nborderr4   r   s    r   test_invalid_borderzQRCodeTests.test_invalid_border.   s    *fmmB?r   c                     t        j                  d      }|j                  d       | j                  t        |j
                  d       y )Nr!   r"   abcdefghijklmnoFr%   )r(   r)   r*   r5   r   r+   r,   s     r   test_overflowzQRCodeTests.test_overflow1   s7    ]]1%
%&+RWW%@r   c                     t        j                  d      }t        d      }|j                  |       |j	                  d       y r    )r(   r)   r   r*   r+   )r   r-   datas      r   test_add_qrdatazQRCodeTests.test_add_qrdata6   s3    ]]1%c{
D
Er   c                     t        j                         }|j                  d       |j                          | j	                  |j
                  d       |j                  d       |j                          | j	                  |j
                  d       y )Nr$   r!   bcdefghijklmno   r(   r)   r*   r+   assertEqualr#   r,   s     r   test_fitzQRCodeTests.test_fit<   s`    ]]_
C
	Q'
$%
	Q'r   c                    t        j                         }|j                  dd       |j                          | j	                  |j
                  d       | j	                  |j                  d   j                  t               y )N"1234567890123456789012345678901234r   optimizer!   )	r(   r)   r*   r+   rG   r#   	data_listmoder   r,   s     r   test_mode_numberzQRCodeTests.test_mode_numberE   sY    ]]_
81E
	Q'a--{;r   c                    t        j                         }|j                  dd       |j                          | j	                  |j
                  d       | j	                  |j                  d   j                  t               y )NABCDEFGHIJ1234567890r   rK   r!   )	r(   r)   r*   r+   rG   r#   rM   rN   r   r,   s     r   test_mode_alphazQRCodeTests.test_mode_alphaL   sY    ]]_
*Q7
	Q'a--~>r   c                     t        j                         }|j                  dd       |j                          | j	                  |j
                  d   j                  t               y )N,r   rK   r(   r)   r*   r+   rG   rM   rN   r   r,   s     r   test_regression_mode_commaz&QRCodeTests.test_regression_mode_commaS   sD    ]]_
C!$
	a--~>r   c                    t        j                         }|j                  dt        z   d       |j	                          | j                  |j                  d       | j                  |j                  d   j                  t               y )NabcABCr   rK   r!   )
r(   r)   r*   UNICODE_TEXTr+   rG   r#   rM   rN   r   r,   s     r   test_mode_8bitzQRCodeTests.test_mode_8bitY   s]    ]]_
H|+a8
	Q'a--~>r   c                     t        j                         }|j                  dd       |j                          | j	                  |j
                  d   j                  t               y )NzABCDEFGHIJ1234567890
r   rK   rU   r,   s     r   test_mode_8bit_newlinez"QRCodeTests.test_mode_8bit_newline`   sE    ]]_
,q9
	a--~>r   Requires PILc                    t        j                         }|j                  t               |j	                         }|j                  t        j                                | j                  |j                         t        j                         y r   )r(   r)   r*   rY   
make_imagesaveioBytesIOassertIsInstance	get_image	pil_Imager   r   r-   imgs      r   test_render_pilzQRCodeTests.test_render_pilf   sP    ]]_
L!mmocmmoy?r   c                     t        j                         }|j                  t               |j	                  d      }|j                  t        j                                y )NTransParent
back_colorr(   r)   r*   rY   r_   r`   ra   rb   rf   s      r   +test_render_pil_with_transparent_backgroundz7QRCodeTests.test_render_pil_with_transparent_backgroundn   s;    ]]_
L!mm}m5r   c                     t        j                         }|j                  t               |j	                  d      }|j                  t        j                                y )Nredrk   rm   rf   s      r   #test_render_pil_with_red_backgroundz/QRCodeTests.test_render_pil_with_red_backgroundu   s;    ]]_
L!mmum-r   c                     t        j                         }|j                  t               |j	                  dd      }|j                  t        j                                y )N)r         )7   _   #   )rl   
fill_colorrm   rf   s      r   %test_render_pil_with_rgb_color_tuplesz1QRCodeTests.test_render_pil_with_rgb_color_tuples|   s=    ]]_
L!mm<mPr   c                     t        j                  d      }|j                  t               |j	                         }|j                  t        j                                y )N   mask_patternrm   rf   s      r   test_render_with_patternz$QRCodeTests.test_render_with_pattern   s9    ]]*
L!mmor   c                    | j                  t              5  t        j                  d       d d d        | j                  t              5  t        j                  d       d d d        | j                  t              5  t        j                  d       d d d        y # 1 sw Y   rxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)Nstring patternr|   r9   *   )r5   	TypeErrorr(   r)   r6   r   s    r   "test_make_image_with_wrong_patternz.QRCodeTests.test_make_image_with_wrong_pattern   s    y) 	9MM'78	9 z* 	+MMr*	+ z* 	+MMr*	+ 	+	9 	9	+ 	+	+ 	+s#   B
B*>B6B'*B36B?c                 R   t        j                         }| j                  t              5  d|_        d d d        | j                  t
              5  d|_        d d d        | j                  t
              5  d|_        d d d        y # 1 sw Y   TxY w# 1 sw Y   ;xY w# 1 sw Y   y xY w)Nr   r9      )r(   r)   r5   r   r}   r6   r,   s     r   test_mask_pattern_setterz$QRCodeTests.test_mask_pattern_setter   s    ]]_y) 	/.BO	/ z* 	! BO	! z* 	 BO	  	 	/ 	/	! 	!	  	 s#   BB4BBBB&c                    | j                  t              5  t        j                  d       d d d        | j                  t              5  t        j                  t
               d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nnot_BaseImageimage_factory)r5   r   r(   r)   AssertionErrordictr   s    r   test_qrcode_bad_factoryz#QRCodeTests.test_qrcode_bad_factory   sg    y) 	9MM8	9 ~. 	.MM-	. 	.	9 	9	. 	.s   A.
A:.A7:Bc                 ,    G d dt               }t        j                  |      }|j                  t               |j                          | j                  |j                  j                         | j                  |j                  j                         y )Nc                   P    e Zd Z ej                         Z ej                         Zy)4QRCodeTests.test_qrcode_factory.<locals>.MockFactoryN)__name__
__module____qualname__r   Mockdrawrect	new_image r   r   MockFactoryr      s     tyy{H!		Ir   r   r   )
r   r(   r)   r*   rY   r_   
assertTruer   calledr   )r   r   r-   s      r   test_qrcode_factoryzQRCodeTests.test_qrcode_factory   sc    	$) 	$ ]]5
L!
--445,,334r   c                 z   t        j                         }|j                  t               |j	                  t
              }| j                  |j                         t        j                         t        |j                  |j                  |j                         |j                  t        j                                 y )Nr   )r(   r)   r*   rY   r_   r   rc   rd   pngWriterprintwidthbox_sizer;   r`   ra   rb   rf   s      r   test_render_pypngzQRCodeTests.test_render_pypng   sm    ]]_
L!mm*m5cmmoszz:ciiszz2r   c                    t        j                         }|j                  t               |j	                  t
              }| j                  |j                         t        j                         t        j                         }t        j                  d|d      5  |j                  d       d d d        |j                  dd        |dd      j                  j!                          y # 1 sw Y   =xY w)Nr   zqrcode.image.pure.openT)createztest_file.pngwb)r(   r)   r*   rY   r_   r   rc   rd   r   r   r   	mock_openpatchr`   assert_called_once_withwriteassert_called)r   r-   rg   r   s       r   test_render_pypng_to_strz$QRCodeTests.test_render_pypng_to_str   s    ]]_
L!mm*m5cmmoszz:NN$	ZZ0)DI 	&HH_%	&))/4@/4(..<<>	& 	&s   C((C1c                     t        j                  t         j                        }|j                  t               |j                  t              }|j                  t        j                                y )Nerror_correctionr   )
r(   r)   ERROR_CORRECT_Lr*   rY   r_   r	   r`   ra   rb   rf   s      r   test_render_styled_Imagez$QRCodeTests.test_render_styled_Image   sD    ]]F,B,BC
L!mm.m9r   c                    t        j                  ddd      }t        j                  t        j                        }|j                  t               |j                  t        |      }|j                  t        j                                y )NRGB
   r   rp   colorr   )r   embeded_image)re   newr(   r)   r   r*   rY   r_   r	   r`   ra   rb   )r   embeded_imgr-   rg   s       r   %test_render_styled_with_embeded_imagez1QRCodeTests.test_render_styled_with_embeded_image   sX    mmE85A]]F,B,BC
L!mm.mTr   c                    t         j                  j                  | j                  d      }t	        j
                  ddd      }|j                  |       t        j                  t        j                        }|j                  t               |j                  t        |      }|j                  t        j                                t        j                   |       y )Nztest.pngr   r   rp   r   r   )r   embeded_image_path)r   pathjoinr   re   r   r`   r(   r)   r   r*   rY   r_   r	   ra   rb   remove)r   tmpfiler   r-   rg   s        r   *test_render_styled_with_embeded_image_pathz6QRCodeTests.test_render_styled_with_embeded_image_path   s    '',,t{{J7mmE85A!]]F,B,BC
L!mm.WmU
		'r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y Nr   )r   module_drawer)r(   r)   r   r*   rY   r_   r	   r   SquareModuleDrawerr`   ra   rb   rf   s      r   ,test_render_styled_with_square_module_drawerz8QRCodeTests.test_render_styled_with_square_module_drawer   X    ]]F,B,BC
L!mm('::<  
 	r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y r   )r(   r)   r   r*   rY   r_   r	   r   GappedSquareModuleDrawerr`   ra   rb   rf   s      r   ,test_render_styled_with_gapped_module_drawerz8QRCodeTests.test_render_styled_with_gapped_module_drawer   sX    ]]F,B,BC
L!mm('@@B  
 	r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y r   )r(   r)   r   r*   rY   r_   r	   r   CircleModuleDrawerr`   ra   rb   rf   s      r   ,test_render_styled_with_circle_module_drawerz8QRCodeTests.test_render_styled_with_circle_module_drawer   r   r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y r   )r(   r)   r   r*   rY   r_   r	   r   RoundedModuleDrawerr`   ra   rb   rf   s      r   -test_render_styled_with_rounded_module_drawerz9QRCodeTests.test_render_styled_with_rounded_module_drawer   sX    ]]F,B,BC
L!mm(';;=  
 	r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y r   )r(   r)   r   r*   rY   r_   r	   r   VerticalBarsDrawerr`   ra   rb   rf   s      r   3test_render_styled_with_vertical_bars_module_drawerz?QRCodeTests.test_render_styled_with_vertical_bars_module_drawer	  r   r   c                    t        j                  t         j                        }|j                  t               |j                  t        t        j                               }|j                  t        j                                y r   )r(   r)   r   r*   rY   r_   r	   r   HorizontalBarsDrawerr`   ra   rb   rf   s      r   5test_render_styled_with_horizontal_bars_module_drawerzAQRCodeTests.test_render_styled_with_horizontal_bars_module_drawer  sX    ]]F,B,BC
L!mm('<<>  
 	r   c                    t        j                  t         j                        }|j                  t               t        j                         }|j                  t        |      }|j                  t        j                                y )Nr   r   
color_mask)r(   r)   r   r*   rY   r
   SolidFillColorMaskr_   r	   r`   ra   rb   r   r-   maskrg   s       r   0test_render_styled_with_default_solid_color_maskz<QRCodeTests.test_render_styled_with_default_solid_color_mask  sT    ]]F,B,BC
L!,,.mm.TmJr   c                 (   t        j                  t         j                        }|j                  t               t        j                  t        t              }|j                  t        |      }|j                  t        j                                y )Nr   rl   front_colorr   )r(   r)   r   r*   rY   r
   r   WHITEREDr_   r	   r`   ra   rb   r   s       r   (test_render_styled_with_solid_color_maskz4QRCodeTests.test_render_styled_with_solid_color_mask%  sX    ]]F,B,BC
L!,,3Omm.TmJr   c                 B   t        j                  t         j                        }|j                  t               t        j                  dt              }|j                  t        |      }|j                  t        j                                |j                  dk(  sJ y )Nr   )r   r   r   r   r   r   RGBA)r(   r)   r   r*   rY   r
   r   r   r_   r	   r`   ra   rb   rN   r   s       r   4test_render_styled_with_color_mask_with_transparencyz@QRCodeTests.test_render_styled_with_color_mask_with_transparency-  so    ]]F,B,BC
L!,,)s
 mm.TmJxx6!!!r   c                 2   t        j                  t         j                        }|j                  t               t        j                  t        t        t              }|j                  t        |      }|j                  t        j                                y Nr   )rl   center_color
edge_colorr   )r(   r)   r   r*   rY   r
   RadialGradiantColorMaskr   BLACKr   r_   r	   r`   ra   rb   r   s       r   2test_render_styled_with_radial_gradient_color_maskz>QRCodeTests.test_render_styled_with_radial_gradient_color_mask8  _    ]]F,B,BC
L!115S
 mm.TmJr   c                 2   t        j                  t         j                        }|j                  t               t        j                  t        t        t              }|j                  t        |      }|j                  t        j                                y r   )r(   r)   r   r*   rY   r
   SquareGradiantColorMaskr   r   r   r_   r	   r`   ra   rb   r   s       r   2test_render_styled_with_square_gradient_color_maskz>QRCodeTests.test_render_styled_with_square_gradient_color_maskB  r   r   c                 2   t        j                  t         j                        }|j                  t               t        j                  t        t        t              }|j                  t        |      }|j                  t        j                                y )Nr   )rl   
left_colorright_colorr   )r(   r)   r   r*   rY   r
   HorizontalGradiantColorMaskr   r   r   r_   r	   r`   ra   rb   r   s       r   6test_render_styled_with_horizontal_gradient_color_maskzBQRCodeTests.test_render_styled_with_horizontal_gradient_color_maskL  s_    ]]F,B,BC
L!55%
 mm.TmJr   c                 2   t        j                  t         j                        }|j                  t               t        j                  t        t        t              }|j                  t        |      }|j                  t        j                                y )Nr   )rl   	top_colorbottom_colorr   )r(   r)   r   r*   rY   r
   VerticalGradiantColorMaskr   r   r   r_   r	   r`   ra   rb   r   s       r   4test_render_styled_with_vertical_gradient_color_maskz@QRCodeTests.test_render_styled_with_vertical_gradient_color_maskV  s_    ]]F,B,BC
L!33%
 mm.TmJr   c                 P   t        j                  ddd      }t        j                  t        j                        }|j                  t               t        j                  t        |      }|j                  t        |      }|j                  t        j                                y )Nr   r   rp   r   r   )rl   color_mask_imager   )re   r   r(   r)   r   r*   rY   r
   ImageColorMaskr   r_   r	   r`   ra   rb   )r   img_maskr-   r   rg   s        r   (test_render_styled_with_image_color_maskz4QRCodeTests.test_render_styled_with_image_color_mask`  sj    ==>]]F,B,BC
L!((EHUmm.TmJr   c                 R   t        j                         }d}|j                  |d       |j                          | j	                  |j
                  D cg c]  }|j                   c}t        t        t        t        t        g       | j	                  |j                  d       y c c}w )NA1abc12345def1HELLOa   rK   rE   )r(   r)   r*   r+   rG   rM   rN   r   r   r   r#   r   r-   textds       r   test_optimizezQRCodeTests.test_optimizei  s~    ]]_%
D1%
	\\*QVV*		
 	Q' +s   B$c                    t        j                         }d}|j                  |d       |j                          | j	                  t        |j                        d       | j	                  |j                  D cg c]  }|j                   c}t        t        t        g       | j	                  |j                  d       y c c}w )NA1abc1234567def1HELLOa   rK   r{   rE   )r(   r)   r*   r+   rG   lenrM   rN   r   r   r#   r  s       r   test_optimize_shortzQRCodeTests.test_optimize_shortz  s    ]]_'
D1%
	R\\*A.\\*QVV*[.9	
 	Q' +s   8B?c                     t        j                         }d}|j                  |d       | j                  t	        |j
                        d       | j                  |j
                  d   j                  t               y )NABCDEFGHIJK   rK   r!   r   )r(   r)   r*   rG   r  rM   rN   r   )r   r-   r  s      r   test_optimize_longer_than_dataz*QRCodeTests.test_optimize_longer_than_data  sY    ]]_
D2&R\\*A.a--~>r   c                 P   d}t        j                         }|j                  |       |j                          | j	                  |j
                  d       t        j                         }|j                  |d       |j                          | j	                  |j
                  d       y )NA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOar   r   rK      rF   )r   r  r-   s      r   test_optimize_sizezQRCodeTests.test_optimize_size  ss    G]]_
D
	R(]]_
D1%
	R(r   c                     d}t         j                  j                  |      }| j                  t	        |      t	        |             y )Ns   hello)r(   utilr   rG   repr)r   rA   data_objs      r   test_qrdata_reprzQRCodeTests.test_qrdata_repr  s3    ;;%%d+hd4r   c                 0   t        j                         }t        j                  d      5 }d |j                  _        | j                  t        |j                  d       | j                  |j                  j                         d d d        y # 1 sw Y   y xY w)N
sys.stdoutT)tty)r(   r)   r   r   isattyreturn_valuer5   OSErrorprint_asciir   r   r   r-   fake_stdouts      r   test_print_ascii_stdoutz#QRCodeTests.test_print_ascii_stdout  so    ]]_ZZ% 	7.2K+gr~~4@OOK..556	7 	7 	7s   ABBc                    t        j                  d      }t        j                         }|j	                  |       |j                         }|j                          d}| j                  |d t        |       |       t        j                         }d |_	        |j	                  |d       |j                         }|j                          d}| j                  |d t        |       |       y )	Nr   r:   outu   █▀▀▀▀▀█c                       yNTr   r   r   r   <lambda>z.QRCodeTests.test_print_ascii.<locals>.<lambda>      r   T)r&  r  u)   [48;5;232m[38;5;255m ▄▄▄▄▄ )
r(   r)   ra   StringIOr   getvaluecloserG   r  r  )r   r-   fprintedexpecteds        r   test_print_asciizQRCodeTests.test_print_ascii  s    ]]!$KKM
1**,		?3x=18<KKM
1$'**,		U 	 	3x=18<r   c                 ,   t        j                         }t        j                  d      5 }d |j                  _        | j                  t        |j                         | j                  |j                  j                         d d d        y # 1 sw Y   y xY w)Nr  )r(   r)   r   r   r  r  r5   r  	print_ttyr   r   r!  s      r   test_print_tty_stdoutz!QRCodeTests.test_print_tty_stdout  sj    ]]_ZZ% 	7.2K+gr||4OOK..556	7 	7 	7s   AB

Bc                 B   t        j                         }t        j                         }d |_        |j                  |       |j                         }|j                          d}d}|dz   |z   }d}|dz   |z   |z   dz   |z   }| j                  |d t        |       |       y )	Nc                       yr(  r   r   r   r   r)  z,QRCodeTests.test_print_tty.<locals>.<lambda>  r*  r   r%  z[1;47mz[40mz  z[0m
z.                                              z              )
r(   r)   ra   r+  r  r3  r,  r-  rG   r  )	r   r-   r.  r/  BOLD_WHITE_BGBLACK_BGWHITE_BLOCKEOLr0  s	            r   test_print_ttyzQRCodeTests.test_print_tty  s    ]]_KKM
**,		$#d*X5I%+k9HD{R 	 	3x=18<r   c                     t        j                  d      }|j                  d       | j                  |j	                         |j
                         y )Nr   r:   1)r(   r)   r*   rG   
get_matrixmodulesr,   s     r   test_get_matrixzQRCodeTests.test_get_matrix  s6    ]]!$
C"**5r   c                     t        j                  d      }|j                  d       |j                         dd D cg c]  }|dd 	 }}| j	                  ||j
                         y c c}w )Nr!   r:   r=  r9   )r(   r)   r*   r>  rG   r?  )r   r-   rowmatrixs       r   test_get_matrix_borderz"QRCodeTests.test_get_matrix_border  s[    ]]!$
C')}}q'<=#a)==, >s   A(c                 P    | j                  t        t        j                  d       y )Nr9   )r   r4   r   s    r   "test_negative_size_at_constructionz.QRCodeTests.test_negative_size_at_construction  s    *fmmbAr   c                 z    t        j                         }d|_        | j                  t        |j
                         y )Nr9   )r(   r)   r   r5   r6   r_   r,   s     r   test_negative_size_at_usagez'QRCodeTests.test_negative_size_at_usage  s(    ]]_*bmm4r   N)=r   r   r   r   r   r.   r1   r7   r<   r?   rB   rH   rO   rR   rV   rZ   r\   unittestskipIfre   rh   rn   rq   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r#  r1  r4  r;  r@  rD  rF  rH  r   r   r   r   r      s    

A@A
(<???? X__]N3@ 4@ X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4+
 .	5
? X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3" 4" X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4 X__]N3 4("
(?)5
7=&7= 6
-B5r   r   c                   @    e Zd Z ej                  e d      d        Zy)ShortcutTestr]   c                 .    t        j                  d       y )Nimage)r(   r+   r   s    r   runTestzShortcutTest.runTest  s    Gr   N)r   r   r   rI  rJ  re   rO  r   r   r   rL  rL    s#    X__]N3 4r   rL  )#ra   r   rI  warningstempfiler   r   r   r(   qrcode.utilqrcode.compat.pilr   re   qrcode.exceptionsr   qrcode.image.baser   qrcode.image.purer   qrcode.image.styledpilr	   qrcode.image.stylesr
   r   r   r   r   r   rY   r   r   r   TestCaser   rL  r   r   r   <module>rZ     ss    	 	     
   0 / ' ( 1 9 K K#G5(## G5T8$$ r   