o
    h=                     @   sT  d dl 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mZmZmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Z d)d* Z!d+d, Z"d-d. Z#d/d0 Z$d1d2 Z%d3d4 Z&d5d6 Z'd7d8 Z(d9d: Z)d;d< Z*d=d> Z+d?d@ Z,dS )A    N)mock)DataOverflowError)	BaseImage)UNICODE_TEXT)MODE_8BIT_BYTEMODE_ALPHA_NUMMODE_NUMBERQRDatac                  C   &   t jdd} | d | jdd d S N   versionaFfitqrcodeQRCodeadd_datamakeqr r   K/var/www/html/venv/lib/python3.10/site-packages/qrcode/tests/test_qrcode.py
test_basic      
r   c                  C   r
   )N   r   r   Fr   r   r   r   r   r   
test_large   r   r   c                   C   <   t t tjdd W d    d S 1 sw   Y  d S )N*   r   pytestraises
ValueErrorr   r   r   r   r   r   test_invalid_version      "r%   c                   C   r   )Nborderr!   r   r   r   r   test_invalid_border   r&   r*   c                  C   sR   t jdd} | d tt | jdd W d    d S 1 s"w   Y  d S )Nr   r   abcdefghijklmnoFr   )r   r   r   r"   r#   r   r   r   r   r   r   test_overflow$   s
   
"r,   c                  C   s.   t jdd} td}| | | jdd d S r   )r   r   r	   r   r   )r   datar   r   r   test_add_qrdata+   s   
r.   c                  C   sL   t  } | d |   | jdksJ | d |   | jdks$J d S )Nr   r   bcdefghijklmno   r   r   r   r   r   r   r   r   r   test_fit2   s   

r2   c                  C   D   t  } | jddd |   | jdksJ | jd jtks J d S )N"1234567890123456789012345678901234r   optimizer   )r   r   r   r   r   	data_listmoder   r   r   r   r   test_mode_number<   
   r9   c                  C   r3   )NABCDEFGHIJ1234567890r   r5   r   )r   r   r   r   r   r7   r8   r   r   r   r   r   test_mode_alphaD   r:   r<   c                  C   6   t  } | jddd |   | jd jtksJ d S )N,r   r5   r   r   r   r   r7   r8   r   r   r   r   r   test_regression_mode_commaL      r@   c                  C   sH   t  } | jdt dd |   | jdksJ | jd jtks"J d S )NabcABCr   r5   r   )	r   r   r   r   r   r   r7   r8   r   r   r   r   r   test_mode_8bitS   s
   rC   c                  C   r=   )NzABCDEFGHIJ1234567890
r   r5   r?   r   r   r   r   test_mode_8bit_newline[   rA   rD   c                   C   s   t t tjdd W d    n1 sw   Y  t t tjdd W d    n1 s1w   Y  t t tjdd W d    d S 1 sMw   Y  d S )Nstring pattern)mask_patternr'   r    )r"   r#   	TypeErrorr   r   r$   r   r   r   r   "test_make_image_with_wrong_patternb   s   "rH   c                  C   s   t  } tt d| _W d    n1 sw   Y  tt d| _W d    n1 s/w   Y  tt d| _W d    d S 1 sHw   Y  d S )NrE   r'      )r   r   r"   r#   rG   rF   r$   r   r   r   r   test_mask_pattern_setterm   s   "rJ   c                   C   sr   t t tjdd W d    n1 sw   Y  t t tjtd W d    d S 1 s2w   Y  d S )Nnot_BaseImageimage_factory)r"   r#   rG   r   r   AssertionErrordictr   r   r   r   test_qrcode_bad_factoryz   s   "rP   c                  C   sJ   G dd dt } tj| d}|t |  | jjsJ | jjs#J d S )Nc                   @   s   e Zd Ze Ze ZdS )z(test_qrcode_factory.<locals>.MockFactoryN)__name__
__module____qualname__r   Mockdrawrect	new_imager   r   r   r   MockFactory   s    rW   rL   )	r   r   r   r   r   
make_imagerV   calledrU   )rW   r   r   r   r   test_qrcode_factory   s   
rZ   c                  C   sV   t  } d}| j|dd |   dd | jD tttttgks"J | jdks)J d S )NA1abc12345def1HELLOa   r5   c                 S      g | ]}|j qS r   r8   .0dr   r   r   
<listcomp>       z!test_optimize.<locals>.<listcomp>r0   )	r   r   r   r   r7   r   r   r   r   r   textr   r   r   test_optimize   s   
rf   c                  C   sd   t  } d}| j|dd |   t| jdksJ dd | jD tttgks)J | jdks0J d S )NA1abc1234567def1HELLOa   r5      c                 S   r]   r   r^   r_   r   r   r   rb      rc   z'test_optimize_short.<locals>.<listcomp>r0   )	r   r   r   r   lenr7   r   r   r   rd   r   r   r   test_optimize_short   s   
rk   c                  C   sD   t  } d}| j|dd t| jdksJ | jd jtks J d S )NABCDEFGHIJK   r5   r   r   )r   r   r   rj   r7   r8   r   rd   r   r   r   test_optimize_longer_than_data   s
   rn   c                  C   s\   d} t  }||  |  |jdksJ t  }|j| dd |  |jdks,J d S )NA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOa
   r   r5      r1   )re   r   r   r   r   test_optimize_size   s   
