
    Yfu                        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   P/var/www/html/env/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4i6F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     ''fmX%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$tI,,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dk.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dk.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&94@@@dk.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'CTJJJcUF$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 (3X (3 (3 (3V& & & & &f & & &:    X     r   