a
    =_O;                     @   sz  d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ dd Z	G dd deZ
G d	d
 d
e
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZG dd deZG dd deZG dd dejeZG dd deZG dd deZG dd  d ejeZG d!d" d"eZG d#d$ d$eZd%d& Zed'krvd dlZeej e  ej d&d( dS ))    N)common)unittest)PyTablesTestCasec                 C   s   t jr tdd tdt|  tj| dd}|j}z |}||d|d W |  n
|  0 tj| dd}|j}zL|j	
 }||kst jrtd	 td
| td| ||ksJ W |  n
|  0 d S )N
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning test for object %sw)mode	somearray
Some arrayrz#Write and read lists/tuples differ!zObject written:zObject read:)r   verboseprinttypetablesZ	open_filerootcreate_arraycloser	   read)filenameZ	testTupleZfilehr   ab r   6lib/python3.9/site-packages/tables/tests/test_lists.py	WriteRead   s&    



r   c                       s8   e Zd Z fddZ fddZdd Zdd Z  ZS )	BasicTestCasec                    s$   t t|   td| _d | _d S Nz.h5)superr   setUptempfilemktemph5fnameh5fileself	__class__r   r   r   1   s    zBasicTestCase.setUpc                    s@   | j d ur| j   tj| jr.t| j tt| 	  d S N)
r!   r   ospathexistsr    remover   r   tearDownr"   r$   r   r   r+   6   s
    

zBasicTestCase.tearDownc                 C   s   | j }t| j| dS )z0Data integrity during recovery (character types)N)charListr   r    r#   r   r   r   r   test00_char=   s    zBasicTestCase.test00_charc                 C   s   | j }t| j| dS )z0Data integrity during recovery (numerical types)N)numericalListr   r    r-   r   r   r   test01_typesC   s    zBasicTestCase.test01_types__name__
__module____qualname__r   r+   r.   r0   __classcell__r   r   r$   r   r   0   s   r   c                   @   s   e Zd ZdZdZdZdS )Basic0DOneTestCasezRank-0 case 1      3Nr2   r3   r4   titler/   r,   r   r   r   r   r6   J   s   r6   c                   @   s   e Zd ZdZdZdZdS )Basic0DTwoTestCasezRank-0 case 2gQ@@s  3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333Nr9   r   r   r   r   r;   Q   s   r;   c                   @   s   e Zd ZdZdgZdgZdS )Basic1DOneTestCasezRank-1 case 1r7      aNr9   r   r   r   r   r<   _   s   r<   c                   @   s   e Zd ZdZddgZdgZdS )Basic1DTwoTestCasezRank-1 case 2g	@g@   aaaNr9   r   r   r   r   r>   f   s   r>   c                   @   s,   e Zd ZdZddggd Zddggd ZdS )Basic2DTestCasezRank-2 case 1            qq   zzNr9   r   r   r   r   r@   m   s   r@   c                   @   sX   e Zd ZdZddgddggggggggggd Zddgd	d
ggggggggggd ZdS )Basic10DTestCasezRank-10 case 1rA   rB   r7      rC   r=      brD   rE   Nr9   r   r   r   r   rF   t   s   $rF   c                       s8   e Zd Z fddZ fddZdd Zdd Z  ZS )	ExceptionTestCasec                    s$   t t|   td| _d | _d S r   )r   rI   r   r   r   r    r!   r"   r$   r   r   r   }   s    zExceptionTestCase.setUpc                    s@   | j d ur| j   tj| jr.t| j tt| 	  d S r&   )
r!   r   r'   r(   r)   r    r*   r   rI   r+   r"   r$   r   r   r+      s
    

