
    d                        d Z ddlZddlZddlZddlmZ ddlZddlm	Z	 dZ
 G d dej                  Z G d d	          Z G d
 dee	j        e	j                  Z G d dee	j        e	j                  Zd Zedk    rA e	j        ej                    e	j                     e	j                            d           dS dS )zGThis test unit checks control of dataset timestamps with track_times.

    N)Path)common 2aafb84ab739bb4ae61d2939dc010bfdc                   l    e Zd Z ej        d          Z ej                    Z ej                    Z	dS )Record   itemsizeN)
__name__
__module____qualname__tb	StringColvar1IntColvar2Int16Colvar3     <lib/python3.11/site-packages/tables/tests/test_timestamps.pyr   r      s<        2<###D29;;D2;==DDDr   r   c                       e Zd Zd ZdS )TrackTimesMixinc           
         | j                             |d| t          | j        d |          }|j        }t          | j                  D ]3}d| j        |z
  z  |d<   ||d<   |dz  |d<   |                                 4|                                 d |	                                D             }d	 |	                                D             }| j         
                    |d
| |d| |           | j                             |d| |d                    |dz             |           | j                             |d| t          j        d          dd                    |dz             |          }	|	                    |           | j                             |d| t          j                    d                    |dz             |          }
|
                    |           d S )Ntable)titlefilterstrack_timesz%04dr   r      r   c                     g | ]
}|d          S )r   r   .0xs     r   
<listcomp>z1TrackTimesMixin._add_datasets.<locals>.<listcomp>*       888!AfI888r   c                     g | ]
}|d          S )r   r   r!   s     r   r$   z1TrackTimesMixin._add_datasets.<locals>.<listcomp>+   r%   r   arrayzcol r   carrayzcol {})nameobjr   r   earrayr   r	   )r   vlarray   )h5filecreate_tabler   r   rowrangenrowsappendflushiterrowscreate_arraycreate_carrayformatcreate_earrayr   
StringAtomcreate_vlarray	Int16Atom)selfgroupjr   r   divar1Listvar3Listeavlas              r   _add_datasetszTrackTimesMixin._add_datasets   s    (()//3z155@	 ) B B Itz"" 	 	A$*q.1AfIAfIAAfIHHJJJJ 98u~~'7'788888u~~'7'7888  !):!::-8 	! 	: 	: 	:
 	!!%lqll&.(0A(>(>.9 	" 	; 	; 	; [&&ulqll')}a'@'@'@$'/q1u'='=3> ' @ @
 			( k((!)+)1Q)?)?5@ ) B B
 	

8r   N)r   r   r   rG   r   r   r   r   r      s#        . . . . .r   r   c                   2     e Zd ZdZdZ fdZd Zd Z xZS )TimestampTestCaseA title
   c                 p    t                                                       |                                  d S N)supersetUppopulateFile)r>   	__class__s    r   rO   zTimestampTestCase.setUpM   s,    r   c                     | j         j        }t          d          D ]+}t          |dz            }|                     |||           ,d S )Nr   r   )r/   rootr2   boolrG   )r>   r?   r@   r   s       r   rP   zTimestampTestCase.populateFileQ   sU     q 	6 	6Aq1u++Kua5555	6 	6r   c                    dD ]O}g }t          d          D ]}t          |dz            }|                    |          }| j                            |          }|                     |j        |           |                                }|                     |j        d           |                     |j	        d           |                     |j
        d           |s|                     |j        d           |                     |j        d           |                    |j                   |                     |d         |d                    QdS )z Checking retrieval of timestamps)z/table{}z/array{}z	/carray{}z	/earray{}z
/vlarray{}r   r   r      N)r2   rT   r9   r/   get_nodeassertEqualr   _get_obj_timestampsatimemtimebtimectimeassertNotEqualr4   assertGreaterEqual)r>   patterntracked_ctimesr@   r   noder+   
timestampss           r   test00_checkTimestampsz(TimestampTestCase.test00_checkTimestampsW   s`   & 	J 	JG  N1XX < <"1q5kk~~a((k**400  +>>> 4466
  !11555  !11555  !11555" <$$Z%5q9999''
(8!<<<"))**:;;;;##N1$5~a7HIIII3	J 	Jr   )	r   r   r   r   r3   rO   rP   rd   __classcell__)rQ   s   @r   rI   rI   H   sg        EE    6 6 6J J J J J J Jr   rI   c                   (    e Zd ZdZdZd Zd Zd ZdS )BitForBitTestCaserJ   rK   c                     | j                                          t          j        | j        d          | _         | j         j        }|                     |d|           | j                                          d S )Nw)moderV   )r/   closer   	open_fileh5fnamerS   rG   )r>   r   r?   s      r   repopulateFilez BitForBitTestCase.repopulateFile{   sj    l4<c::: 5![111r   c                 h   |                      d           |                     | j                  }|                      d           |                     | j                  }t          j        d           |                      d           |                     | j                  }|                      d           |                     | j                  }|                     t          |           |                     ||           |                     ||           |                     ||           dS )z8Checking bit-for-bit reproducibility with no track_timesFr(   TrV   N)rn   _get_digestrm   timesleeprX   	HEXDIGESTr^   )r>   hexdigest_wo_track_1hexdigest_w_track_1hexdigest_w_track_2hexdigest_wo_track_2s        r   test00_checkReproducibilityz-BitForBitTestCase.test00_checkReproducibility   s*    	...#//==---"..t|<<
1---"..t|<<...#//==$8999-/CDDD02EFFF/1DEEEEEr   c                     t          j                    }t          |                                          D ]}|                    |           |                                }|S rM   )hashlibmd5r   
read_bytesupdate	hexdigest)r>   filenamer{   datar~   s        r   rp   zBitForBitTestCase._get_digest   sV    kmmNN--// 	 	DJJtMMOO	r   N)r   r   r   r   r3   rn   rx   rp   r   r   r   rg   rg   v   sN        EE  F F F"    r   rg   c                  F   t           j                                        } d}t          |          D ]p}|                     t           j                            t                               |                     t           j                            t                               q| S )NrV   )r   unittest	TestSuiter2   addTest	makeSuiterI   rg   )theSuiteniterrB   s      r   suiter      s    ((**HE 5\\ G G223DEEFFF223DEEFFFFOr   __main__r   )defaultTest)__doc__rz   sysrq   pathlibr   tablesr   tables.testsr   rs   IsDescriptionr   r   TempFileMixinPyTablesTestCaserI   rg   r   r   
parse_argvargvprint_versionsr   mainr   r   r   <module>r      s     



                 .	    R   / / / / / / / /d+J +J +J +J +J)=/+J +J +J\$ $ $ $ $)=/$ $ $N	 	 	 zFchF
OW----- r   