
j\c           @@ s  d  d l  m Z d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 m Z m Z d  d l m Z m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z d
 e j f d     YZ d e j e f d     YZ d e j e f d     YZ d e j e f d     YZ d e j e f d     YZ  d e j e f d     YZ! d   Z" e# d k re j$ e j%  e j&   e j' d d  n  d S(   i    (   t   print_function(   t   absolute_importN(   t   Groupt   Leaft   Tablet   Array(   t	   StringColt   IntColt   Int16Colt   FloatColt
   Float32Col(   t   common(   t   unittest(   t   PyTablesTestCase(   t   ranget   Recordc           B@ s;   e  Z e d  d  Z e   Z e   Z e   Z	 e
   Z RS(   t   itemsizei   (   t   __name__t
   __module__R   t   var1R   t   var2R   t   var3R	   t   var4R
   t   var5(    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR      s
   			t   TreeTestCasec           B@ s   e  Z d  Z d Z d Z d Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z e j e j d d k  d  d    Z RS(   t   ws   This is the table titlei
   i   c         C@ s.   t  t |   j   |  j   |  j j   d  S(   N(   t   superR   t   setUpt   populateFilet   h5filet   close(   t   self(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   $   s    
c         C@ s  |  j  j } d } xot d  D]a} |  j  j | d t |  t d |  j d d  d |  j } | j	 } xn t |  j  D]] } d |  j | | d	 <| | d
 <| | | d <t
 |  | d <t
 |  | d <| j   qx W| j   g  | j   D] } | d	 ^ q } g  | j   D] } | d ^ q}	 |  j  j | d	 | d  |  j  j | d |	 d  |  j  j | d t |   }
 |
 } q Wd  S(   Ni   i   i   t   tablet   titlet   filterst   expectedrowss   %04dR   R   R   R   R   t   1t   4t   groupi   (   R   t   rootR   t   create_tablet   strR   R!   t   NoneR#   t   rowt   floatt   appendt   flusht   iterrowst   create_arrayt   create_group(   R   R&   t   maxshortt   jR    t   dt   it   xt   var1Listt   var4Listt   group2(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   +   s,    		

##c         C@ s  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ d d d d	 g } g  } x0 | D]( } |  j j	 |  } | j
 | j  qh W|  j | |  t  j r t d
  n  d d d d g } d d g } g  } x\ | D]T } xK | D]C } y |  j j	 | |  } Wn t k
 r$q X| j
 | j  q Wq W|  j | d d d d d d	 g  t  j rut d  n  d d d d d g } g  } g  }	 x | D] } y |  j j	 | d d } WnF t k
 rt  j r%t j   \ }
 } } t d  t |  q%qX| j
 | j  |	 j
 |  qW|  j | d d d d g  t  j r[t d  n  d d g } g  } xU |	 D]M } xD | D]< } y |  j j	 | | d  } Wn qX| j
 | j  qWqtW|  j | d d d d d d	 g  t  j rt d  n  d S(   s3   Checking the File.get_node() with string node namess   
s   -=i   s   Running %s.test00_getNode...t   rt   /s   /table0s   /group0/var1s   /group0/group1/var4s   get_node(pathname) test passeds   /group0s   /group0/group1s   /group0/group1/group2R   R   s   /var1s   /var4s   /group0/var4s   /group0/group1/var1s%   get_node(groupname, name) test passedt	   classnameR   s*   
Great!, the next LookupError was catched!s2   get_node(groupname, classname='Group') test passedR   s:   get_node(groupobject, name, classname='Array') test passedN(   R   t   verboset   printt	   __class__R   t   tablest	   open_filet   h5fnameR   t   get_nodeR-   t   _v_pathnamet   assertEqualt   LookupErrort   syst   exc_info(   R   t   nodelistt	   nodenamest   nodet   objectt
   nodegroupst	   nodepathsR&   t   namet   groupobjectst   typet   valuet	   tracebackt
   nodearrays(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test00_getNodeN   s|    						
		
			c         C@ s@  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ |  j j	 d  } |  j
 t | t   |  j j	 d d  } |  j
 t | t   |  j j	 |  j j j d  } |  j
 t | t   |  j j	 d	  } |  j
 t | t   |  j
 t | t   |  j j	 d d
 d  } |  j
 t | t   d S(   s+   Checking the File.get_node() with instancess   
s   -=i   s!   Running %s.test01_getNodeClass...R:   s   /group0/table1s   /group0t   table1s   /group0/var1t   group1R   N(   R   R=   R>   R?   R   R@   RA   RB   R   RC   t
   assertTruet
   isinstanceR   R'   t   group0R   R   R   (   R   R    t   arrR&   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01_getNodeClass   s     	c   
   
   C@ sU  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ |  j	 t
 |  j j d d  d d d	 d
 d g } g  } g  } x\ | D]T } y |  j j |  } Wn q X| j |  x | D] } | j | j  q Wq W|  j | d d d d d d	 d d g  t  j r#t d  n  g  } xO | D]G } y |  j j |  } Wn q0Xx | D] } | j | j  q]Wq0W|  j | d d	 d d d
 d d d g  t  j rt d  n  g  } x | D] } y |  j j | d  } WnF t
 k
 r-t  j rOt j   \ } } }	 t d  t |  qOqXx | D] } | j | j  q5WqW|  j | d	 d d d d d g  t  j rt d  n  g  } x | D] } y |  j j | d  } WnF t
 k
 rt  j r!t j   \ } } }	 t d  t |  q!qXx | D] } | j | j  qWqW|  j | d	 d g  t  j rQt d  n  d S(   s%   Checking the File.list_nodes() methods   
s   -=i   s   Running %s.test02_listNodes...R:   R;   t   NoSuchClasss   /group0s   /group0/table1s   /group0/group1/group2s   /var1s   /table0s   /var4s   /group0/group1s   /group0/var1s   /group0/var4s    list_nodes(pathname) test passeds   /group0/group1/table2s   /group0/group1/var1s   /group0/group1/var4s#   list_nodes(groupobject) test passedR   s(   
Great!, the next TypeError was catched!s7   list_nodes(groupobject, classname = 'Leaf') test passedR   s8   list_nodes(groupobject, classname = 'Table') test passedN(   R   R=   R>   R?   R   R@   RA   RB   R   t   assertRaisest	   TypeErrort
   list_nodest   extendR-   RD   RE   RG   RH   (
   R   RI   RJ   t   objectsRK   t
   objectlistRL   RQ   RR   RS   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test02_listNodes   s    								
			
		c      
   C@ s  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ |  j	 t
 |  j j d d  d d d	 d
 d g } g  } g  } xo | D]g } y) g  |  j j |  D] } | ^ q } Wn q X| j |  x | D] } | j | j  q Wq W|  j | d d d d d d	 d d g  t  j r6t d  n  g  } xb | D]Z } y) g  |  j j |  D] } | ^ q_} Wn qCXx | D] } | j | j  qWqCW|  j | d d	 d d d
 d d d g  t  j rt d  n  g  } x | D] } y, g  |  j j | d  D] } | ^ q} WnF t
 k
 rft  j rt j   \ } }	 }
 t d  t |	  qqXx | D] } | j | j  qnWqW|  j | d	 d d d d d g  t  j rt d  n  g  } x | D] } y, g  |  j j | d  D] } | ^ q} WnF t
 k
 rKt  j rmt j   \ } }	 }
 t d  t |	  qmqXx | D] } | j | j  qSWqW|  j | d	 d g  t  j rt d  n  d S(   s%   Checking the File.iter_nodes() methods   
s   -=i   s   Running %s.test02b_iterNodes...R:   R;   R]   s   /group0s   /group0/table1s   /group0/group1/group2s   /var1s   /table0s   /var4s   /group0/group1s   /group0/var1s   /group0/var4s    iter_nodes(pathname) test passeds   /group0/group1/table2s   /group0/group1/var1s   /group0/group1/var4s#   iter_nodes(groupobject) test passedR   s(   
Great!, the next TypeError was catched!s7   iter_nodes(groupobject, classname = 'Leaf') test passedR   s8   iter_nodes(groupobject, classname = 'Table') test passedN(   R   R=   R>   R?   R   R@   RA   RB   R   R^   R_   R`   t
   iter_nodesRa   R-   RD   RE   RG   RH   (   R   RI   RJ   Rb   RK   t   oRc   RL   RQ   RR   RS   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test02b_iterNodes  s    			)		)		,	
		,	
		c         C@ sJ  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ g  } g  } g  } x |  j j	   D]v } | j
 | j  x- |  j j | d  D] } | j
 | j  q Wx- |  j j | d  D] } | j
 | j  q Wqk W|  j | d d	 d
 d g  |  j | d d d g  |  j | d d d d d d g  t  j rRt d  n  g  } g  } g  } x |  j j	 d
  D]v } | j
 | j  x- |  j j | d  D] } | j
 | j  qWx- |  j j | d  D] } | j
 | j  qWqwW|  j | d
 d g  |  j | d g  |  j | d d g  t  j rFt d  n  d S(   s&   Checking the File.walk_groups() methods   
s   -=i   s!   Running %s.test03_TraverseTree...R:   R   R   R;   s   /group0s   /group0/group1s   /group0/group1/group2s   /table0s   /group0/table1s   /group0/group1/table2s   /var1s   /var4s   /group0/var1s   /group0/var4s   /group0/group1/var1s   /group0/group1/var4s   walk_groups() test passeds!   walk_groups(pathname) test passedN(   R   R=   R>   R?   R   R@   RA   RB   R   t   walk_groupsR-   RD   R`   RE   (   R   t   groupst   tables_t   arraysR&   R    R[   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test03_TraverseTree|  sT    			
					c   	      C@ s  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ |  j	 t
 t |  j j d d   g  } g  } g  } g  } xZ |  j j d d	  D]C } | j | j  x* | j d d
  D] } | j | j  q Wq Wx- |  j j j d
  D] } | j | j  q Wx- |  j j d d  D] } | j | j  q&W|  j | d d d d g  |  j | d d d g  |  j | d d d g  |  j | d d d d d d g  t  j rt d  n  g  } g  } g  } x |  j j d d d	 D]p } | j | j  x' | j d
  D] } | j | j  qWx- |  j j | d  D] } | j | j  qGWqW|  j | d d g  |  j | d g  |  j | d d g  t  j rt d  n  d S(   s   Checking File.walk_nodess   
s   -=i   s   Running %s.test04_walkNodes...R:   R;   R]   R<   R   R   R   s   /group0s   /group0/group1s   /group0/group1/group2s   /table0s   /group0/table1s   /group0/group1/table2s   /var1s   /var4s   /group0/var1s   /group0/var4s   /group0/group1/var1s   /group0/group1/var4s.   File.__iter__() and Group.__iter__ test passeds+   walk_nodes(pathname, classname) test passedN(   R   R=   R>   R?   R   R@   RA   RB   R   R^   R_   t   nextt
   walk_nodesR-   RD   t   _f_iter_nodesR'   t   _f_walknodesRE   (	   R   Ri   t   tables1t   tables2Rk   R&   R    R[   Rj   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test04_walkNodes  sd    			
	
	
					i    i   s2   Special method `__dir__()` introduced in Python-3.c         C@ sH  t  j r1 t d d d  t d |  j j  n  t j |  j d  |  _ t	 |  j j
  } |  j d |  |  j d |  |  j d |  |  j d |  |  j d	 |  |  j d
 |  |  j d |  |  j d |  |  j d |  |  j d |  |  j t t |   t |   t	 |  j j
 j  } |  j d |  |  j d |  |  j d |  |  j d |  |  j t t |   t |   t	 |  j j
 j j  } |  j d |  |  j d |  |  j d |  |  j d |  |  j d
 |  |  j d |  |  j t t |   t |   t  j rDt d  n  d S(   s   Checking Group.__dir__s   
s   -=i   s   Running %s.test05_dir...R:   t   _v_childrent   _v_attrst   _g_get_child_group_classt   _f_closeRZ   t   table0R   RV   t   table2RW   R9   s   Group.__dir__ test passedN(   R   R=   R>   R?   R   R@   RA   RB   R   t   dirR'   t   assertInt   assertNotInt   assertSequenceEqualt   sortedt   setRZ   RW   (   R   t   root_dirt   root_group0_dirt   root_group0_group1_dir(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt
   test05_dir  sF    		(   R   R   t	   open_modeR!   R#   t
   appendrowsR   R   RU   R\   Rd   Rg   Rl   Rs   R   t   skipIfRG   t   version_infoR   (    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR      s   		#	Q		b	`	7	Ct   DeepTreeTestCasec           B@ sb   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z e	 j
 e j d  d    Z RS(	   s3   Checks for deep hierarchy levels in PyTables trees.c         C@ sB  t  t |   j   t j r( d |  _ n	 d |  _ t j rM t d |  j  n  |  j j	 } t j ru t d d d n  x t
 |  j  D] } t j r t d | d d n  |  j j | d d	 d	 g d
 |  |  j j | d d	 d	 g d
 |  |  j j | d t |   |  j j | d t |   } q W|  j j   d  S(   Ni   i@   s   Maximum depth tested :s   Depth writing progress: t   endt    s   %3d,t   arrayi   s	   depth: %dt   array2t   group2_R&   (   R   R   R   R   t   heavyt   maxdepthR=   R>   R   R'   R   R0   R1   R)   R   (   R   R&   t   depth(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   3  s&    							#c      
   C@ s   t  j | d d  } | j } t j r= t d d d n  x t |  j  D] } t j rs t d | d d n  |  j | j	 d d g  |  j
 d | k  |  j
 d	 t |  | k  | j | d
 t |   } qM Wt j r t   n  Wd  QXd  S(   Nt   modeR:   s   
Depth reading progress: R   R   s   %3d,i   R   R   R&   (   R@   RA   R'   R   R=   R>   R   R   RE   R   RX   R)   RC   (   R   t   filenameR   R&   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   _check_treeX  s    			 	c         C@ s   |  j  |  j  d S(   s&   Creation of a large depth object tree.N(   R   RB   (   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test00_deepTreep  s    c      	   C@ s   t  j |  j d d |  _ t j d  } zt t  j | d d L } t j r[ t d  n  |  j j	 |  j j
 | j
 d t |  j j   Wd QX|  j |  Wd t j j |  r t j |  n  Xd S(   s"   Copy of a large depth object tree.R   R:   s   .h5R   s   
Copying deep tree...t	   recursiveN(   R@   RA   RB   R   t   tempfilet   mktempR   R=   R>   t	   copy_nodeR'   t   TrueR   R   t   ost   patht   existst   remove(   R   t   h5fname2t   h5file2(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01a_copyDeepTreeu  s    	c      	   C@ s   t  j |  j d d d d |  _ t j d  } zz t  j | d d d d L } t j rg t d  n  |  j j	 |  j j
 | j
 d t |  j j   Wd	 QX|  j |  Wd	 t j j |  r t j |  n  Xd	 S(
   s8   Copy of a large depth object tree with small node cache.R   R:   t   node_cache_slotsi
   s   .h5R   s   
Copying deep tree...R   N(   R@   RA   RB   R   R   R   R   R=   R>   R   R'   R   R   R   R   R   R   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01b_copyDeepTree  s    	c      	   C@ s   t  j |  j d d d d |  _ t j d  } zz t  j | d d d d L } t j rg t d  n  |  j j	 |  j j
 | j
 d t |  j j   Wd	 QX|  j |  Wd	 t j j |  r t j |  n  Xd	 S(
   s5   Copy of a large depth object tree with no node cache.R   R:   R   i    s   .h5R   s   
Copying deep tree...R   N(   R@   RA   RB   R   R   R   R   R=   R>   R   R'   R   R   R   R   R   R   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01c_copyDeepTree  s    	s   only in heavy modec      	   C@ s   t  j |  j d d d d |  _ t j d  } zz t  j | d d d d L } t j rg t d  n  |  j j	 |  j j
 | j
 d t |  j j   Wd	 QX|  j |  Wd	 t j j |  r t j |  n  Xd	 S(
   s9   Copy of a large depth object tree with static node cache.R   R:   R   i s   .h5R   s   
Copying deep tree...R   N(   R@   RA   RB   R   R   R   R   R=   R>   R   R'   R   R   R   R   R   R   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01d_copyDeepTree  s    	(   R   R   t   __doc__R   R   R   R   R   R   R   t
   skipUnlessR   R   R   (    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   0  s   	%					t   WideTreeTestCasec           B@ s    e  Z d  Z d   Z d   Z RS(   s2   Checks for maximum number of children for a Group.c         C@ s  t  j r d } n d } t  j rV t d d d  t d |  j j  t d |  n  d d g } t  j r~ t d	 d
 d n  xa t |  D]S } t  j r t d | d
 d n  |  j j |  j j	 d t
 |  | d |  q Wt  j r t   n  t j   } d d g } |  j   t  j rQt d | t j   | f  t d d
 d n  xo t |  D]a } t  j rt d | d
 d n  t |  j j	 d t
 |   } | j   } |  j | |  q^Wt  j rt   n  d S(   s  Checking creation of large number of leafs (1024) per group.

        Variable 'maxchildren' controls this check. PyTables support up
        to 4096 children per group, but this would take too much memory
        (up to 64 MB) for testing purposes (may be we can add a test for
        big platforms). A 1024 children run takes up to 30 MB. A 512
        children test takes around 25 MB.

        i   i   s   
s   -=i   s   Running %s.test00_wideTree...s#   Maximum number of children tested :i   s   Children writing progress: R   R   s   %3d,R   s	   child: %ds/   
Time spent opening a file with %d arrays: %s ss   
Children reading progress: N(   R   R   R=   R>   R?   R   R   R   R0   R'   R)   t   timet   _reopent   getattrt   readRE   (   R   t   maxchildrent   at   childt   t1t   array_t   b(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test00_Leafs  sB    						

			c         C@ s  t  j r d } n d } t  j rV t d d d  t d |  j j  t d |  n  t  j rr t d d	 d
 n  x^ t |  D]P } t  j r t d | d	 d
 n  |  j j |  j j	 d t
 |  d |  q Wt  j r t   n  t j   } |  j   t  j r6t d | t j   | f  t d d	 d
 n  xj t |  D]\ } t  j rit d | d	 d
 n  t |  j j	 d t
 |   } |  j | j d |  qCWt  j rt   n  d S(   s  Checking creation of large number of groups (1024) per group.

        Variable 'maxchildren' controls this check. PyTables support up
        to 4096 children per group, but this would take too much memory
        (up to 64 MB) for testing purposes (may be we can add a test for
        big platforms). A 1024 children run takes up to 30 MB. A 512
        children test takes around 25 MB.

        i   i   s   
s   -=i   s   Running %s.test00_wideTree...s#   Maximum number of children tested :s   Children writing progress: R   R   s   %3d,R&   s	   child: %ds/   
Time spent opening a file with %d groups: %s ss   
Children reading progress: N(   R   R   R=   R>   R?   R   R   R   R1   R'   R)   R   R   R   RE   t   _v_title(   R   R   R   R   R&   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01_wideTree  s<    						

			(   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR     s   	:t   HiddenTreeTestCasec           B@ s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z RS(   s0   Check for hidden groups, leaves and hierarchies.c         C@ sY  t  t |   j   g  |  _ g  |  _ |  j } | j d d d g  | j d d  } | j | d d g  | j | d d g  | j | d  } | j | d d g  |  j j d d d	 d
 d d g  | j d d d g  | j d d  } | j | d d g  | j | d d g  | j | d d g  |  j j d d d d d g  d  S(   NR;   R   i    t   gt   a1t   a2s   /as   /gs   /g/a1s   /g/a2s   /g/gs   /g/g/at   _p_at   _p_gs   /_p_as   /_p_gs   /_p_g/as
   /_p_g/_p_as   /g/_p_a(	   R   R   R   t   visiblet   hiddenR   R0   R1   Ra   (   R   t   h5fR   t   g_gt   hg(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   A  s$    			"	c         C@ s   |  j  j } t j d d t x+ |  j D]  } |  j | | k d |  q) Wx+ |  j D]  } |  j | | k d |  qW Wt j d d t d S(   s*   Absence of hidden nodes in `File.objects`.t   ignoret   categorys2   Missing visible node ``%s`` from ``File.objects``.s-   Found hidden node ``%s`` in ``File.objects``.t   defaultN(   R   Rb   t   warningst   filterwarningst   DeprecationWarningR   RX   R   (   R   Rb   t   vpatht   hpath(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   _test00_objects^  s    		c         @ s`     f d   } t  j d d t | d d
  | d d  | d d  t  j d	 d t d
 S(   s6   Object dictionaries conformance with ``walk_nodes()``.c         @ s     j  } t | |   } g  | j d |  D] } | j ^ q+ } g  | D] } | ^ qG } | j   | j     j | | d |     j t |  t |  d |   d  S(   NR;   s8   nodes in ``%s`` do not match those from ``walk_nodes()``s6   length of ``%s`` differs from that of ``walk_nodes()``(   R   R   Rn   RD   t   sortRE   t   len(   t   dictNameR<   t   file_Rb   RK   t	   walkPathsR   t	   dictPaths(   R   (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt	   dictChecku  s    	%

R   R   Rb   Ri   R   t   leavesR   R   N(   R   R   R   R*   (   R   R   (    (   R   s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   _test00b_objectsr  s    c         C@ sO   |  j  } x |  j D] } | j |  q Wx |  j D] } | j |  q4 Wd S(   s(   Node availability via `File.get_node()`.N(   R   R   RC   R   (   R   R   R   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01_getNode  s
    	c         C@ sM   |  j  } x= |  j j d  D]) } | j } |  j | | k d |  q Wd S(   s-   Hidden group absence in `File.walk_groups()`.R;   s"   Walked across hidden group ``%s``.N(   R   R   Rh   RD   RX   (   R   R   R&   t   pathname(    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test02_walkGroups  s
    		c         C@ sM   |  j  } x= |  j j d  D]) } | j } |  j | | k d |  q Wd S(   s+   Hidden node absence in `File.walk_nodes()`.R;   s!   Walked across hidden node ``%s``.N(   R   R   Rn   RD   RX   (   R   R   RK   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test03_walkNodes  s
    		c         C@ sM   |  j  } x= |  j j d  D]) } | j } |  j | | k d |  q Wd S(   s9   Listing visible nodes under a visible group (list_nodes).s   /gs   Listed hidden node ``%s``.N(   R   R   R`   RD   RX   (   R   R   RK   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test04_listNodesVisible  s
    		c         C@ sM   |  j  } x= |  j j d  D]) } | j } |  j | | k d |  q Wd S(   s9   Listing visible nodes under a visible group (iter_nodes).s   /gs   Listed hidden node ``%s``.N(   R   R   Re   RD   RX   (   R   R   RK   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test04b_listNodesVisible  s
    		c         C@ s   |  j  } d } t } xR |  j j d  D]> } | j } | | k rL t } n  |  j | | k d |  q( W|  j | d |  d S(   s8   Listing visible nodes under a hidden group (list_nodes).s   /_p_g/as   /_p_gs   Listed hidden node ``%s``.s"   Hidden node ``%s`` was not listed.N(   R   t   FalseR   R`   RD   R   RX   (   R   R   t   node_to_findt
   found_nodeRK   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test05_listNodesHidden  s    				c         C@ s   |  j  } d } t } xR |  j j d  D]> } | j } | | k rL t } n  |  j | | k d |  q( W|  j | d |  d S(   s8   Listing visible nodes under a hidden group (iter_nodes).s   /_p_g/as   /_p_gs   Listed hidden node ``%s``.s"   Hidden node ``%s`` was not listed.N(   R   R   R   Re   RD   R   RX   (   R   R   R   R   RK   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test05b_iterNodesHidden  s    				c         C@ s0   |  j  j   t j |  j  |  _  |  j   d S(   s#   Reopening a file with hidden nodes.N(   R   R   R@   RA   RB   t   test00_objects(   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   _test06_reopen  s    c         C@ su   |  j  j } |  j | d   |  j  j d d d  |  j | d   |  j  j d d d  |  j | d   d S(   s0   Moving a node between hidden and visible groups.s   /_p_g/as   /gR   s   /g/as   /_p_gN(   R   t   is_visible_nodet   assertFalset	   move_nodeRX   (   R   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test07_move  s    c         C@ sI   |  j  d |  j k  |  j j j j d t  |  j d |  j k  d S(   s.   Removing a visible group with hidden children.s   /g/_p_aR   N(   RX   R   R'   R   t	   _f_removeR   R   (   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test08_remove  s    (   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   >  s   				
	
	
	
	
				t   CreateParentsTestCasec           B@ sD   e  Z d  Z e j d d  Z d   Z d   Z d   Z d   Z	 RS(   s   Test the ``createparents`` flag.

    These are mainly for the user interface.  More thorough tests on the
    workings of the flag can be found in the ``test_do_undo.py`` module.

    t	   compleveli   c         C@ sL   t  t |   j   |  j j d d d g  |  j j d d d |  j d  S(   NR;   R   i   R&   R"   (   R   R   R   R   R0   R1   R"   (   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR   	  s    c         C@ s   |  j  |  j  j } } |  j t | j | j d d g d t |  j t | j d | j d t |  j t | j d | j d t |  j t | j	 d | d t d S(   s-   Using the right type of parent node argument.R[   i   t   createparentss   /arrays   /groupN(
   R   R'   R^   R_   R0   R&   R   R   R   t   copy_children(   R   R   R'   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test00_parentType  s    c      	   C@ s   |  j  t j |  j j d d d t |  j d |  j k  |  j  t j |  j j d d d t d t |  j d |  j k  d S(   s4   Placing a node inside a nonexistent child of itself.s   /groups   /group/foo/barR   s
   /group/fooR   N(	   R^   R@   t	   NodeErrorR   R   R   R   R   RB   (   R   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test01_inside  s    		c         C@ sf   |  j  j d d d t |  j d |  j  k  x0 |  j  j d  D] } |  j |  j | j  qB Wd S(   s1   Propagating the filters of created parent groups.s   /group/foo/bart   bazR   s   /group/foo/bar/bazs   /groupN(   R   R1   R   RX   Rh   RE   R"   t
   _v_filters(   R   R&   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   test02_filters'  s    (
   R   R   R   R@   t   FiltersR"   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyR     s   			c          C@ s   t  j   }  d } x t |  D]t } |  j t  j t   |  j t  j t   |  j t  j t   |  j t  j t   |  j t  j t	   q W|  S(   Ni   (
   R   t	   TestSuiteR   t   addTestt	   makeSuiteR   R   R   R   R   (   t   theSuitet   niterR5   (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   suite0  s    t   __main__t   defaultTestR   ((   t
   __future__R    R   R   RG   R   R   R   R@   R   R   R   R   R   R   R   R	   R
   t   tables.testsR   t   tables.tests.commonR   R   t   TestCaset	   six.movesR   t   IsDescriptionR   t   TempFileMixinR   R   R   R   R   R   R   t
   parse_argvt   argvt   print_versionst   main(    (    (    s5   lib/python2.7/site-packages/tables/tests/test_tree.pyt   <module>   s4   "(  u1	
