
    %
i                         d dl Z d dlZd dlZd dlZ G d d          Z G d d          Z G d de          Z G d d	ej        j	        j
                  Zed
k    r e j                     dS dS )    Nc                   P    e Zd Zg dZej        gZd Zd Zd Z	d Z
d Zd Zd Zd	S )
Persists)
GetClassIDIsDirtyLoadSave
GetSizeMaxInitNewc                 "    d| _         d| _        d S )Ns   abcdefg   )datadirtyselfs    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/test/testStreams.py__init__zPersists.__init__   s    	


    c                     t           j        S N)	pythoncomIID_NULLr   s    r   r   zPersists.GetClassID   s    !!r   c                     | j         S r   )r   r   s    r   r   zPersists.IsDirty   s
    zr   c                 :    |                     d          | _        d S )N   )Readr   )r   streams     r   r   zPersists.Load   s    KKOO			r   c                 P    |                     | j                   |r	d| _        d S d S Nr   )Writer   r   )r   r   
clearDirtys      r   r   zPersists.Save    s3    TY 	DJJJ	 	r   c                     dS )Ni    r   s    r   r	   zPersists.GetSizeMax%   s    tr   c                     d S r   r"   r   s    r   r
   zPersists.InitNew(   s    r   N)__name__
__module____qualname___public_methods_r   IID_IPersistStreamInit_com_interfaces_r   r   r   r   r   r	   r
   r"   r   r   r   r      s           "89  " " "  $ $ $  
      r   r   c                   >    e Zd Zg dZej        gZd Zd Zd Z	d Z
dS )Stream)r   r   Seekc                 "    || _         d| _        d S r   r   indexr   r   s     r   r   zStream.__init__0   s    	


r   c                 ^    | j         | j        | j        |z            }| xj        |z  c_        |S r   r.   )r   amountresults      r   r   zStream.Read4   s1    4:
V(;;<

f

r   c                 <    || _         d| _        t          |          S r   )r   r/   lenr0   s     r   r   zStream.Write9   s    	
4yyr   c                    |t           j        k    r|| _        nm|t           j        k    r| xj        |z  c_        nL|t           j        k    rt          | j                  |z   | _        nt          dt          |          z             | j        dk     rd| _        n,t          | j        t          | j                            | _        | j        S )NzUnknown Seek type: r   )
r   STREAM_SEEK_SETr/   STREAM_SEEK_CURSTREAM_SEEK_ENDr5   r   
ValueErrorstrmin)r   distorigins      r   r,   zStream.Seek>   s    Y...DJJy000JJ$JJJy000TY$.DJJ2S[[@AAA:>>DJJTZTY88DJzr   N)r$   r%   r&   r'   r   IID_IStreamr)   r   r   r   r,   r"   r   r   r+   r+   ,   sh        000!-.    
  
    r   r+   c                       e Zd ZdZd ZdS )	BadStreamzwPyGStream::Read could formerly overflow buffer if the python implementation
    returned more data than requested.
    c                     d|dz   z  S )N   xr   r"   )r   r2   s     r   r   zBadStream.ReadS   s    vz""r   N)r$   r%   r&   __doc__r   r"   r   r   rA   rA   N   s-         # # # # #r   rA   c                   (    e Zd ZddZd Zd Zd ZdS )
StreamTestNc                    ||}|                     |           |                    dt          j                   |                    t          |                    }|                     ||           |                    dt          j                   |                    t          |          dz
            }|                     |dd         |           d S )Nr   r      )r   r,   r   r7   r   r5   assertEqual)r   r   write_streamread_streamgots        r   
_readWritezStreamTest._readWriteX   s    &K4   I5666s4yy))s###I5666s4yy1}--adS)))))r   c                 (   d}t          |          }t                      }|                    |           |                    |d           |                     |j        |           t          j        j        	                    |t          j                  }t          j        j        	                    |t          j                  }|                     |||           |                     |||           |                     |||           |                     |||           |                     d||           |                    |           |                    |           |                    |d           |                     |j        |           d S )Ns   abcdefghijklmnopqrstuvwxyzr   s   string with a NULL)r+   r   r   r   rJ   r   win32comserverutilwrapr   r?   r(   rN   r   )r   mydatasps2p2s         r   testitzStreamTest.testitc   sM   . 6NNJJ	q				q!((( _!&&q)*?@@_!&&q)*JKK1%%%2&&&A&&&B'''.B777	

A(((((r   c                     t          d          }t          j        j                            |t
          j                  }|                    dt
          j                   d S )Ns   yol        )	r+   rP   rQ   rR   rS   r   r?   r,   r7   )r   rU   s     r   testseekzStreamTest.testseek   sG    5MMO %%a)>??	{I566666r   c                    t           j        j                                        \  }}t	          d          }t           j        j                            |t          j                  }| 	                    t          j
        |j        d           t           j        j                            |           |                     t          |          d           |                     |d         j                            d                     d S )NzCheck for buffer overflow
   r   r   zpythoncom error)rP   testrR   setup_test_loggerrA   rQ   rS   r   r?   assertRaises	com_errorr   restore_test_loggerrJ   r5   
assertTruemsg
startswith)r   recordsold_log	badstream
badstream2s        r   
testerrorszStreamTest.testerrors   s    #=-??AA9::	_)..y):OPP
)-zCCC..w777Wq)))
112CDDEEEEEr   r   )r$   r%   r&   rN   rY   r[   rj   r"   r   r   rF   rF   W   sZ        	* 	* 	* 	*) ) )87 7 7
F 
F 
F 
F 
Fr   rF   __main__)unittestr   win32com.server.utilrP   win32com.test.utilr   r+   rA   r^   rR   TestCaserF   r$   mainr"   r   r   <module>rq      s               ! ! ! ! ! ! ! !H       D# # # # # # # #8F 8F 8F 8F 8F#, 8F 8F 8Fv zHMOOOOO r   