B
    v9a-  ã               @   s  d Z ddlmZ ddlZddlmZmZmZ ddl	m
Z ddlmZmZ ddlmZ ddlZdd„ Zd	d
„ ZG dd„ dƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkrejdd dS )z Test searchengine, coverage 99%.é    )ÚsearchengineN)Ú
BooleanVarÚ	StringVarÚTclError)ÚVarÚMbox)ÚTextc               C   s   t t_t t_tt_d S )N)r   Úser   r   r   ÚtkMessageBox© r   r   ú'/usr/lib/python3.7/test_searchengine.pyÚsetUpModule   s    r   c               C   s   t t_ tt_tt_d S )N)r   r	   r   r
   r   r   r   r   ÚtearDownModule   s    r   c               @   s   e Zd Zdd„ ZdS )ÚMockc             O   s   d S )Nr   )ÚselfÚargsÚkwargsr   r   r   Ú__init__    ó    zMock.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd„ ZdS )ÚGetTestc             C   s\   t j}tt _zBtƒ }t  |¡}|  |t j¡ |  |j|¡ |  t  |¡|¡ W d |t _X d S )N)r	   ÚSearchEnginer   ÚgetZassertIsInstanceZassertIsZ_searchengine)r   Zsaved_EngineÚrootÚenginer   r   r   Útest_get$   s    
zGetTest.test_getN)r   r   r   r   r   r   r   r   r   "   s   r   c               @   s   e Zd Zdd„ ZdS )ÚGetLineColTestc             C   sH   |   t d¡d¡ |   t d¡d¡ |  ttjd¡ |  ttjd¡ d S )Nz1.0)é   r   z1.11)r   é   z1.0 lineendÚend)ÚassertEqualr	   Zget_line_colZassertRaisesÚ
ValueError)r   r   r   r   Útest_get_line_col2   s    z GetLineColTest.test_get_line_colN)r   r   r   r$   r   r   r   r   r   0   s   r   c               @   s   e Zd Zdd„ ZdS )ÚGetSelectionTestc             C   sV   t ƒ }| dd¡ dd„ }||_|  t |¡d¡ dd„ }||_|  t |¡d¡ d S )	Nz1.0zHello World!c             S   s    | dkrdS | dkrdS t ‚d S )Nz	sel.firstz1.0zsel.lastz1.12)r   )Úsr   r   r   ÚselL   s
      z0GetSelectionTest.test_get_selection.<locals>.sel)z1.0z1.12c             S   s   | dkrdS t ‚d S )NÚinsertz1.5)r   )r&   r   r   r   ÚmarkT   s     z1GetSelectionTest.test_get_selection.<locals>.mark)z1.5z1.5)ÚmockTextr(   Úindexr"   r	   Zget_selection)r   Útextr'   r)   r   r   r   Útest_get_selectionF   s    z#GetSelectionTest.test_get_selectionN)r   r   r   r-   r   r   r   r   r%   9   s   r%   c               @   s   e Zd Zdd„ ZdS )ÚReverseSearchTestc             C   s   | j }d}t d¡}|t ||t|ƒ¡ ¡ dƒ |t ||d¡ ¡ dƒ |t ||d¡ ¡ dƒ |t ||d¡ ¡ dƒ |t ||d¡d ƒ d S )	NzHere is an 'is' test text.Úis)é   é   r1   é   )é   é   r4   é   )r"   ÚreÚcompiler	   Zsearch_reverseÚlenÚspan)r   ÚEqualÚlineÚprogr   r   r   Útest_search_reverse^   s    
z%ReverseSearchTest.test_search_reverseN)r   r   r   r=   r   r   r   r   r.   \   s   r.   c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚSearchEngineTestc             C   s   t jd d| _d S )N)r   )r	   r   r   )r   r   r   r   ÚsetUpl   s    zSearchEngineTest.setUpc             C   sþ   | j }| j}|| ¡ dƒ | d¡ || ¡ dƒ || ¡ dƒ |j d¡ || ¡ dƒ || ¡ dƒ |j d¡ || ¡ dƒ || 	¡ dƒ |j
 d¡ || 	¡ dƒ || ¡ dƒ |j d¡ || ¡ dƒ || ¡ dƒ |j d¡ || ¡ dƒ d S )NÚ ÚhelloFr   Tr   )r   r"   ÚgetpatÚsetpatZisreÚrevarÚsetZiscaseÚcasevarZiswordÚwordvarZiswrapÚwrapvarZisbackÚbackvar)r   r   r:   r   r   r   Útest_is_getq   s(    
zSearchEngineTest.test_is_getc             C   sJ   | j }| d¡ |  | ¡ d¡ |j d¡ | d¡ |  | ¡ d¡ d S )Nz\sr   z\\s)r   Zsetcookedpatr"   rB   rD   rE   )r   r   r   r   r   Útest_setcookedpat   s    

z"SearchEngineTest.test_setcookedpatc             C   sŽ   | j }| j}|| ¡ dƒ | d¡ || ¡ dƒ |j d¡ || ¡ dƒ |j d¡ | d¡ || ¡ dƒ |j d¡ || ¡ dƒ d S )Nr@   rA   Tz	\bhello\bFz\sz\\s)r   r"   ZgetcookedpatrC   rG   rE   rD   )r   r   r:   r   r   r   Útest_getcookedpat•   s    

z"SearchEngineTest.test_getcookedpatc             C   s°   | j }| j}| d¡ | ¡ }||jt dtj¡jƒ |j 	d¡ | ¡ }||jt d¡jdƒ | d¡ || ¡ d ƒ | d¡ |j
 	d¡ || ¡ d ƒ |  tjjd¡ d S )NZHellor   r   r@   ú+z1Error: nothing to repeat at position 0
Pattern: +)r   r"   rC   ZgetprogÚpatternr6   r7   Ú
IGNORECASErF   rE   rD   r   Ú	showerrorÚmessage)r   r   r:   Ztemppatr   r   r   Útest_getprog¥   s    



zSearchEngineTest.test_getprogc             C   s†   t j}| j}d}d}|| j ||¡d ƒ ||jdƒ d| d }||j|ƒ || j ||d¡d ƒ ||jdƒ |d7 }||j|ƒ d S )Nz[a-zz$unexpected end of regular expressionzRegular expression errorzError: z
Pattern: [a-zr3   z

Offset: 5)r   rP   r"   r   Zreport_errorÚtitlerQ   )r   rP   r:   ÚpatÚmsgZexpected_messager   r   r   Útest_report_error¸   s    z"SearchEngineTest.test_report_errorN)	r   r   r   r?   rJ   rK   rL   rR   rV   r   r   r   r   r>   i   s   r>   c               @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú
SearchTestc             C   sN   t ƒ | _d}| j d|¡ t d¡| _t d ¡| _dd„ | j_	dd„ | j_
d S )Nz&First line
Line with target
Last line
z1.0Útargetc              W   s   d| fS )NÚfr   )r   r   r   r   Ú<lambda>Ú   r   z'SearchTest.setUpClass.<locals>.<lambda>c              W   s   d| fS )NÚbr   )r   r   r   r   rZ   Û   r   )r*   r,   r(   r6   r7   rT   r	   r   r   Úsearch_forwardÚsearch_backward)ÚclsÚ	test_textr   r   r   Ú
setUpClassÌ   s    zSearchTest.setUpClassc          	   C   sx  | j }| j}|j}| j}| j}|j d ¡ |||ƒd ƒ dd„ }||_||||ƒd||ddddffƒ |j d¡ ||||ƒd||ddddffƒ |j d¡ |j	 d¡ ||||ƒd||ddddffƒ |j	 d¡ d	d
„ }||_||||ƒd||ddddffƒ ||||dƒd||ddddffƒ |j	 d¡ ||||ƒd||ddddffƒ ||||dƒd||ddddffƒ d S )Nc             S   s   | dkrdS t ‚d S )Nr(   z1.5)r   )r&   r   r   r   r)   í   s     z$SearchTest.test_search.<locals>.markrY   r   r3   TFr[   c             S   s    | dkrdS | dkrdS t ‚d S )Nz	sel.firstz2.10zsel.lastz2.16)r   )r&   r   r   r   r'   ú   s
      z#SearchTest.test_search.<locals>.selé   é   é
   )
r"   r   Zsearch_textr,   rT   ZpatvarrE   r+   rH   rI   )r   r:   r   Úsearchr,   rT   r)   r'   r   r   r   Útest_searchâ   s.        " zSearchTest.test_searchN)r   r   r   Úclassmethodr`   re   r   r   r   r   rW   É   s   rW   c               @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚForwardBackwardTestc             C   s`   t  d ¡| _tƒ | _dd„ | j_d}| j d|¡ t d¡| _	d| _
t d¡| _t d¡| _d S )	Nc             S   s   dS )Nz4.0r   )r+   r   r   r   rZ     r   z0ForwardBackwardTest.setUpClass.<locals>.<lambda>z&First line
Line with target
Last line
z1.0rX   )ra   )rc   rb   Zxyzz\w*)r	   r   r   r*   r,   r+   r(   r6   r7   rT   ÚresÚfailpatÚemptypat)r^   r_   r   r   r   r`     s    zForwardBackwardTest.setUpClassc                s   d‡ ‡fdd„	}|S )Nr   c                s0   ˆ ˆj | ||||ƒ}|r,|d |d  ¡ fS |S )Nr   r   )r,   r9   )rT   r;   ÚcolÚwrapÚokrh   )Úfuncr   r   r   rd   !  s    z/ForwardBackwardTest.make_search.<locals>.search)r   r   )r   rn   rd   r   )rn   r   r   Úmake_search   s    zForwardBackwardTest.make_searchc             C   s¼   | j }|  | jj¡}| j}|||dddƒ| jƒ |||dddƒ| jƒ |||dddƒd ƒ |||dddƒ| jƒ ||| jdddƒd ƒ ||| jddddd	d
ƒ ||| jdddƒ| jƒ d S )Nr   r   Té   Fra   rc   é	   )rm   )ra   )rq   rq   )r"   ro   r   r\   rT   rh   ri   rj   )r   r:   ZforwardrT   r   r   r   Útest_search_forward'  s    z'ForwardBackwardTest.test_search_forwardc             C   sº   | j }|  | jj¡}| j}|||dddƒ| jƒ |||dddƒ| jƒ |||dddƒd ƒ |||dddƒ| jƒ ||| jdddƒd ƒ ||| jdd	ddd
dƒ ||| jdddƒdƒ d S )Nrp   r3   Tra   r   Frb   rq   rc   )rm   )ra   )rq   rq   )ra   )r3   rq   )r"   ro   r   r]   rT   rh   ri   rj   )r   r:   ZbackwardrT   r   r   r   Útest_search_backward8  s    z(ForwardBackwardTest.test_search_backwardN)r   r   r   rf   r`   ro   rr   rs   r   r   r   r   rg     s   rg   Ú__main__ra   )Ú	verbosity)Ú__doc__Zidlelibr   r	   ZunittestZtkinterr   r   r   Ztkinter.messageboxZ
messageboxr
   Zidlelib.idle_test.mock_tkr   r   r   r*   r6   r   r   r   ZTestCaser   r   r%   r.   r>   rW   rg   r   Úmainr   r   r   r   Ú<module>   s&   	#`=C
