
    %
i%                        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
mZ d dlT d dlT  G d dej        j        j                  Z G d dej        j        j                  Z G d d	ej        j        j                  Z G d
 dej        j        j                  Zedk    r ej        j                                         dS dS )    N)shell)*c                       e Zd Zd Zd ZdS )ShellTesterc                   	
 t          t          j        dt                              	d}t	          j        t          j        d t          j        t          j                  }|	                    t          j
                  }	fdt          j        	          D             }t          t          j        dt                              
|                    
fdt          j        
          D                        |D ]v}	 |                    |t                      n# t          j        $ r Y 0w xY w|                    d          \  }}|                    t          j                  d         }|dz  }w|dk    rt)          d           d S d S )Nr   c                 P    g | ]"}t           j                            |          #S  ospathjoin).0ndesktops     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/test/testShell.py
<listcomp>z-ShellTester.testShellLink.<locals>.<listcomp>   s)    GGGagq))GGG    c                 P    g | ]"}t           j                            |          #S r	   r
   )r   r   programss     r   r   z-ShellTester.testShellLink.<locals>.<listcomp>   s)    NNNAbgll8Q//NNNr      zJCould not find any links on your desktop or programs dir, which is unusual)strr   SHGetSpecialFolderPathCSIDL_DESKTOP	pythoncomCoCreateInstanceCLSID_ShellLinkCLSCTX_INPROC_SERVERIID_IShellLinkQueryInterfaceIID_IPersistFiler   listdirCSIDL_PROGRAMSextendLoad	STGM_READ	com_errorGetPathSLGP_UNCPRIORITYprint)selfnum	shellLinkpersistFilenamesnamefnamefindDatauncr   r   s            @@r   testShellLinkzShellTester.testShellLink   s   e21mDDEE.!* 	
 
	  ..y/IJJGGGG2:g3F3FGGGu3A~FFGGNNNNH9M9MNNNOOO 		 		D  y1111&    (//22OE8##E$:;;A>C1HCC!88\     8s   ?DD-,D-c                    t          j                    }g }|D ]2}|                    |t                    }|                    |           3|                    dt          t          z  t          z            }g }|D ]2}|                    |t                    }|                    |           3|	                                 |	                                 | 
                    ||           d S Nr   )r   SHGetDesktopFolderGetDisplayNameOfSHGDN_NORMALappendEnumObjectsSHCONTF_FOLDERSSHCONTF_NONFOLDERSSHCONTF_INCLUDEHIDDENsortassertEqual)r*   sfnames_1ir/   enumnames_2s          r   testShellFolderzShellTester.testShellFolder.   s    %'' 	! 	!A&&q,77DNN4     ~~!336KK
 
  	! 	!A&&q,77DNN4    '*****r   N)__name__
__module____qualname__r3   rE   r	   r   r   r   r      s2          :+ + + + +r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
PIDLTesterc                     t          j        |          }t          j        |          }|                     ||           t          j        |          }|                     ||           d S N)r   PIDLAsStringStringAsPIDLr?   )r*   pidlpidl_strpidl_rtpidl_str_rts        r   _rtPIDLzPIDLTester._rtPIDLC   sd    %d++$X..$'''(11h/////r   c                     ||f}t          j        |          }t          j        |          }|                     ||           t          j        |          }|                     ||           d S rL   )r   CIDAAsStringStringAsCIDAr?   )r*   parentkidscidacida_strcida_rtcida_str_rts          r   _rtCIDAzPIDLTester._rtCIDAJ   sm    t|%d++$X..w'''(11h/////r   c                 4   d}|                      t          j        dg          |           |                     dg           |                     g d           |                     dgdz             |                     t
          t          j        d           d S )Ns             )r_         s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   i   foo)r?   r   rM   rS   assertRaises	TypeError)r*   expects     r   testPIDLzPIDLTester.testPIDLR   s    ,+UG44f===eW***+++l^d*+++)U%7?????r   c                     |                      dgdgg           |                      dgdgg           |                      dgdgdgdgg           d S )Nr`   r_   ra   )r]   r*   s    r   testCIDAzPIDLTester.testCIDA\   s_    eWwi(((eWwi(((eWw%9:::::r   c                 V    d}|                      t          t          j        |           d S )Ns    )rd   
ValueErrorr   rN   )r*   rO   s     r   testBadShortPIDLzPIDLTester.testBadShortPIDLa   s(     *e&8$?????r   N)rF   rG   rH   rS   r]   rg   rj   rm   r	   r   r   rJ   rJ   B   sg        0 0 00 0 0@ @ @; ; ;
@ @ @ @ @r   rJ   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	FILEGROUPDESCRIPTORTesterc                    t          t          j        t          j                  ret	          j                    }|                    |j        dz  dz            }|t          j        d          z   }|t          j        d          z   }n<t          j	        d          }t          j	        d          }t          j	        d          }|||fS )Ni  )microsecondr   )seconds         )

issubclass
pywintypesTimeTypedatetimewin32timezonenowreplacerq   	timedeltaTime)r*   ctimeatimewtimes       r   _getTestTimesz'FILEGROUPDESCRIPTORTester._getTestTimesk   s    j)8+<== 		(!%''EMMe.?4.G$.NMOOEH.q9999EH.q9999EEOB''EOB''EOB''EeU""r   c                 4   t          j        |g          }t          j        |          d         }|                                }|                                }d|vr|d= d|vr|                     |d         d           |d= |                     ||           d S )Nr   dwFlags	cFileName )r   FILEGROUPDESCRIPTORAsStringStringAsFILEGROUPDESCRIPTORcopyr?   )r*   fd
fgd_stringfd2s       r   _testRTz!FILEGROUPDESCRIPTORTester._testRTx   s    6t<<
/
;;A>WWYYhhjj BIb  S-r222K S!!!!!r   c                    t          j        g |          }t          j        dd          }|                     ||d t          |                              |                     i            i }t          j        |g|          }t          j        dd          }|                     ||d t          |                              |                     |           d S )NrB   r   r   )r   r   structpackr?   lenr   )r*   make_unicodefgdheaderds        r   _testSimplez%FILEGROUPDESCRIPTORTester._testSimple   s    /LAAS!$$]s6{{]!3444R/\BBS!$$]s6{{]!3444Qr   c                 0    |                      d           d S )NFr   ri   s    r   testSimpleBytesz)FILEGROUPDESCRIPTORTester.testSimpleBytes   s    r   c                 0    |                      d           d S )NTr   ri   s    r   testSimpleUnicodez+FILEGROUPDESCRIPTORTester.testSimpleUnicode   s    r   c           
          t          j        d          }|                                 \  }}}d|ddt          j        |||t
          j        dz   d	}|                     |           d S )Nz&{CD637886-DB8B-4b04-98B5-25731E1495BE}foo.txtr            r   )	r   clsidsizelpointldwFileAttributesftCreationTimeftLastAccessTimeftLastWriteTime	nFileSize)rw   IIDr   win32conFILE_ATTRIBUTE_NORMALsysmaxsizer   )r*   r   r   r   r   r   s         r   testComplexz%FILEGROUPDESCRIPTORTester.testComplex   so    GHH"0022ue" ( ># %$q

 

 	Qr   c                    |                                  \  }}}dddt          j        |||t          j        dz   ddddt          j        |||t          j        dz   ddddt          j        |||t          j        dz   dg}t          j        |d          }t          j        |          }|D ]}|d= |                     ||           d S )	Nr   r   r   r   )r   r   r   r   r   r   r   r   zfoo2.txtu	   foo©.txtr   )	r   r   r   r   r   r   r   r   r?   )r*   r   r   r   r   sd2ts           r   testUnicodez%FILEGROUPDESCRIPTORTester.testUnicode   s   "0022ue ' $,$B"'$)#( [1_	 	 ( $,$B"'$)#( [1_	 	 + $,$B"'$)#( [1_	 	+
@ -a33.q11 	 	A)Br   N)
rF   rG   rH   r   r   r   r   r   r   r   r	   r   r   ro   ro   j   s}        # # #" " " 	 	 	          (  (  (  (  ( r   ro   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )FileOperationTesterc                    dd l }t          j                            |                                d          | _        t          j                            |                                d          | _        d| _        t          | j        d          }|	                    | j                   |
                                 	 t          j        | j                   d S # t          $ r Y d S w xY w)Nr   pywin32_testshellpywin32_testshell_dests   Hello from Pythonwb)tempfiler   r   r   
gettempdirsrc_name	dest_name	test_dataopenwritecloseunlinkOSError)r*   r   fs      r   setUpzFileOperationTester.setUp   s    X%8%8%:%:<OPPh&9&9&;&;=UVV.%%						Idn%%%%% 	 	 	DD	s   >C 
C'&C'c                     | j         | j        fD ]5}t          j                            |          rt          j        |           6d S rL   )r   r   r   r   isfiler   )r*   r0   s     r   tearDownzFileOperationTester.tearDown   sK    mT^4 	! 	!Ew~~e$$ !	%   	! 	!r   c                    dt           | j        | j        f}t          j        |          \  }}|                     |            |                     d|           |                     t          j        	                    | j                             |                     t          j        	                    | j                             d S r5   )
FO_COPYr   r   r   SHFileOperation
assertTruer?   r   r   r   r*   r   rcaborteds       r   testCopyzFileOperationTester.testCopy   s    7+A..GG$$$Bt}55666t~6677777r   c                    dt           | j        | j        f}t          j        |          \  }}|                     |            |                     d|           |                     t          j        	                    | j                             |                     t          j        	                    | j                              d S r5   )
	FO_RENAMEr   r   r   r   r   r?   r   r   r   r   s       r   
testRenamezFileOperationTester.testRename   s    	4=$.9+A..GG$$$Bt~66777BGNN4=999:::::r   c                    dt           | j        | j        f}t          j        |          \  }}|                     |            |                     d|           |                     t          j        	                    | j                             |                     t          j        	                    | j                              d S r5   )
FO_MOVEr   r   r   r   r   r?   r   r   r   r   s       r   testMovezFileOperationTester.testMove   s    7+A..GG$$$Bt~66777BGNN4=999:::::r   c                 (   dt           | j        d t          f}t          j        |          \  }}|                     |            |                     d|           |                     t          j        	                    | j                              d S r5   )
	FO_DELETEr   FOF_NOCONFIRMATIONr   r   r   r?   r   r   r   r   s       r   
testDeletezFileOperationTester.testDelete  s    M
 +A..GG$$$BBGNN4=999:::::r   N)	rF   rG   rH   r   r   r   r   r   r   r	   r   r   r   r      sn          ! ! !
8 8 8; ; ;; ; ;; ; ; ; ;r   r   __main__)ry   r   r   r   r   rw   win32com.test.utilwin32comr   rz   win32com.shellr   win32com.shell.shellconwin32com.storagecontestutilTestCaser   rJ   ro   r   rF   testmainr	   r   r   <module>r      s    				  



                              % % % % ! ! ! !/+ /+ /+ /+ /+(-$- /+ /+ /+d"@ "@ "@ "@ "@#, "@ "@ "@Pg  g  g  g  g  2 ; g  g  g T8; 8; 8; 8; 8;(-,5 8; 8; 8;v zM!!!!! r   