Sindbad~EG File Manager
a
��gU � @ s� d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZm Z ej
ddgd� d dlT zejej�
d�d ZW n eefy� dZY n0 e�� dd
� Ze� dkr�dnd
Zedk r�dnd
Zde �� f Zde Zde Zddefddefddefddefdg d�efdg d�efddefd d!d" efd#d$d% efd&d'efg
ZG d(d)� d)ej �Z!G d*d+� d+e!�Z"e�#ed,�G d-d.� d.e!��Z$e�#ed/�G d0d1� d1e!��Z%e&d2k�r�e�s�e'd3d4� e�(� dS )5� N)�support)�machine�
win32_edition�winreg�win)Zrequired_on)�*z--remote� � ZAMD64TF)� r z Python Test Key [%d] - Delete Mez SOFTWARE\zSOFTWARE\Classes\z Int Value�- zQword Valuel �w�*M z
String ValzA string valueZStringExpandzThe path is %path%zMulti-string)ZLotsZof�string�valuesz Multi-nul)� r r r zRaw Datas binary dataz
Big String�xi�? z
Big Binary� xi @ u Japanese 日本u 日本語c @ sT e Zd Zdd� Zdd� Zdefdd�Zdefdd �Zdd
d�Z ddd
�Z
dd� ZdS )�BaseWinregTestsc C s | � tt� d S �N)�delete_tree�HKEY_CURRENT_USER�
test_key_name��self� r �,/usr/local/lib/python3.9/test/test_winreg.py�setUp6 s zBaseWinregTests.setUpc C sr zt ||dt�}W n ty& Y d S 0 zt|d�}W n tyL Y q\Y n0 | �||� q(t|� t||� d S �Nr )�OpenKey�KEY_ALL_ACCESS�OSError�EnumKeyr �CloseKey� DeleteKey)r �rootZsubkey�hkeyZ subsubkeyr r r r ; s
zBaseWinregTests.delete_tree�sub_keyc C s$ t |ttd� ||t�}| �|jdk� |||�}tD ]\}}}t||d||� q6t|�\} }
}| �| dd� | �|
dd� t|�\} }
}| �| dd� | �|
t t�d� t
|�}t|� zt|� | �d� W n t
y� Y n0 t
|�}
|�� zt|
� | �d� W n t
�y Y n0 d S )N�
Default valuer r z"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)�SetValuer �REG_SZ�
assertTrue�handle� test_data�
SetValueEx�QueryInfoKey�assertEqual�len�intr �failr �Close)r �root_key� subkeystr� CreateKey�keyr$ �
value_name�
value_data�
value_type�nkeys�nvalues� since_modZint_sub_keyZint_keyr r r �_write_test_dataK s8
�z BaseWinregTests._write_test_datac C s8 t |t�}| �|dd� ||t�}|||���}d}zt||�}W n tyV Y qtY n0 | �|tv dd� |d }q2| �|tt�d� tD ]4\} }
}t|| �\}}
| �||
d� | �|
|d� q�W d � n1 s�0 Y |�� t |d�}| �||d � zt |d� | �
d
� W n t�y* Y n0 |�� d S )Nr% z+Registry didn't give back the correct valuer Tz&Didn't read back the correct test datar z'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!)�
QueryValuer r- � EnumValuer r* r. �QueryValueExr1 r r0 )r r2 r3 r �valr5 r$ �index�datar6 r7 r8 Zread_valZread_typr r r �_read_test_datau sF
�
�
���$
zBaseWinregTests._read_test_datac C s� t |tdt�}t ||dt�}tD ]\}}}t||� q t|�\}} }
| �|dd� | �| dd� |�� t||� zt||� | � d� W n t
y� Y n0 |�� t|t� zt |t�}| � d� W n t
y� Y n0 d S )Nr zsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)r r r r* ZDeleteValuer, r- r1 r! r0 r )r r2 r3 r5 r$ r6 r7 r8 r9 r: r; r r r �_delete_test_data� s*
z!BaseWinregTests._delete_test_datac C s( | � ||� | �||� | �||� d S r )r<