U
    ;g                     @   sr   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mZ d dl	m
Z
mZ dd ZG dd	 d	ejZdS )
    N)mkdtemp)mock)Image)commasmainc                   C   s   t dddddd S )Nzutf-8s   0x80r      zinvalid start byte)UnicodeDecodeError r	   r	   </tmp/pip-unpacked-wheel-ij2mbwps/qrcode/tests/test_script.pybad_read   s    r   c                   @   s  e Zd Zdd Zdd Zeddd edd	d
 Zeddd ede	e
 ddd Zeddd ededdd Zeddd eddd Zeddd eddd Zeddd Zeddd Zejedd  e	e
 dd!d" Ze	e
 dd#d$ Zejdejd%e	e
 dd&d' Zejdejd%d(d) Zejdejd%d*d+ Zd,d- Zd.S )/
ScriptTestc                 C   s   t  | _d S N)r   tmpdirselfr	   r	   r
   setUp   s    zScriptTest.setUpc                 C   s   t | j d S r   )osrmdirr   r   r	   r	   r
   tearDown   s    zScriptTest.tearDownz	os.isattyc                  G   s   dS NTr	   argsr	   r	   r
   <lambda>       zScriptTest.<lambda>zqrcode.main.QRCode.print_asciic                 C   s   t dg |jdd d S NtesttextTtty)r   assert_called_withr   mock_print_asciir	   r	   r
   test_isatty   s    
zScriptTest.test_isattyc                  G   s   dS )NFr	   r   r	   r	   r
   r      r   z
sys.stdoutzRequires PILc                 C   s   t dg d S )Nr   r   r   Zmock_stdoutr	   r	   r
   
test_piped   s    zScriptTest.test_pipedc                  G   s   dS r   r	   r   r	   r	   r
   r   #   r   	sys.stdinc                 C   s2   d|j j_tg  | |j jj |jdd d S r   )bufferreadreturn_valuer   
assertTruecalledr   )r   
mock_stdinr    r	   r	   r
   
test_stdin#   s    
zScriptTest.test_stdinc                  G   s   dS r   r	   r   r	   r	   r
   r   ,   r   c              	   C   s^   t tj}d|jj_t|j_t 	d| | 
ttjj tg  W 5 Q R X |jdd d S )Nr   r%   Tr   )r   ZMocksysstdinr&   r'   r(   r   Zside_effectpatchassertRaisesr   r   r   )r   r    r+   r	   r	   r
   !test_stdin_py3_unicodedecodeerror,   s    
z,ScriptTest.test_stdin_py3_unicodedecodeerrorc                  G   s   dS r   r	   r   r	   r	   r
   r   9   r   c                 C   s   t d  d S )Nztesttext --optimize 0r   splitr   r	   r	   r
   test_optimize9   s    zScriptTest.test_optimizec                 C   s   t d  d S )Nztesttext --factory svgr2   r#   r	   r	   r
   test_factory>   s    zScriptTest.test_factoryz
sys.stderrc                 C   s   |  ttd  d S )Nztesttext --factory fish)r0   
SystemExitr   r3   r   Zmock_stderrr	   r	   r
   test_bad_factoryB   s    zScriptTest.test_bad_factoryargvzqr testtext outputc                 C   s
   t   d S r   r"   r   r	   r	   r
   test_sys_argvF   s    zScriptTest.test_sys_argvc                 C   s,   t j| jd}tdd|g t | d S )Nztest.pngr   z--output)r   pathjoinr   r   remove)r   Ztmpfiler	   r	   r
   test_outputK   s    zScriptTest.test_output)Znew_callablec              	   C   s6   |  t td  W 5 Q R X | d|  d S )Nz,testtext --factory pil --factory-drawer nopez*The selected factory has no drawer aliasesr0   r6   r   r3   ZassertIngetvaluer7   r	   r	   r
   test_factory_drawer_noneQ   s     z#ScriptTest.test_factory_drawer_nonec              	   C   s6   |  t td  W 5 Q R X | d|  d S )Nz-testtext --factory svg --factory-drawer sobadzsobad factory drawer not foundr?   r7   r	   r	   r
   test_factory_drawer_badZ   s    z"ScriptTest.test_factory_drawer_badc                 C   s   t d  d S )Nz.testtext --factory svg --factory-drawer circler2   r7   r	   r	   r
   test_factory_drawer`   s    zScriptTest.test_factory_drawerc                 C   sZ   |  tg d |  tdgd |  tdd |  tdd |  tdddd	 d S )
N AZABzA or BABCz	A, B or Cand)joinerz
A, B and C)assertEqualr   r   r	   r	   r
   test_commasd   s
    zScriptTest.test_commasN)__name__
__module____qualname__r   r   r   r/   r!   unittestZskipIfr   r$   r,   r1   r4   r5   r8   objectr-   r3   r:   r>   ioStringIOrA   rB   rC   rJ   r	   r	   r	   r
   r      sH   




r   )rP   r   r-   rN   tempfiler   r   Zqrcode.compat.pilr   Zqrcode.console_scriptsr   r   r   ZTestCaser   r	   r	   r	   r
   <module>   s   