
    r@;j0                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	 G d de
          Z G d dej                  Z G d dej                  Z G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Zedk    r ej                     dS dS )    Nc                       e Zd ZdS )	TestErrorN)__name__
__module____qualname__     fC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\win32/test/test_win32api.pyr   r      s        Dr	   r   c                       e Zd Zd ZdS )CurrentUserTestCasec                     t          j                    }|dk    rt          j        d          | dt          j                     }|                     |t          j        t           j                             d S )NzNT AUTHORITYzrunning as service account\)win32apiGetDomainNameunittestSkipTestGetUserNameassertEqualGetUserNameExNameSamCompatible)selfdomainnames      r
   testGetCurrentUserz&CurrentUserTestCase.testGetCurrentUser   ss    '))^###$@AAA44H02244x5h6PQQRRRRRr	   N)r   r   r   r   r   r	   r
   r   r      s(        S S S S Sr	   r   c                        e Zd Zd Zd Zd ZdS )TestTimec                 J   t          j                    \  }}|t          j        k    r|d         }|d         }n|d         }|d         }|                                 t          |t          j                  s+t          |t                    s|                                 d S d S d S )N            )	r   GetTimeZoneInformationwin32conTIME_ZONE_ID_DAYLIGHTencode
isinstancedatetimetupleFormat)r   rctzinfotz_strtz_times        r
   testTimezonezTestTime.testTimezone   s    466
F///AYFQiGGAYFQiG'8#455 	jU?
 ?
 	 NN	 	 	 	r	   c                    d}|}t          j        d|d            t          j        d|d           t          j        d|t          j                                                   t          j        d|t	          j                               d S )Nr!   r   )r   GetDateFormatr'   nowtime)r   DATE_LONGDATE
