o
    JAft                     @   s   d Z ddlmZ ddlZddlmZ ddlZddlm	Z	 ddl
mZ h dZdhZeeB Zdd	 Zd
d ZG dd dejZG dd dejZG dd dejZedkr\ejdd dS dS )z%Test macosx, coverage 45% on Windows.    )macosxN)requires)FileList>   carbonxquartzcocoaotherc                   C   s
   t jad S N)r   _tk_typeorig_tktype r   r   4/usr/lib/python3.10/idlelib/idle_test/test_macosx.pysetUpModule   s   
r   c                   C   s
   t t_d S r	   )r   r   r
   r   r   r   r   tearDownModule   s   
r   c                   @   s0   e Zd ZdZedd Zedd Zdd ZdS )	InitTktypeTestzTest _init_tk_type.c                 C   s(   t d t | _| j  tj| _d S )Ngui)r   tkTkrootwithdrawr   platformorig_platformclsr   r   r   
setUpClass   s   

zInitTktypeTest.setUpClassc                 C   s$   | j   | j   | ` | jt_d S r	   )r   update_idletasksdestroyr   r   r   r   r   r   r   tearDownClass"   s   

zInitTktypeTest.tearDownClassc              	   C   sl   dt fdtffD ]+\}}| j|d |t_dt_t  | tj| W d   n1 s.w   Y  qdS )z<Test that _init_tk_type sets _tk_type according to platform.darwinr   )r   N)alltypesnontypessubTestr   r   r
   Z_init_tk_typeZassertIn)selfr   typesr   r   r   test_init_sets_tktype)   s   z$InitTktypeTest.test_init_sets_tktypeN)__name__
__module____qualname____doc__classmethodr   r   r$   r   r   r   r   r      s    

r   c                   @   sN   e Zd ZdZejdfejdfejdfejdffZ	e
ddd Zd	d
 ZdS )IsTypeTkTestz*Test each of the four isTypeTk predecates.r   r   r   r   r   zidlelib.macosx._init_tk_typec              	   C   s`   dt _| jD ]'\}}| j|d |  | |j |  W d   n1 s(w   Y  qdS )zBTest that each isTypeTk calls _init_tk_type when _tk_type is None.N)func)r   r
   isfuncsr!   
assertTruecalled
reset_mock)r"   Zmockinitr,   whentruer   r   r   test_is_calls_init;   s   
zIsTypeTkTest.test_is_calls_initc              
   C   sn   | j D ]1\}}tD ]*}| j|||d |t_||v r| jn| j|  W d   n1 s.w   Y  q	qdS )z,Test that each isTypeTk return correct bool.)r,   r1   tktypeN)r-   r   r!   r   r
   r.   ZassertFalse)r"   r,   r1   r3   r   r   r   test_isfuncsE   s   zIsTypeTkTest.test_isfuncsN)r%   r&   r'   r(   r   ZisAquaTkZ
isCarbonTkZ	isCocoaTkZ	isXQuartzr-   mockpatchr2   r4   r   r   r   r   r*   3   s    
	r*   c                   @   s:   e Zd ZdZedd Zedd Zeddd Z	d	S )
	SetupTestzTest setupApp.c                    s4   t d t | _| j   fdd  | j_d S )Nr   c                    s$   t | tsJ t |t sJ d S r	   )
isinstancestrtype)Ztkpathr,   cmdr   r   r<   W   s   z!SetupTest.setUpClass.<locals>.cmd)r   r   r   r   r   Zcreatecommandr   r   r;   r   r   R   s
   

zSetupTest.setUpClassc                 C   s   | j   | j   | ` d S r	   )r   r   r   r   r   r   r   r   \   s   

zSetupTest.tearDownClasszidlelib.macosx.overrideRootMenuc              	   C   sv   | j }t|}tD ]/}| j|d |t_t|| |dv r%| |j |	  W d   n1 s3w   Y  q	dS )z/Call setupApp with each possible graphics type.)r3   r+   N)
r   r   r   r!   r   r
   ZsetupAppr.   r/   r0   )r"   ZoverrideRootMenur   flistr3   r   r   r   test_setupappb   s   
zSetupTest.test_setupappN)
r%   r&   r'   r(   r)   r   r   r5   r6   r>   r   r   r   r   r7   O   s    
	
r7   __main__   )	verbosity)r(   Zidlelibr   ZunittestZtest.supportr   tkinterr   Zunittest.mockr5   Zidlelib.filelistr   Zmactypesr    r   r   r   ZTestCaser   r*   r7   r%   mainr   r   r   r   <module>   s$    !