<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
 f-                 @   s  d Z ddlmZ ddlZddlmZmZmZ ddl	j
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   H/opt/alt/python36/lib64/python3.6/idlelib/idle_test/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__    s    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 j|}| j|t j | j|j| | jt j|| 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   | j tjdd | j tjdd	 | jttjd | jttjd d S )
Nz1.0   r   z1.11   z1.0 lineendend)r   r   )r   r   )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  }|jdd dd }||_| jtj|d	 dd }||_| jtj|d
 d S )N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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1.5)r%   r(   )r+   r+   )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jd}|tj||t|j d	 |tj||dj d
 |tj||dj d |tj||dj d |tj||dd  d S )NzHere is an 'is' test text.is                  )r2   r3   )r2   r3   )r5   r6   )r5   r6   )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   r0   \   s   r0   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}||j d |jd ||j d ||j d |jjd ||j d ||j d |jjd ||j d ||j	 d |j
jd ||j	 d ||j d |jjd ||j d ||j d |jjd ||j 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 }|jd | j|j d |jjd |jd | j|j d d S )Nz\sr   z\\s)r   Zsetcookedpatr!   rD   rF   rG   )r   r   r   r   r   test_setcookedpat   s    

z"SearchEngineTest.test_setcookedpatc             C   s   | j }| j}||j d |jd ||j d |jjd ||j d |jjd |jd ||j d |jjd ||j d d S )NrB   rC   Tz	\bhello\bFz\sz\\s)r   r!   ZgetcookedpatrE   rI   rG   rF   )r   r   r<   r   r   r   test_getcookedpat   s    

z"SearchEngineTest.test_getcookedpatc             C   s   | j }| j}|jd |j }||jtjdtjj |jj	d |j }||jtjdjd |jd ||j d  |jd |j
j	d ||j d  | jtjjd d S )NZHellor   r   rB   +z1Error: nothing to repeat at position 0
Pattern: +)r   r!   rE   Zgetprogpatternr8   r9   
IGNORECASErH   rG   rF   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j||d  ||jd d| d }||j| || 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-zr5   z

Offset: 5)r   rR   r!   r   Zreport_errortitlerS   )r   rR   r<   patmsgZexpected_messager   r   r   test_report_error   s    z"SearchEngineTest.test_report_errorN)	r   r   r   rA   rL   rM   rN   rT   rX   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jd| tjd| _tj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>   s    z'SearchTest.setUpClass.<locals>.<lambda>c              W   s   d| fS )Nbr   )r   r   r   r   r\      s    )r,   r.   r)   r8   r9   rV   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jd  |||d  dd }||_||||d||ddddff |jjd ||||d||ddddff |jjd |j	jd ||||d||ddddff |j	jd d	d
 }||_||||d||ddddff ||||dd||ddddff |j	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>.markr[   r   r5   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.   rV   ZpatvarrG   r-   rJ   rK   )r   r<   r   searchr.   rV   r*   r'   r   r   r   test_search   s.        " zSearchTest.test_searchN)r   r   r   classmethodrb   rg   r   r   r   r   rY      s   rY   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 jd | _t | _dd | j_d}| jjd| tjd| _	d| _
tjd	| _tjd
| _d S )Nc             S   s   dS )Nz4.0r   )r-   r   r   r   r\     s    z0ForwardBackwardTest.setUpClass.<locals>.<lambda>z&First line
Line with target
Last line
z1.0rZ   rc   re   rd   Zxyzz\w*re   rd   )rc   rj   )r	   r   r   r,   r.   r-   r)   r8   r9   rV   resfailpatemptypat)r`   ra   r   r   r   rb     s    zForwardBackwardTest.setUpClassc                s   d fdd	}|S )Nr   c                s0    j | ||||}|r,|d |d j fS |S )Nr   r   )r.   r;   )rV   r=   colZwrapokrk   )funcr   r   r   rf   !  s    z/ForwardBackwardTest.make_search.<locals>.search)r   r   )r   rp   rf   r   )rp   r   r   make_search   s    zForwardBackwardTest.make_searchc             C   s   | j }| 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   Frc   re   	   )ro   rs   rs   )rc   rt   )r!   rq   r   r^   rV   rk   rl   rm   )r   r<   ZforwardrV   r   r   r   test_search_forward'  s    z'ForwardBackwardTest.test_search_forwardc             C   s   | j }| 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 )Nrr   r5   Trc   r   Frd   rs   re   )ro   rs   rs   )rc   rv   r5   rs   )rc   rw   )r!   rq   r   r_   rV   rk   rl   rm   )r   r<   ZbackwardrV   r   r   r   test_search_backward8  s    z(ForwardBackwardTest.test_search_backwardN)r   r   r   rh   rb   rq   ru   rx   r   r   r   r   ri     s   ri   __main__rc   )	verbosity)__doc__Zidlelibr   r	   ZunittestZtkinterr   r   r   Ztkinter.messageboxZ
messageboxr
   Zidlelib.idle_test.mock_tkr   r   r   r,   r8   r   r   r   ZTestCaser   r   r$   r0   r@   rY   ri   r   mainr   r   r   r   <module>   s&   
	#`=C