date_flagss      r
   TestDateFormatzTestTime.TestDateFormat/   s{    "
q*d333q*a000q*h.?.C.C.E.EFFFq*dikk:::::r	   c                    t          j        ddd            t          j        ddd           t          j        ddt          j                                                   t          j        ddt	          j                               d S )Nr   )r   GetTimeFormatr'   r1   r2   r   s    r
   TestTimeFormatzTestTime.TestTimeFormat7   sq    q!T***q!Q'''q!X%6%:%:%<%<===q!TY[[11111r	   N)r   r   r   r.   r5   r9   r   r	   r
   r   r      sA           ; ; ;2 2 2 2 2r	   r   c                   $    e Zd ZdZd Zd Zd ZdS )RegistryzPythonTestHarness\Whateverc                      fd}	 	 	  |             n#  t           xY w	 t          j        t          j         j                   d S # t          j        t          j         j                   w xY w# t           $ r Y d S w xY w)Nc                  Z    t          j        t          j        j                  } t
          )N)r   RegCreateKeyr#   HKEY_CURRENT_USERkey_namer   hkeyr   s    r
   reg_operationz%Registry.test1.<locals>.reg_operationC   s    ()CT]SSDOr	   )r   r   RegDeleteKeyr#   r?   r@   )r   rC   s   ` r
   test1zRegistry.test1A   s    	 	 	 	 	
		Q$!MOOOO$#O $ %h&@$-PPPPP%h&@$-PPPP 	 	 	DD	s/   
 A 	A $A1 &A..A1 1
A?>A?c                 (   d}d t           j        dfdt           j        dfdt           j        dfdt           j        g dfd	t           j        g fd
t           j        dfdt           j        dfdt           j        dfdt           j        dff	}t          j        t           j	        |          }|D ]\  }}}t          j
        ||d ||           |D ]J\  }}}t          j        ||          \  }}	|                     |	|           |                     ||           Kd S )NzPythonTestHarness\win32apizThis is default unnamed valueREG_SZzREG_SZ text dataREG_EXPAND_SZz%systemdir%REG_MULTI_SZ)zstring 1zstring 2zstring 3zstring 4REG_MULTI_SZ_empty	REG_DWORDi  REG_QWORD_INTc   	REG_QWORDl        
REG_BINARYs     )r#   rG   rH   rI   rK   rN   rO   r   r>   r?   RegSetValueExRegQueryValueExr   )
r   r@   valuesrB   
value_namereg_typedata	orig_type	orig_datatyps
             r
   
testValueszRegistry.testValuesS   sG   0 8?$CDx(:;h4mD %@@@
 "8#8"=(,c2h0"5(,e4#?
* $X%?JJ*0 	K 	K&J$"4T8TJJJJ06 	. 	.,J	9 0zBBID#S),,,T9----	. 	.r	   c                      fd}t          j        d ddd           }t          j        t          j        dt          j        |d           t          j        |d          }                     |t          j	        k                |             t          j        |d          }                     |t          j
        k               d S )Nc                  .   t          j        t          j        j                  } 	 t          j        | d t          j        d           t          j        t          j        j                   d S # t          j        t          j        j                   w xY w)Nfoo)r   r>   r#   r?   r@   RegSetValuerG   rD   rA   s    r
   changez)Registry.testNotifyChange.<locals>.changeu   su    ()CT]SSDQ$T4%HHH%h&@$-PPPPP%h&@$-PPPPs   !A. .&Br   r    T)
win32eventCreateEventr   RegNotifyChangeKeyValuer#   r?   REG_NOTIFY_CHANGE_LAST_SETWaitForSingleObject
assertTrueWAIT_TIMEOUTWAIT_OBJECT_0)r   r^   evtret_codes   `   r
   testNotifyChangezRegistry.testNotifyChanget   s    	Q 	Q 	Q 	Q 	Q $T1a66
 	(&/	
 	
 	
 1#q99H$99:::1#q99H$::;;;;;r	   N)r   r   r   r@   rE   rY   ri   r   r	   r
   r;   r;   >   sG        ,H  $. . .B< < < < <r	   r;   c                        e Zd Zd Zd Zd ZdS )	FileNamesc                    	 t           }n"# t          $ r t          j        d         }Y nw xY wt          j                            |                                          }t          j	        |                                          }t          j
        |                                          }|                     ||k    d| d| d           |                     |t          j        |                                                     t          j        |                                          }|                     t          |t                    dt!          |           d           |                     ||k    d| d| d           d S Nr   zExpected long name ('z') to be original name ('z')z GetLongPathNameW returned type '')__file__	NameErrorsysargvospathabspathlowerr   GetShortPathNameGetLongPathNamerd   r   GetLongPathNameWr&   strtyper   mefname
short_name	long_names        r
   testShortLongPathNamesz FileNames.testShortLongPathNames   s   	BB 	 	 	!BBB	##))++.u55;;==
,Z88>>@@	QIQQQQQ	
 	
 	
 	H$=j$I$I$O$O$Q$QRRR-j99??AA	y#&&AtIAAA	
 	
 	
 	QIQQQQQ	
 	
 	
 	
 	
   
 ))c                 x   	 t           }n"# t          $ r t          j        d         }Y nw xY wt          j                            |                                          }t          j	        t          |                                                    }|                     t          |t                               t          j        |                                          }|                     ||k    d| d| d           |                     |t          j        |                                                     t          j        |                                          }|                     t          |t                    dt!          |           d           |                     ||k    d| d| d           d S rm   )ro   rp   rq   rr   rs   rt   ru   rv   r   rw   rz   rd   r&   rx   r   ry   r{   r|   s        r
   testShortUnicodeNameszFileNames.testShortUnicodeNames   s   	BB 	 	 	!BBB	##))++.s5zz::@@BB

:s33444,Z88>>@@	QIQQQQQ	
 	
 	
 	H$=j$I$I$O$O$Q$QRRR-j99??AA	y#&&AtIAAA	
 	
 	
 	QIQQQQQ	
 	
 	
 	
 	
r   c                 J   dd l }d}t          j        t          j                              }dt
          j                            ||          z   }	 |                    |d            n2# t          j	        $ r }|j
        t          j        k    r Y d }~nd }~ww xY w	 	 t          j        |          }n2# t          j	        $ r }|j
        t          j        k    r Y d }~nd }~ww xY wt          j        t          |                    }|                     |t           j        z  |           t          j        |          }|                     |                                |                                           |                    |           d S # |                    |           w xY w)Nr   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz\\?\)	win32filer   ry   tempfile
gettempdirrs   rt   joinCreateDirectoryWerrorwinerrorERROR_ALREADY_EXISTSGetFileAttributesERROR_FILENAME_EXCED_RANGErz   rd   r#   FILE_ATTRIBUTE_DIRECTORYr   rv   RemoveDirectory)r   r   basenamelong_temp_dirr~   detailsattrr   s           r
   testLongLongPathNameszFileNames.testLongLongPathNames   s    	 !1(2E2G2GHHBGLLAAA	&&ud3333~ 	 	 	8#@@@ A@@@@		-1%88>   #x'JJJ KJJJJ -c%jj99DOOD8#DDdKKK 1%88IY__..>>>%%e,,,,,I%%e,,,,sI   A' 'B6BBB0 /F 0C?CF CBF F"N)r   r   r   r   r   r   r   r	   r
   rk   rk      sA        
 
 
.
 
 
2- - - - -r	   rk   c                       e Zd Zd ZdS )FormatMessagec                     d}ddg}t          j        t          j        |dd|          }|                     |d           d S )NzHello %1, how are you %2?Marktodayr   zHello Mark, how are you today?)r   r   r#   FORMAT_MESSAGE_FROM_STRINGr   )r   msginsertsresults       r
   test_FromStringzFormatMessage.test_FromString   sT    )7#'/
 
 	!ABBBBBr	   N)r   r   r   r   r   r	   r
   r   r      s(        
C 
C 
C 
C 
Cr	   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Miscc                     dddt           j        fD ]=}t          j        |           |                     |t          j                               >d S )Nr   r    )r   TRUST_E_PROVIDER_UNKNOWNr   SetLastErrorr   GetLastError)r   xs     r
   test_last_errorzMisc.test_last_error   sZ    QH=> 	9 	9A!!$$$Q 5 7 78888	9 	9r	   c                 V    |                      t          j        d          d           d S )N     )r   r   	VkKeyScanr8   s    r
   testVkKeyScanzMisc.testVkKeyScan   s)    +C00"55555r	   c                 X    |                      t          j        dd          d           d S )Nr   r   r   )r   r   VkKeyScanExr8   s    r
   testVkKeyScanExzMisc.testVkKeyScanEx   s+    -c155r:::::r	   c                     t          j                    }|                     |t                     d}|                     t          |          t          |                     d S )N)ACLineStatusBatteryFlagBatteryLifePercentSystemStatusFlagBatteryLifeTimeBatteryFullLifeTime)r   GetSystemPowerStatusassertIsInstancedictr   set)r   sps	test_keyss      r
   testGetSystemPowerStatuszMisc.testGetSystemPowerStatus   sW    +--c4(((
	 	YS22222r	   c           
      b   	 t          j                    }n8# t          $ r+}t          |          }|dk    rt	          |          | d }~ww xY w|                     |t                     |sd S |d         }d}|D ]}|                     t          ||          d|            t          ||          }|                     |t          | dt          |                      |                     |d| d           d}|D ]g}|                     t          ||          d|            t          ||          }|                     |t          | dt          |                      h|                     |j        dd	           |                     |j        d
d           |                     |j        d
d           t'          |          D ]O\  }	}|                     |j        t          d|	 d           |                     |j        t          d|	 d           Pt          |d                    d S )Nz<GetSystemCpuSetInformation is not available on this platformr   )	IdGroupLogicalProcessorIndex	CoreIndexLastLevelCacheIndexNumaNodeIndexEfficiencyClassSchedulingClassAllocationTagzMissing attribute: z should be int, got z should be non-negative)Parked	AllocatedAllocatedToTargetProcessRealTimez should be bool, got zCPU Id should be positive   z EfficiencyClass should be <= 255z SchedulingClass should be <= 255zCPU z: Id should be intz: Parked should be bool)r   GetSystemCpuSetInformationNotImplementedErrorrz   TestSkippedr   listrd   hasattrgetattrintr{   assertGreaterEqualboolassertGreaterr   assertLessEqualr   r   	enumerater   )
r   cpuser   cpunumeric_attrsr   value
bool_attrsis
             r
   testGetSystemCpuSetInformationz#Misc.testGetSystemCpuSetInformation  s   	688DD" 	 	 	a&&CTTT!#&&A-	 	dD))) 	F 1g

 " 	P 	PDOOGC..0Ld0L0LMMMC&&E!!stFFeFF   ##E1.N.N.NOOOO U
 	 	DOOGC..0Ld0L0LMMMC&&E!!tHH4;;HH   
 	361&ABBB&H	
 	
 	
 	&H	
 	
 	

  oo 	W 	WFAs!!#&#/Ka/K/K/KLLL!!#*d4U14U4U4UVVVV 	DGs    
A&AAN)r   r   r   r   r   r   r   r   r   r	   r
   r   r      sd        9 9 9
6 6 6; ; ;3 3 3@ @ @ @ @r	   r   __main__)r'   rs   rq   r   r2   r   r   r#   r_   r   	Exceptionr   TestCaser   r   r;   rk   r   r   r   mainr   r	   r
   <module>r      s    				 



          	 	 	 	 		 	 	 	S S S S S(+ S S S2 2 2 2 2x  2 2 2@P< P< P< P< P<x  P< P< P<fP- P- P- P- P-! P- P- P-fC C C C CH% C C C\ \ \ \ \8 \ \ \~ zHMOOOOO r	   