zExceptionTestCase.tearDownc                 C   sb   t jrtdd td| j  | j}| ttf t| j	| W d   n1 sT0    Y  dS )z0Non suppported lists objects (character objects)r   r   zRunning test for %sN)
r   r   r   r:   r,   assertRaises
ValueError	TypeErrorr   r    r-   r   r   r   r.      s    
zExceptionTestCase.test00_charc                 C   sD   | j }| ttf t| j| W d   n1 s60    Y  dS )z,Non supported lists object (numerical types)N)r/   rJ   rK   rL   r   r    r-   r   r   r   r0      s    zExceptionTestCase.test01_typesr1   r   r   r$   r   rI   |   s   
rI   c                   @   s(   e Zd ZdZdddggZdddggZdS )	Basic1DFourTestCasez Rank-1 case 4 (non-regular list)r7   rG   g@r?   s   bbbs   cccNr9   r   r   r   r   rM      s   rM   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )GetItemTestCasec                 C   sV   | j }| j| jjd|d}tjr>td|d  td|d  | |d |d  dS )z'Single element access (character types)r	   r
   Original first element:r   Read first element:Nr,   r!   r   r   r   r   r   assertEqualr#   r   arrr   r   r   test00_single   s    zGetItemTestCase.test00_singlec                 C   sV   | j }| j| jjd|d}tjr>td|d  td|d  | |d |d  dS )z'Single element access (numerical types)r	   r
   rO   r   rP   Nr/   r!   r   r   r   r   r   rR   rS   r   r   r   test01_single   s    zGetItemTestCase.test01_singlec                 C   sf   | j }| j| jjd|d}tjrFtd|dd  td|dd  | |dd |dd  dS )z&Range element access (character types)r	   r
   Original elements:rA   rG   Read elements:N
