§
    Ètºfu  ã                  óâ   — d 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mZ ddlmZ  G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )zJ
Tests for the insults windowing module, L{twisted.conch.insults.window}.
é    )Úannotations)ÚCallable)ÚServerProtocol)ÚScrolledAreaÚ	SelectionÚ
TextOutputÚ	TopWindowÚWidget)ÚTestCasec                  ó   — e Zd ZdZdd„ZdS )ÚTopWindowTestszB
    Tests for L{TopWindow}, the root window container class.
    ÚreturnÚNonec                ó*  ‡— g Šg }t          ˆfd„|j        ¦  «        }|                      ‰g ¦  «         |                      |g ¦  «         |                     ¦   «          |                      ‰g ¦  «         |                      t	          |¦  «        d¦  «         |                     ¦   «          |                      ‰g ¦  «         |                      t	          |¦  «        d¦  «          |                     ¦   «         ¦   «          |                      t	          ‰¦  «        d¦  «         |                      |g ¦  «         |                     ¦   «          |                      t	          ‰¦  «        d¦  «         |                      t	          |¦  «        d¦  «         dS )z”
        Verify that L{TopWindow.repaint} schedules an actual paint to occur
        using the scheduling object passed to its initializer.
        c                 ó.   •— ‰                       d ¦  «        S ©N)Úappend)Úpaintss   €ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/test/test_window.pyú<lambda>z5TopWindowTests.test_paintScheduling.<locals>.<lambda>   s   ø€  §¢¨tÑ!4Ô!4€ ó    é   N)r	   r   ÚassertEqualÚrepaintÚlenÚpop)ÚselfÚ	scheduledÚrootr   s      @r   Útest_paintSchedulingz#TopWindowTests.test_paintScheduling   sr  ø€ ð
  ˆØ02ˆ	ÝÐ4Ð4Ð4Ð4°iÔ6FÑGÔGˆð 	×Ò˜ Ñ$Ô$Ð$Ø×Ò˜ BÑ'Ô'Ð'ð 	�Š‰ŒˆØ×Ò˜ Ñ$Ô$Ð$Ø×Ò�˜Y™œ¨Ñ+Ô+Ð+ð 	�Š‰ŒˆØ×Ò˜ Ñ$Ô$Ð$Ø×Ò�˜Y™œ¨Ñ+Ô+Ð+ð 	ˆ	�Š‰ŒÑÔÐØ×Ò�˜V™œ aÑ(Ô(Ð(Ø×Ò˜ BÑ'Ô'Ð'ð 	�Š‰ŒˆØ×Ò�˜V™œ aÑ(Ô(Ð(Ø×Ò�˜Y™œ¨Ñ+Ô+Ð+Ð+Ð+r   N©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    © r   r   r   r      s2   € € € € € ðð ð!,ð !,ð !,ð !,ð !,ð !,r   r   c                  ó   — e Zd ZdZdd„ZdS )ÚScrolledAreaTestsz—
    Tests for L{ScrolledArea}, a widget which creates a viewport containing
    another widget and can reposition that viewport using scrollbars.
    r   r   c                óÀ   — t          ¦   «         }t          |¦  «        }|                      |j        |j        ¦  «         |                      |j        j        |¦  «         dS )zÌ
        The parent of the widget passed to L{ScrolledArea} is set to a new
        L{Viewport} created by the L{ScrolledArea} which itself has the
        L{ScrolledArea} instance as its parent.
        N)r   r   ÚassertIsÚparentÚ	_viewport)r   ÚwidgetÚscrolleds      r   Útest_parentzScrolledAreaTests.test_parentB   sS   € õ ‘”ˆÝ Ñ'Ô'ˆØ�Š�f”m XÔ%7Ñ8Ô8Ð8Ø�Š�hÔ(Ô/°Ñ:Ô:Ð:Ð:Ð:r   Nr!   )r"   r#   r$   r%   r/   r&   r   r   r(   r(   <   s2   € € € € € ðð ð
	;ð 	;ð 	;ð 	;ð 	;ð 	;r   r(   c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )ÚSelectionTestszC
    Change focused entry in L{Selection} using function keys.
    r   r   c                ó’   — d„ t          d¦  «        D ¦   «         }t          |d¦  «        | _        d| j        _        d| j        _        dS )zg
        Create L{ScrolledArea} widget with 10 elements and position selection to 5th element.
        c                ó:   — g | ]}|›                       d ¦  «        ‘ŒS )Úascii)Úencode)Ú.0Ú_nums     r   ú
<listcomp>z(SelectionTests.setUp.<locals>.<listcomp>W   s(   € ÐLÐLÐL¸$˜t˜I×,Ò,¨WÑ5Ô5ÐLÐLÐLr   é
   Né   )Úranger   r-   ÚheightÚfocusedIndex)r   Úseqs     r   ÚsetUpzSelectionTests.setUpS   sI   € ð MÐLÅ%ÈÁ)Ä)ÐLÑLÔLˆÝ  TÑ*Ô*ˆŒØˆŒÔØ#$ˆŒÔ Ð Ð r   c                ó�   — | j                              t          j        d¦  «         |                      | j         j        d¦  «         dS )zO
        Send DOWN_ARROW to select element just below the current one.
        Né   )r-   ÚkeystrokeReceivedr   Ú
DOWN_ARROWr*   r=   ©r   s    r   Útest_selectionDownArrowz&SelectionTests.test_selectionDownArrow\   s>   € ð 	Œ×%Ò%¥nÔ&?ÀÑFÔFÐFØ�Š�d”kÔ.°Ñ2Ô2Ð2Ð2Ð2r   c                ó�   — | j                              t          j        d¦  «         |                      | j         j        d¦  «         dS )zM
        Send UP_ARROW to select element just above the current one.
        Né   )r-   rB   r   ÚUP_ARROWr*   r=   rD   s    r   Útest_selectionUpArrowz$SelectionTests.test_selectionUpArrowc   s>   € ð 	Œ×%Ò%¥nÔ&=¸tÑDÔDÐDØ�Š�d”kÔ.°Ñ2Ô2Ð2Ð2Ð2r   c                ó�   — | j                              t          j        d¦  «         |                      | j         j        d¦  «         dS )zQ
        Send PGDN to select element one page down (here: last element).
        Né	   )r-   rB   r   ÚPGDNr*   r=   rD   s    r   Útest_selectionPGDNz!SelectionTests.test_selectionPGDNj   ó>   € ð 	Œ×%Ò%¥nÔ&9¸4Ñ@Ô@Ð@Ø�Š�d”kÔ.°Ñ2Ô2Ð2Ð2Ð2r   c                ó�   — | j                              t          j        d¦  «         |                      | j         j        d¦  «         dS )zP
        Send PGUP to select element one page up (here: first element).
        Nr   )r-   rB   r   ÚPGUPr*   r=   rD   s    r   Útest_selectionPGUPz!SelectionTests.test_selectionPGUPq   rN   r   Nr!   )	r"   r#   r$   r%   r?   rE   rI   rM   rQ   r&   r   r   r1   r1   N   s‚   € € € € € ðð ð%ð %ð %ð %ð3ð 3ð 3ð 3ð3ð 3ð 3ð 3ð3ð 3ð 3ð 3ð3ð 3ð 3ð 3ð 3ð 3r   r1   c                  óJ   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„Zdd„Z	dd„Z
