Sindbad~EG File Manager
�
'Μg����ddlmZddlmZejd�ddlZddlZddlZddlmZGd�dej�Z
edk(rej�yy) �)�
import_helper)� os_helperzdbm.ndbmN)�errorc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zejejd
�d��Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zy)�DbmTestCasec��tj|_tjj|jd�|_|jj�y�N�c)r�TESTFN�filename�dbm�ndbm�open�d�close��selfs �//usr/local/lib/python3.12/test/test_dbm_ndbm.py�setUpzDbmTestCase.setUps6��!�(�(��
������t�}�}�c�2���������c�V�dD]$}tj|j|z��&y)N��z.pagz.dirz.db)r�unlinkr)r�suffixs r�tearDownzDbmTestCase.tearDowns#��1�F����T�]�]�V�3�4�2rc�0�tjj|jd�|_|j|jj
�g�d|jd<d|jd<d|jd<|jj
�|jd|j�|jd|j�|j|jdd�|j|jjd�d �|j|jjd
��|j|jjd
d�d�|jt�5|jdddd�|j|jjd
d�d�|j|jd
d�|jj�y#1swY�oxYw)
Nr
�b�asdatasbytes�019237410982340912840198242�12345678910�a�bsxxxsfoo�xxx)r
rrrr�assertEqual�keys�assertIn�get�assertIsNone�assertRaises�KeyError�
setdefaultrrs r� test_keyszDbmTestCase.test_keyssm�������t�}�}�c�2�������������+�����s��"����x�� =����}�������
��
�
�c�4�6�6�"��
�
�d�D�F�F�#��������)�7�3���������D�)�4�0����$�&�&�*�*�V�,�-���������F�F�3�V�<�
�
�
�x�
(��F�F�5�M�)�������*�*�6�6�:�F�C����������0������� )�
(�s�H�Hc���tjjdk(r|jd�tjj |j
d�|_|j|jj�g�d|jd<|j|jj�dg�|jd|j�|j|jdd�|j|jjd�d�|j|jjd�d�|jj�y)NzBerkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent oner
r�emptysemptyr)
r
r�library�skipTestrrrr%r&r'r(r,rrs r�test_empty_valuezDbmTestCase.test_empty_value(s����8�8���}�,��M�M�0�
1������t�}�}�c�2�������������+�����w������������
�3��
�
�h����'��������)�3�/���������H�-�s�3�������*�*�8�4�c�:������rc���dD]L} tjj|j|�|_|jj��Ny#t$r|j�Y�kwxYw)N)�r�rw�w�n)r
rrrrrr�fail)r�modes r�
test_modeszDbmTestCase.test_modes6sR��)�D�
������t�}�}�d�;���������*���
�� � ��
�s�A A�A/�.A/c�D�tjj|jd�5}d|d<ddd�tjj|jd�5}|j t|j
��dg�ddd�|jtjj�5}j
�ddd�|j tj�d�y#1swY��xYw#1swY�}xYw#1swY�GxYw)Nr
zcontext managerzndbm context managerr4sndbm context managerz"DBM object has already been closed)r
rrrr%�listr&r*r�str� exception)r�db�cms r�test_context_managerz DbmTestCase.test_context_manager>s���
�X�X�]�]�4�=�=�#�
.�"�):�B�%�&�/��X�X�]�]�4�=�=�#�
.�"����T�"�'�'�)�_�/F�.G�H�/��
�
�s�x�x�~�~�
.�"��G�G�I�/�����R�\�\�*�=� ?�/�
.��/�
.��/�
.�s#�C>�#+D
�?D�>D�
D�Dc��tjj|jd�5}d|d<ddd�tjj|jd�5}|j t|j
��dg�|jd|v�|j |dd�ddd�y#1swY��xYw#1swYyxYw)Nr
s
bytes value �sbytes key �r4)r
rrrr%r<r&�
assertTrue�rr?s r�
test_byteszDbmTestCase.test_bytesJs���
�X�X�]�]�4�=�=�#�
.�"�$7�B� �!�/�
�X�X�]�]�4�=�=�#�
.�"����T�"�'�'�)�_�/@�.A�B��O�O�-��3�4����R� 1�2�4G�H�/�
.�/�
.��
.�
.�s�B?�#AC�?C�Cc��tjj|jd�5}d|d<ddd�tjj|jd�5}|j t|j
��dj�g�|jdj�|v�|jd|v�|j |dj�dj��|j |ddj��ddd�y#1swY��xYw#1swYyxYw)Nr
uUnicode value 🐍uUnicode key 🐍r4) r
rrrr%r<r&�encoderCrDs r�test_unicodezDbmTestCase.test_unicodeRs���
�X�X�]�]�4�=�=�#�
.�"�+E�B�'�(�/�
�X�X�]�]�4�=�=�#�
.�"����T�"�'�'�)�_�/G�/N�/N�/P�.Q�R��O�O�4�;�;�=��C�D��O�O�4��:�;����R� 8� ?� ?� A�B�7�>�>�@�
B����R� 8�9�7�>�>�@�
B�
/�
.�/�
.��
.�
.�s�D-�#CD9�-D6�9Ec��tjj|jd�5}d|d<ddd�tjj|jd�5}|j t
�5|d=ddd�|j t
�5|d=ddd�|j t
�5d|d<ddd�ddd�y#1swY��xYw#1swY�bxYw#1swY�MxYw#1swY�6xYw#1swYyxYw)Nr
sbytes values bytes keyr4s
not exist keysnot exist value)r
rrrr*rrDs r�test_write_readonly_filez$DbmTestCase.test_write_readonly_file^s���
�X�X�]�]�4�=�=�#�
.�"�-�B�|��/�
�X�X�]�]�4�=�=�#�
.�"��"�"�5�)��'�(�*��"�"�5�)��|�$�*��"�"�5�)�'9��#�$�*�/�
.�/�
.��*�)��)�)��)�)��/�
.�s_�C�#D�9C�=D�C*�D�;C6�D�C�C' �#D�*C3 �/D�6C? �;D�Dz*requires OS support of non-ASCII encodingsc�B��tj�dD]%}|jtj�|z��'tj
j
�d�5}d|d<ddd�|jt�fd�dD���tj
j
�d�5}|jt|j��dg�|jd|v�|j|dd�ddd�y#1swY��xYw#1swYyxYw)Nrr
svalueskeyc3�b�K�|]&}tjj�|z����(y�w)N)�os�path�exists)�.0rrs �r� <genexpr>z5DbmTestCase.test_nonascii_filename.<locals>.<genexpr>qs,�����G�*E���G�G�N�N�8�f�+<�=�*E�s�,/r4)r�TESTFN_NONASCII�
addCleanuprr
rrrC�anyr%r<r&)rrr?rs @r�test_nonascii_filenamez"DbmTestCase.test_nonascii_filenameis�����,�,��1�F��O�O�I�,�,�h��.?�@�2�
�X�X�]�]�8�S�
)�R�!�B�v�J�*�����G�*E�G�G� H�
�X�X�]�]�8�S�
)�R����T�"�'�'�)�_�v�h�7��O�O�F�b�L�)����R��Z��2�*�
)� *�
)��*�
)�s�D �-AD� D�Dc�X�d}|jtjj�5}tjj |�ddd�|j|t
j��|j|jj|�y#1swY�UxYw)Nznonexisting-file)
r*r
rrrr'r=r>r%r)r�nonexisting_filer@s r�test_nonexisting_filez!DbmTestCase.test_nonexisting_filexsr��-��
�
�
�s�x�x�~�~�
.�"��H�H�M�M�*�+�/��
�
�&��B�L�L�(9�:�������.�.�0@�A�/�
.�s� B � B)c��tjjtj|j
�d�j
�yr )r
rrr�FakePathrrrs r�test_open_with_pathlib_pathz'DbmTestCase.test_open_with_pathlib_paths,�����
�
�i�(�(����7��=�C�C�Erc��tjjtj|j
�d�j
�yr )r
rrrM�fsencoderrrs r�test_open_with_bytes_pathz%DbmTestCase.test_open_with_bytes_path�s*�����
�
�b�k�k�$�-�-�0�#�6�<�<�>rc��tjjtjtj|j��d�j�yr ) r
rrrrZrMr]rrrs r�!test_open_with_pathlib_bytes_pathz-DbmTestCase.test_open_with_pathlib_bytes_path�s5�����
�
�i�(�(����T�]�]�)C�D�c�J�P�P�Rrc��tjj|jd�5}|j t|��ddd�y#1swYyxYwr )r
rrr�assertFalse�boolrDs r�test_bool_emptyzDbmTestCase.test_bool_empty�s8��
�X�X�]�]�4�=�=�#�
.�"����T�"�X�&�/�
.�
.�s�A�Ac��tjj|jd�5}d|d<|j t|��ddd�y#1swYyxYw�Nr
rr)r
rrrrCrcrDs r�test_bool_not_emptyzDbmTestCase.test_bool_not_empty�s?��
�X�X�]�]�4�=�=�#�
.�"��B�s�G��O�O�D��H�%�/�
.�
.�s� A�Ac���tjj|jd�5}d|d<ddd�|j tjj
t�y#1swY�9xYwrf)r
rrrr*rrcrDs r�test_bool_on_closed_db_raisesz)DbmTestCase.test_bool_on_closed_db_raises�sK��
�X�X�]�]�4�=�=�#�
.�"��B�s�G�/����#�(�(�.�.�$��3�/�
.�s�A)�)A2N)�__name__�
__module__�__qualname__rrr-r2r:rArErHrJ�unittest�
skipUnlessrrRrUrXr[r^r`rdrgri�rrrr s����
5��(��
?�I�
B� :��X����2�2�E�G�3�G�3�B�F�?�S�'�&�
4rr�__main__)
�test.supportrr�
import_modulerMrm�dbm.ndbmr
r�TestCaserrj�mainrorr�<module>rvsV��&�"��
���J�'� ����K4�(�#�#�K4�\�z���H�M�M�O�r
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists