B YI~d-�@sddlmZddlZddlmZmZmZddlm Z ddl m Z m Z ddl mZddlZdd�Zdd �ZGd d �d �ZGd d �d ej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zedk�r ejdd�dS)�)� searchengineN)� BooleanVar� StringVar�TclError)�Var�Mbox)�TextcCstt_tt_tt_dS)N)r�serrr� tkMessageBox�r r �H/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_searchengine.py� setUpModulesr cCstt_tt_tt_dS)N)rr rr r r r r �tearDownModulesrc@seZdZdd�ZdS)�MockcOsdS)Nr )�self�args�kwargsr r r �__init__ �z Mock.__init__N)�__name__� __module__� __qualname__rr r r r rsrc@seZdZdd�ZdS)�GetTestcCs\tj}tt_zBt�}t�|�}|�|tj�|�|j|�|�t�|�|�Wd|t_XdS)N)r � SearchEnginer�getZassertIsInstanceZassertIsZ _searchengine)rZ saved_Engine�root�enginer r r �test_get$s zGetTest.test_getN)rrrrr r r r r"src@seZdZdd�ZdS)�GetLineColTestcCsH|�t�d�d�|�t�d�d�|�ttjd�|�ttjd�dS)Nz1.0)�rz1.11)r� z 1.0 lineend�end)� assertEqualr Z get_line_colZ assertRaises� ValueError)rr r r �test_get_line_col2sz GetLineColTest.test_get_line_colN)rrrr$r r r r r0src@seZdZdd�ZdS)�GetSelectionTestcCsVt�}|�dd�dd�}||_|�t�|�d�dd�}||_|�t�|�d�dS) Nz1.0z Hello World!cSs |dkr dS|dkrdSt�dS)Nz sel.firstz1.0zsel.lastz1.12)r)�sr r r �selLs z0GetSelectionTest.test_get_selection..sel)z1.0z1.12cSs|dkr dSt�dS)N�insertz1.5)r)r&r r r �markTsz1GetSelectionTest.test_get_selection..mark)z1.5z1.5)�mockTextr(�indexr"r Z get_selection)r�textr'r)r r r �test_get_selectionFs z#GetSelectionTest.test_get_selectionN)rrrr-r r r r r%9s r%c@seZdZdd�ZdS)�ReverseSearchTestcCs�|j}d}t�d�}|t�||t|����d�|t�||d���d�|t�||d���d�|t�||d���d�|t�||d�d�dS) NzHere is an 'is' test text.�is)� �r1� )��r4�)r"�re�compiler Zsearch_reverse�len�span)r�Equal�line�progr r r �test_search_reverse^s z%ReverseSearchTest.test_search_reverseN)rrrr=r r r r r.\sr.c@s<eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd S)�SearchEngineTestcCstjdd�|_dS)N)r)r rr)rr r r �setUplszSearchEngineTest.setUpcCs�|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�dS)N��helloFrTr)rr"�getpat�setpatZisre�revar�setZiscase�casevarZisword�wordvarZiswrap�wrapvarZisback�backvar)rrr:r r r � test_is_getqs(      zSearchEngineTest.test_is_getcCsJ|j}|�d�|�|��d�|j�d�|�d�|�|��d�dS)Nz\srz\\s)rZ setcookedpatr"rBrDrE)rrr r r �test_setcookedpat�s    z"SearchEngineTest.test_setcookedpatcCs�|j}|j}||��d�|�d�||��d�|j�d�||��d�|j�d�|�d�||��d�|j�d�||��d�dS)Nr@rATz \bhello\bFz\sz\\s)rr"Z getcookedpatrCrGrErD)rrr:r r r �test_getcookedpat�s     z"SearchEngineTest.test_getcookedpatcCs�|j}|j}|�d�|��}||jt�dtj�j�|j� d�|��}||jt�d�jd�|�d�||��d�|�d�|j � d�||��d�|�t j j d�dS)NZHellorrr@�+z1Error: nothing to repeat at position 0 Pattern: +)rr"rCZgetprog�patternr6r7� IGNORECASErFrErDr� showerror�message)rrr:Ztemppatr r r � test_getprog�s      zSearchEngineTest.test_getprogcCs�tj}|j}d}d}||j�||�d�||jd�d|d}||j|�||j�||d�d�||jd�|d7}||j|�dS)Nz[a-zz$unexpected end of regular expressionzRegular expression errorzError: z Pattern: [a-zr3z Offset: 5)rrPr"rZ report_error�titlerQ)rrPr:�pat�msgZexpected_messager r r �test_report_error�s    z"SearchEngineTest.test_report_errorN) rrrr?rJrKrLrRrVr r r r r>is r>c@s eZdZedd��Zdd�ZdS)� SearchTestcCsNt�|_d}|j�d|�t�d�|_t�d�|_dd�|j_ dd�|j_ dS)Nz&First line Line with target Last line z1.0�targetcWsd|fS)N�fr )rr r r ��rz'SearchTest.setUpClass..cWsd|fS)N�br )rr r r rZ�r) r*r,r(r6r7rTr rr�search_forward�search_backward)�cls� test_textr r r � setUpClass�s   zSearchTest.setUpClassc Csx|j}|j}|j}|j}|j}|j�d�|||�d�dd�}||_||||�d||ddddff�|j�d�||||�d||ddddff�|j�d�|j �d�||||�d||ddddff�|j �d�d d �}||_||||�d||d d ddff�||||d�d||d d ddff�|j �d�||||�d||d d ddff�||||d�d||d d ddff�dS)NcSs|dkr dSt�dS)Nr(z1.5)r)r&r r r r)�sz$SearchTest.test_search..markrYrr3TFr[cSs |dkr dS|dkrdSt�dS)Nz sel.firstz2.10zsel.lastz2.16)r)r&r r r r'�s z#SearchTest.test_search..sel��� ) r"rZ search_textr,rTZpatvarrEr+rHrI)rr:r�searchr,rTr)r'r r r � test_search�s.         "  zSearchTest.test_searchN)rrr� classmethodr`rer r r r rW�s rWc@s0eZdZedd��Zdd�Zdd�Zdd�Zd S) �ForwardBackwardTestcCs`t�d�|_t�|_dd�|j_d}|j�d|�t�d�|_ d|_ t�d�|_ t�d�|_ dS) NcSsdS)Nz4.0r )r+r r r rZrz0ForwardBackwardTest.setUpClass..z&First line Line with target Last line z1.0rX)ra)rcrbZxyzz\w*) r rrr*r,r+r(r6r7rT�res�failpat�emptypat)r^r_r r r r` s    zForwardBackwardTest.setUpClasscsd��fdd� }|S)Nrcs0��j|||||�}|r,|d|d��fS|S)Nrr)r,r9)rTr;�col�wrap�okrh)�funcrr r rd!sz/ForwardBackwardTest.make_search..search)rr )rrnrdr )rnrr � make_search szForwardBackwardTest.make_searchcCs�|j}|�|jj�}|j}|||ddd�|j�|||ddd�|j�|||ddd�d�|||ddd�|j�|||jddd�d�|||jddddd �d �|||jddd�|j�dS) NrrT�Frarc� )rm)ra)rqrq)r"rorr\rTrhrirj)rr:ZforwardrTr r r �test_search_forward'sz'ForwardBackwardTest.test_search_forwardcCs�|j}|�|jj�}|j}|||ddd�|j�|||ddd�|j�|||ddd�d�|||ddd�|j�|||jddd�d�|||jdd ddd �d �|||jddd�d �dS) Nrpr3TrarFrbrqrc)rm)ra)rqrq)ra)r3rq)r"rorr]rTrhrirj)rr:ZbackwardrTr r r �test_search_backward8sz(ForwardBackwardTest.test_search_backwardN)rrrrfr`rorrrsr r r r rgs rg�__main__ra)� verbosity)Zidlelibrr ZunittestZtkinterrrrZtkinter.messageboxZ messageboxr Zidlelib.idle_test.mock_tkrrrr*r6r rrZTestCaserrr%r.r>rWrgr�mainr r r r �s$    # `=C