rr   c                  C   s(   d} t j| }t|t| ksJ d S )Ns   hello)r   utilr	   repr)r-   data_objr   r   r   test_qrdata_repr   s   rv   c               	   C   s   t  } td.}d |j_tt | j	dd W d    n1 s$w   Y  |jj
s/J W d    d S 1 s:w   Y  d S )N
sys.stdoutT)tty)r   r   r   patchisattyreturn_valuer"   r#   OSErrorprint_asciirY   r   fake_stdoutr   r   r   test_print_ascii_stdout   s   "r   c                  C   s   t jdd} t }| j|d | }|  d}|d t| |ks&J t }dd |_| j|dd | }|  d	}|d t| |ksLJ d S )
Nr   r(   outu   █▀▀▀▀▀█c                   S      dS NTr   r   r   r   r   <lambda>       z"test_print_ascii.<locals>.<lambda>T)r   rx   u)   [48;5;232m[38;5;255m ▄▄▄▄▄ )	r   r   ioStringIOr}   getvaluecloserj   rz   )r   fprintedexpectedr   r   r   test_print_ascii   s   
r   c                  C   sZ   t  } td}d |j_tt| j	 |jj
sJ W d    d S 1 s&w   Y  d S )Nrw   )r   r   r   ry   rz   r{   r"   r#   r|   	print_ttyrY   r~   r   r   r   test_print_tty_stdout   s   "r   c                  C   s   t  } t }dd |_| j|d | }|  d}d}|d | }d}|d | | d	 | }|d t| |ks?J d S )
Nc                   S   r   r   r   r   r   r   r   r      r   z test_print_tty.<locals>.<lambda>r   z[1;47mz[40mz  z[0m
z.                                              z              )	r   r   r   r   rz   r   r   r   rj   )r   r   r   BOLD_WHITE_BGBLACK_BGWHITE_BLOCKEOLr   r   r   r   test_print_tty   s   
r   c                  C   s,   t jdd} | d |  | jksJ d S )Nr   r(   1r   r   r   
get_matrixmodulesr   r   r   r   test_get_matrix   s   
r   c                  C   sB   t jdd} | d dd |  dd D }|| jksJ d S )Nr   r(   r   c                 S   s   g | ]}|d d qS )r   r'   r   )r`   rowr   r   r   rb     s    z*test_get_matrix_border.<locals>.<listcomp>r'   r   )r   matrixr   r   r   test_get_matrix_border   s   
r   c                   C   r   )Nr'   )box_sizer!   r   r   r   r   "test_negative_size_at_construction  r&   r   c                  C   sF   t  } d| _tt |   W d    d S 1 sw   Y  d S )Nr'   )r   r   r   r"   r#   r$   rX   r   r   r   r   test_negative_size_at_usage  s
   
"r   )-r   unittestr   r"   r   qrcode.utilqrcode.exceptionsr   qrcode.image.baser   qrcode.tests.constsr   r   r   r   r	   r   r   r%   r*   r,   r.   r2   r9   r<   r@   rC   rD   rH   rJ   rP   rZ   rf   rk   rn   rr   rv   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sL    
	