a
    œòJb  ã                   @   sª   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZ ddlmZ G dd	„ d	eƒZeed	eƒZejjed
dG dd„ dejƒƒZdS )é    N)ÚQtCoreÚ	QtWidgets)ÚQTest)ÚConsoleWidget)ÚCompletionWidgeté   )Ú
no_displayc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTemporaryDirectoryzœ
    Context manager for tempfile.mkdtemp().
    This class is available in python +v3.2.
    See: https://gist.github.com/cpelley/10e2eeaf60dacc7956bb
    c                 C   s   t  ¡ | _| jS ©N)ÚtempfileZmkdtempÚdir_name©Úself© r   úElib/python3.9/site-packages/qtconsole/tests/test_completion_widget.pyÚ	__enter__   s    
zTemporaryDirectory.__enter__c                 C   s   t  | j¡ d S r
   )ÚshutilÚrmtreer   )r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__   s    zTemporaryDirectory.__exit__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r	      s   r	   zDoesn't work without a display)Úreasonc                   @   sL   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestCompletionWidgetc                 C   s2   t j ¡ | _| jdu r"t  g ¡| _| j d¡ dS )z3 Create the application for the test case.
        NF)r   ÚQApplicationÚinstanceZ_appZsetQuitOnLastWindowClosed©Úclsr   r   r   Ú
setUpClass%   s    
zTestCompletionWidget.setUpClassc                 C   s   t j ¡  dS )z Exit the application.
        N)r   r   Úquitr    r   r   r   ÚtearDownClass.   s    z"TestCompletionWidget.tearDownClassc                 C   s   t ƒ | _| jj| _dS )z1 Create the main widgets (ConsoleWidget)
        N)r   ÚconsoleZ_controlÚ	text_editr   r   r   r   ÚsetUp4   s    zTestCompletionWidget.setUpc                 C   s2   t | jƒ}| | j ¡ g d¢¡ |  | ¡ ¡ d S )N©Úitem1Zitem2Úitem3)r   r%   Ú
show_itemsr&   Ú
textCursorZ
assertTrueÚ	isVisible©r   Úwr   r   r   Útest_droplist_completer_shows:   s    
z2TestCompletionWidget.test_droplist_completer_showsc                 C   sV   t | jƒ}| | j ¡ g d¢¡ t |tjj	¡ t |tjj
¡ |  | j ¡ d¡ d S )Nr(   r*   )r   r%   r+   r&   r,   r   ÚkeyClickr   ÚQtZKey_PageDownZ	Key_EnterÚassertEqualÚtoPlainTextr.   r   r   r   Ú test_droplist_completer_keyboard?   s
    
z5TestCompletionWidget.test_droplist_completer_keyboardc                 C   s    t jj}t| jƒ}| | j ¡ g d¢¡ tj	| 
¡ |t  dd¡d tj| 
¡ |t  dd¡d tj| 
¡ |t  dd¡d |  | j ¡ d¡ |  | ¡ ¡ d S )Nr(   é   é   )Úposr)   )r   r2   Z
LeftButtonr   r%   r+   r&   r,   r   Z
mouseClickZviewportZQPointZmouseReleaseZmouseDClickr3   r4   ZassertFalser-   )r   Z
leftButtonr/   r   r   r   Ú!test_droplist_completer_mousepickF   s    
z6TestCompletionWidget.test_droplist_completer_mousepickc                 C   sÞ   t ƒ Ä}tj |d¡tj |d¡tj |d¡g}|D ]}t |¡ q4t| jƒ}| | j 	¡ |¡ |  
| ¡  ¡ d¡ t |tjj¡ |  
| ¡  ¡ d¡ t |tjj¡ |  
| ¡  ¡ d¡ W d   ƒ n1 sÐ0    Y  d S )Nzcommon/common1/item1zcommon/common1/item2zcommon/common1/item3z/item1z/item2z/item3)r	   ÚosÚpathÚjoinÚmakedirsr   r%   r+   r&   r,   r3   ZcurrentItemÚtextr   r1   r   r2   ZKey_Down)r   ZtmpdirÚitemsÚitemr/   r   r   r   Útest_common_path_completeS   s    ý
z.TestCompletionWidget.test_common_path_completeN)r   r   r   Úclassmethodr"   r$   r'   r0   r5   r9   rA   r   r   r   r   r   "   s   

r   )r:   r   r   ZunittestZpytestZqtpyr   r   Zqtpy.QtTestr   Zqtconsole.console_widgetr   Zqtconsole.completion_widgetr   Ú r   Úobjectr	   ÚgetattrZmarkZskipifZTestCaser   r   r   r   r   Ú<module>   s   ÿ