charListMEr!   r   r   r   r   r   rR   rS   r   r   r   test02_range   s    zGetItemTestCase.test02_rangec                 C   sf   | j }| j| jjd|d}tjrFtd|dd  td|dd  | |dd |dd  dS )&Range element access (numerical types)r	   r
   rX   rA   rG   rY   NnumericalListMEr!   r   r   r   r   r   rR   rS   r   r   r   test03_range   s    zGetItemTestCase.test03_rangec                 C   sn   | j }| j| jjd|d}tjrJtd|ddd  td|ddd  | |ddd |ddd  dS )	z/Range element access, strided (character types)r	   r
   rX   rA   rG   rB   rY   NrZ   rS   r   r   r   test04_range   s    zGetItemTestCase.test04_rangec                 C   sn   | j }| j| jjd|d}tjrJtd|ddd  td|ddd  | |ddd |ddd  dS )	r]   r	   r
   rX   rA   rG   rB   rY   Nr^   rS   r   r   r   test05_range   s    zGetItemTestCase.test05_rangec                 C   sV   | j }| j| jjd|d}tjr>td|d  td|d  | |d |d  dS )z/Negative Index element access (character types)r	   r
   zOriginal last element:zRead last element:NrZ   rS   r   r   r   test06_negativeIndex   s    z$GetItemTestCase.test06_negativeIndexc                 C   sV   | j }| j| jjd|d}tjr>td|d  td|d  | |d |d  dS )z/Negative Index element access (numerical types)r	   r
   zOriginal before last element:zRead before last element:Nr^   rS   r   r   r   test07_negativeIndex  s    z$GetItemTestCase.test07_negativeIndexc                 C   sf   | j }| j| jjd|d}tjrFtd|dd  td|dd  | |dd |dd  dS )z/Negative range element access (character types)r	   r
   Original last elements:rc   Read last elements:NrZ   rS   r   r   r   test08_negativeRange  s    z$GetItemTestCase.test08_negativeRangec                 C   sf   | j }| j| jjd|d}tjrFtd|dd  td|dd  | |dd |dd  dS )z/Negative range element access (numerical types)r	   r
   rg   rh   rc   ri   Nr^   rS   r   r   r   test09_negativeRange   s    z$GetItemTestCase.test09_negativeRangeN)r2   r3   r4   rU   rW   r\   r`   ra   rb   rd   rf   rj   rk   r   r   r   r   rN      s   rN   c                   @   s,   e Zd ZdZdgZg dZdgZg dZdS )GI1ListTestCaseRank-1 case 1 (lists)r7   r7   rB   rA   r   rG   rC      r8   s   321s   221s   121s   021s   421s   521   621Nr2   r3   r4   r:   r/   r_   r,   r[   r   r   r   r   rl   /  s
   rl   c                   @   sj   e Zd ZdZddgZg dg dg dg dg dgZddgZg d	g d
g dg d	g dg dgZdS )GI2ListTestCaseRank-1,2 case 2 (lists)r7   rG   rn   rB   rA   r   rG   rC   ro      rG   r7   rB   rA   r   rG   rC   r=   rH   rp      21ry   s   11s   02s   42ry   s   61s   31ry   s   12ry   s   41s   51rq   s   3241s   2321s   13216s   0621s   4421s   5421s   a621s   a321s   s221s   d121s   g021s   b421s   5vvv21s   6zxzxs21Nrr   r   r   r   r   rs   7  s    rs   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
GeneratorTestCasec                 C   sb   | j }| j| jjd|d}dd |D }dd |D }tjrRtd| td| | || dS )	z:Testing generator access to Arrays, single elements (char)r	   r
   c                 S   s   g | ]}|qS r   r   .0ir   r   r   
<listcomp>V      z4GeneratorTestCase.test00a_single.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r~   r   r   r   r   W  r   Result of original iterator:Result of read generator:NrQ   r#   r   rT   ZgaZgarrr   r   r   test00a_singleM  s    

z GeneratorTestCase.test00a_singlec                 C   s   | j }| j| jjd|d}t|d tr:dd |D }ndd |D }dd |D }tjrptd| td	| | 	|| d
S )z<Testing generator access to Arrays, multiple elements (char)r	   r
   r   c                 S   s   g | ]}t |qS r   listr~   r   r   r   r   g  r   z0GeneratorTestCase.test00b_me.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r~   r   r   r   r   i  r   c                 S   s   g | ]}|qS r   r   r~   r   r   r   r   j  r   r   r   N)
r[   r!   r   r   
isinstancetupler   r   r   rR   r   r   r   r   
test00b_me]  s    

zGeneratorTestCase.test00b_mec                 C   sb   | j }| j| jjd|d}dd |D }dd |D }tjrRtd| td| | || dS )	z=Testing generator access to Arrays, single elements (numeric)r	   r
   c                 S   s   g | ]}|qS r   r   r~   r   r   r   r   y  r   z4GeneratorTestCase.test01a_single.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r~   r   r   r   r   z  r   r   r   NrV   r   r   r   r   test01a_singlep  s    

z GeneratorTestCase.test01a_singlec                 C   s   | j }| j| jjd|d}t|d tr:dd |D }ndd |D }dd |D }tjrptd| td	| | 	|| d
S )z?Testing generator access to Arrays, multiple elements (numeric)r	   r
   r   c                 S   s   g | ]}t |qS r   r   r~   r   r   r   r     r   z0GeneratorTestCase.test01b_me.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r~   r   r   r   r     r   c                 S   s   g | ]}|qS r   r   r~   r   r   r   r     r   r   r   N)
r_   r!   r   r   r   r   r   r   r   rR   r   r   r   r   
test01b_me  s    

zGeneratorTestCase.test01b_meN)r2   r3   r4   r   r   r   r   r   r   r   r   r}   L  s   r}   c                   @   s,   e Zd ZdZdgZg dZdgZg dZdS )GE1ListTestCaserm   r7   rn   r8   rp   Nrr   r   r   r   r   r     s
   r   c                   @   sj   e Zd ZdZddgZg dg dg dg dg dgZddgZg d	g d
g dg d	g dg dgZdS )GE2ListTestCasert   r7   rG   rn   ru   rw   r=   rH   rp   rx   rz   r{   r|   Nrr   r   r   r   r   r     s    r   c                  C   s   t  } d}t|D ]}| t t | t t | t t | t t | t t	 | t t
 | t t | t t | t t | t t | t t q| S )NrA   )r   Z	TestSuiterangeZaddTestZ	makeSuiter6   r;   r<   r>   rM   r@   rF   rl   rs   r   r   )ZtheSuiteZniterr   r   r   r   suite  s    r   __main__)ZdefaultTest)!r'   r   r   Ztables.testsr   Ztables.tests.commonr   r   ZTestCaser   r   r6   r;   r<   r>   r@   rF   rI   rM   ZTempFileMixinrN   rl   rs   r}   r   r   r   r2   sysZ
parse_argvargvZprint_versionsmainr   r   r   r   <module>   s8   $ H	
