3
s«Y])  ã               @   sx   d Z ddlZddlZddlmZmZmZ edƒZddl	Zdd„ Z
G dd„ dejƒZG d	d
„ d
ejƒZedkrtejƒ  dS )z# Test suite for the code in msilib é    N)ÚTESTFNÚimport_moduleÚunlinkÚmsilibc              C   s&   t d } tj| tjddddƒ}|| fS )Nz.msizPython TestsZproduct_codez1.0ZPSF)r   r   Úinit_databaseZschema)ÚpathÚdb© r	   ú!lib/python3.6/test/test_msilib.pyr   	   s    r   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMsiDatabaseTestCasec             C   sx   t ƒ \}}g }|jdƒ}|jd ƒ x&|jƒ }|d kr6P |j|jdƒƒ q$W |jƒ  | j|dddddgƒ | jt	|ƒ d S )Nz$SELECT Property, Value FROM Propertyé   ZProductNameZProductCodeZProductVersionZManufacturerZProductLanguage)
r   ZOpenViewZExecuteZFetchÚappendZ	GetStringZCloseÚassertEqualÚ
addCleanupr   )Úselfr   Údb_pathZ
propertiesZviewÚrecordr	   r	   r
   Útest_view_fetch_returns_none   s    



z0MsiDatabaseTestCase.test_view_fetch_returns_nonec          
   C   s<   | j tjƒ}tjdtjƒ W d Q R X | jt|jƒdƒ d S )Nznon-existent.msizopen failed)ÚassertRaisesr   ÚMSIErrorÚOpenDatabaseZMSIDBOPEN_READONLYr   ÚstrÚ	exception)r   Úcmr	   r	   r
   Útest_database_open_failed,   s    z-MsiDatabaseTestCase.test_database_open_failedc          
   C   sJ   t jjtdƒ}| jtjƒ}tj|tjƒ W d Q R X | j	t
|jƒdƒ d S )Nztest.msizcreate failed)Úosr   Újoinr   r   r   r   r   ZMSIDBOPEN_CREATEr   r   r   )r   r   r   r	   r	   r
   Útest_database_create_failed1   s    z/MsiDatabaseTestCase.test_database_create_failedc             C   s8   t ƒ \}}|jdƒ}| j|jtjƒƒ ~| jt|ƒ d S )Nr   )r   ZGetSummaryInformationZassertIsNoneZGetPropertyr   ZPID_SECURITYr   r   )r   r   r   Zsummaryr	   r	   r
   Útest_get_property_vt_empty7   s
    

z.MsiDatabaseTestCase.test_get_property_vt_emptyN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r	   r	   r	   r
   r      s   r   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_make_idzèThe Identifier data type is a text string. Identifiers may contain the
    ASCII characters A-Z (a-z), digits, underscores (_), or periods (.).
    However, every identifier must begin with either a letter or an
    underscore.
    c             C   s^   | j tjdƒdƒ | j tjdƒdƒ | j tjdƒdƒ | j tjdƒdƒ | j tjdƒdƒ d S )NZshortZnochangerequiredzone.dotÚ_Úa)r   r   Úmake_id)r   r	   r	   r
   Útest_is_no_change_requiredG   s    z'Test_make_id.test_is_no_change_requiredc             C   s(   | j tjdƒdƒ | j tjdƒdƒ d S )Nz9.shortz_9.shortz.shortz_.short)r   r   r%   )r   r	   r	   r
   Útest_invalid_first_charU   s    z$Test_make_id.test_invalid_first_charc             C   s(   | j tjdƒdƒ | j tjdƒdƒ d S )Nu   .sÂ‚ortz_.s_ortu
   .sÂ‚o?*+rtz
_.s_o___rt)r   r   r%   )r   r	   r	   r
   Útest_invalid_any_char[   s    z"Test_make_id.test_invalid_any_charN)r   r    r!   Ú__doc__r&   r'   r(   r	   r	   r	   r
   r"   ?   s   r"   Ú__main__)r)   Úos.pathr   ZunittestZtest.supportr   r   r   r   Zmsilib.schemar   ZTestCaser   r"   r   Úmainr	   r	   r	   r
   Ú<module>   s   )#