dS )ÚRecordingWidgetzn
    A dummy Widget implementation to test handling of function keys by
    recording keyReceived events.
    r   r   c                ó<   — t          j        | ¦  «         g | _        d S r   )r
   Ú__init__Ú	triggeredrD   s    r   rU   zRecordingWidget.__init__   s   € ÝŒ˜ÑÔÐØ$&ˆŒˆˆr   ÚmodifierÚstrc                ó:   — | j                              d¦  «         d S )NÚF1©rV   r   ©r   rW   s     r   Úfunc_F1zRecordingWidget.func_F1ƒ   s   € ØŒ×Ò˜dÑ#Ô#Ð#Ð#Ð#r   c                ó:   — | j                              d¦  «         d S )NÚHOMEr[   r\   s     r   Ú	func_HOMEzRecordingWidget.func_HOME†   ó   € ØŒ×Ò˜fÑ%Ô%Ð%Ð%Ð%r   c                ó:   — | j                              d¦  «         d S )NrC   r[   r\   s     r   Úfunc_DOWN_ARROWzRecordingWidget.func_DOWN_ARROW‰   s   € ØŒ×Ò˜lÑ+Ô+Ð+Ð+Ð+r   c                ó:   — | j                              d¦  «         d S )NrH   r[   r\   s     r   Úfunc_UP_ARROWzRecordingWidget.func_UP_ARROWŒ   s   € ØŒ×Ò˜jÑ)Ô)Ð)Ð)Ð)r   c                ó:   — | j                              d¦  «         d S )NrL   r[   r\   s     r   Ú	func_PGDNzRecordingWidget.func_PGDN�   ra   r   c                ó:   — | j                              d¦  «         d S )NrP   r[   r\   s     r   Ú	func_PGUPzRecordingWidget.func_PGUP’   ra   r   Nr!   )rW   rX   r   r   )r"   r#   r$   r%   rU   r]   r`   rc   re   rg   ri   r&   r   r   rS   rS   y   sª   € € € € € ðð ð
'ð 'ð 'ð 'ð$ð $ð $ð $ð&ð &ð &ð &ð,ð ,ð ,ð ,ð*ð *ð *ð *ð&ð &ð &ð &ð&ð &ð &ð &ð &ð &r   rS   c                  ó   — e Zd ZdZdd„ZdS )ÚWidgetFunctionKeyTestszN
    Call functionKeyReceived with key values from insults.ServerProtocol
    r   r   c                ó¸   ‡ ‡— t          ¦   «         Šdˆ ˆfd„} |d¦  «          |d¦  «          |d¦  «          |d	¦  «          |d
¦  «          |d¦  «         dS )zŒ
        L{Widget.functionKeyReceived} dispatches its input, a constant on
        ServerProtocol, to a matched C{func_KEY} method.
        ÚkeyrX   r   r   c                óÄ   •— ‰                      t          t          | ¦  «        d ¦  «         ‰                     | g‰j        ¦  «         ‰j                             ¦   «          d S r   )ÚfunctionKeyReceivedÚgetattrr   r   rV   Úclear)rm   r   r-   s    €€r   ÚcheckOneKeyzLWidgetFunctionKeyTests.test_functionKeyReceivedDispatch.<locals>.checkOneKey¢   sY   ø€ Ø×&Ò&¥w­~¸sÑ'CÔ'CÀTÑJÔJÐJØ×Ò˜c˜U FÔ$4Ñ5Ô5Ð5ØÔ×"Ò"Ñ$Ô$Ð$Ð$Ð$r   rZ   r_   rC   rH   rL   rP   N)rm   rX   r   r   )rS   )r   rr   r-   s   ` @r   Ú test_functionKeyReceivedDispatchz7WidgetFunctionKeyTests.test_functionKeyReceivedDispatch›   sœ   øø€ õ
 !Ñ"Ô"ˆð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
 	ˆ�DÑÔÐØˆ�FÑÔÐØˆ�LÑ!Ô!Ð!Øˆ�JÑÔÐØˆ�FÑÔÐØˆ�FÑÔÐÐÐr   Nr!   )r"   r#   r$   r%   rs   r&   r   r   rk   rk   –   s2   € € € € € ðð ðð ð ð ð ð r   rk   N)r%   Ú
__future__r   Útypingr   Útwisted.conch.insults.insultsr   Útwisted.conch.insults.windowr   r   r   r	   r
   Útwisted.trial.unittestr   r   r(   r1   rS   rk   r&   r   r   ú<module>ry      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +ð&,ð &,ð &,ð &,ð &,�Xñ &,ô &,ð &,ðR;ð ;ð ;ð ;ð ;˜ñ ;ô ;ð ;ð$(3ð (3ð (3ð (3ð (3�Xñ (3ô (3ð (3ðV&ð &ð &ð &ð &�fñ &ô &ð &ð:ð ð ð ð ˜Xñ ô ð ð ð r   