a 9êdgD-ã@sddlmZddlZddlmZmZmZddlmZddl m Z m Z ddl m Z ddlZdd„Zd d „ZGd d „d ƒZGd d„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZedkr ejdddS)é)Ú searchengineN)Ú BooleanVarÚ StringVarÚTclError)Ú messagebox)ÚVarÚMbox)ÚTextcCstt_tt_tt_dS©N)rÚserrrr©r r ú?/usr/local/lib/python3.9/idlelib/idle_test/test_searchengine.pyÚ setUpModulesrcCstt_tt_tt_dSr )rr rrr r r r ÚtearDownModulesrc@seZdZdd„ZdS)ÚMockcOsdSr r )ÚselfÚargsÚkwargsr r r Ú__init__ óz Mock.__init__N)Ú__name__Ú __module__Ú __qualname__rr r r r rsrc@seZdZdd„ZdS)ÚGetTestcCsbtj}tt_zHtƒ}t |¡}| |tj¡| |j|¡| t |¡|¡W|t_n|t_0dSr )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)Nú1.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) Nr z Hello World!cSs |dkr dS|dkrdSt‚dS)Nú sel.firstr úsel.lastú1.12©r©Úsr r r ÚselLs  z0GetSelectionTest.test_get_selection..sel)r r+cSs|dkr dSt‚dS©NÚinsertú1.5r,r-r r r ÚmarkTs z1GetSelectionTest.test_get_selection..mark)r2r2)ÚmockTextr1Úindexr$r Z get_selection)rÚtextr/r3r r r Útest_get_selectionFs z#GetSelectionTest.test_get_selectionN)rrrr7r 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)é ér;é )éér>é)r$ÚreÚcompiler Zsearch_reverseÚlenÚspan)rÚEqualÚlineÚprogr r r Útest_search_reverse^s z%ReverseSearchTest.test_search_reverseN)rrrrGr r r r r8\sr8c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚSearchEngineTestcCstjdd|_dS)N)r)r rrr&r 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ÚÚhelloFr!Tr)rr$ÚgetpatÚsetpatZisreÚrevarÚsetZiscaseÚcasevarZiswordÚwordvarZiswrapÚwrapvarZisbackÚbackvar©rrrDr r r Ú test_is_getqs(      zSearchEngineTest.test_is_getcCsJ|j}| d¡| | ¡d¡|j d¡| d¡| | ¡d¡dS)Nú\sr!ú\\s)rZ setcookedpatr$rLrNrO)rrr r r Útest_setcookedpats    z"SearchEngineTest.test_setcookedpatcCsŽ|j}|j}|| ¡dƒ| d¡|| ¡dƒ|j d¡|| ¡dƒ|j d¡| d¡|| ¡dƒ|j d¡|| ¡dƒdS)NrJrKTz \bhello\bFrVrW)rr$Z getcookedpatrMrQrOrNrTr r r Útest_getcookedpat•s     z"SearchEngineTest.test_getcookedpatcCs¼|j}|j}| d¡| ¡}||jt dtj¡jƒ|j  d¡| ¡}||jt d¡jdƒ| d¡|| ¡dƒ|t j j dƒ| d¡|j   d¡|| ¡dƒ|t j j dƒdS)NZHellor!rrJzError: Empty regular expressionú+z-Error: nothing to repeat Pattern: + Offset: 0)rr$rMZgetprogÚpatternr@rAÚ IGNORECASErPrOrÚ showerrorÚmessagerN)rrrDZtemppatr 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-zr=z Offset: 5)rr]r$rZ report_errorÚtitler^)rr]rDÚpatÚmsgZexpected_messager r r Útest_report_errorºs    z"SearchEngineTest.test_report_errorN) rrrrIrUrXrYr_rcr r r r rHis rHc@s eZdZedd„ƒZdd„ZdS)Ú SearchTestcCsNtƒ|_d}|j d|¡t d¡|_t d¡|_dd„|j_ dd„|j_ dS)Nú&First line Line with target Last line r ÚtargetcWsd|fS)NÚfr ©rr r r ÚÜrz'SearchTest.setUpClass..cWsd|fS)NÚbr rhr r r riÝr) r4r6r1r@rArar rrÚsearch_forwardÚsearch_backward©ÚclsZ 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‚dSr0r,r-r r r r3ïs z$SearchTest.test_search..markrgr!r=TFrjcSs |dkr dS|dkrdSt‚dS)Nr)z2.10r*z2.16r,r-r r r r/üs  z#SearchTest.test_search..selééé ) r$rZ search_textr6raZpatvarrOr5rRrS)rrDrÚsearchr6rar3r/r r r Ú test_searchäs.         "  zSearchTest.test_searchN)rrrÚ classmethodrortr r r r rdËs rdc@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 )r5r r r rirz0ForwardBackwardTest.setUpClass..rer rf)rp)rrrqZxyzz\w*) r rrr4r6r5r1r@rAraÚresÚfailpatÚemptypatrmr r r ros  ÿ  zForwardBackwardTest.setUpClasscsd‡‡fdd„ }|S)Nrcs0ˆˆj|||||ƒ}|r,|d|d ¡fS|S)Nrr!)r6rC)rarEÚcolÚwrapÚokrw©Úfuncrr r rs#sz/ForwardBackwardTest.make_search..search)rr )rr~rsr r}r Ú make_search"szForwardBackwardTest.make_searchcCs¼|j}| |jj¡}|j}|||dddƒ|jƒ|||dddƒ|jƒ|||dddƒdƒ|||dddƒ|jƒ|||jdddƒdƒ|||jddddd d ƒ|||jdddƒ|jƒdS) Nr!rTéFrprré ©r|©rp)rr)r$rrrkrarwrxry)rrDZforwardrar 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) Nr€r=TrprFrqrrrr‚rƒ)rp)r=r)r$rrrlrarwrxry)rrDZbackwardrar r r Útest_search_backward:sz(ForwardBackwardTest.test_search_backwardN)rrrrurorr„r…r r r r rvs  rvÚ__main__rp)Ú verbosity)Zidlelibrr ZunittestÚtkinterrrrrZidlelib.idle_test.mock_tkrrr r4r@rrrZTestCaserrr(r8rHrdrvrÚmainr r r r Ús$    # b=C