
                             S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJs  Jr  S rS r " S S\R&                  5      rg)z8Unit tests for name_expansion.CopyObjectsIterator class.    )absolute_import)print_function)division)unicode_literals)DestinationInfo)CopyObjectsIterator)%NameExpansionIteratorDestinationTuple)NameExpansionResult)StorageUrlFromStringNc           
   #   T   #    U  H  n[        U5      n[        USSSUS S9v   M      g 7f)NF)source_storage_urlis_multi_source_request!is_multi_top_level_source_requestnames_containerexpanded_storage_urlexpanded_result)r   r
   )src_url_strssrc_url_strstorage_urls      9platform/gsutil/gslib/tests/test_copy_objects_iterator.py_ConstructNameExpansionIteratorr      s7     !k&{3K
6;@E.33>.24 4 "s   &(c           	   #      #    [        X5       H1  u  p#[        [        U5      [        [	        U5      S5      5      nUv   M3     g 7f)NF)zipr	   r   r   r   )src_url_strs_arraydst_url_strsr   dst_url_strname_expansion_iter_dst_tuples        r   7_ConstrcutNameExpansionIteratorDestinationTupleIteratorr   )   sE     #&'9#Hl$I'5,[95A%C! ('	 $Is   AAc                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )TestCopyObjectsIterator2   z#Unit tests for CopyObjectsIterator.c                 *   > [         [        U ]  5         g )N)superr    setUp)self	__class__s    r   r$   TestCopyObjectsIterator.setUp5   s    	
!4.0    c                    [        S5       VVs/ s H.  n[        S5       Vs/ s H  nSR                  X5      PM     snPM0     nnn[        S5       Vs/ s H  nS[        U5      -   PM     nn[        [	        X45      S5      n[        X45       VVVs/ s H  u  pgU  H  nX4PM     M     n	nnnU	 H[  u  p[        U5      nU R                  U
UR                  R                  5        U R                  XR                  R                  5        M]     Sn [        U5        U R                  U5        g s  snf s  snnf s  snf s  snnnf ! [         a    Sn N7f = f)N      z	src_{}_{}dest_FT)rangeformatstrr   r   r   nextassertEqualr   object_nameexp_dst_urlStopIteration
assertTrue)r%   ijsrc_strings_arraydst_stringscopy_objects_iteratorsrc_stringsdstsrcsrc_dst_strings
src_string
dst_stringcopy_object_infoiterator_endeds                 r   test_iterator%TestCopyObjectsIterator.test_iterator8   sX   >CAh>F5848a		A	!84h   .31X6X7SV#XK6/?	,-24 !$$5 C CKC 

 	 C   %4 34
z'::FFH
z#?#?#K#KL	 %4 N
 ! 	OON#7 	5 7  ns3   D5D0D5D;E E 0D5EEc                    S/S/S//n/ SQn[        [        X5      S5      nU R                  UR                  5        U R                  UR                  5        U R                  [        UR                  5      S5        [        U5        U R                  UR                  5        U R                  UR                  5        U R                  [        UR                  5      S5        U R                  SUR                  ;   5        [        U5        U R                  UR                  5        U R                  UR                  5        U R                  [        UR                  5      S	5        U R                  S
UR                  ;   5        U R                  UR                  5        [        U5        U R                  [        UR                  5      S5        U R                  SUR                  ;   5        U R                  UR                  5        g )Nzgs://bucket1sourcezs3://bucket1)gs://bucket2destrG   Fr      gs   filer*   s3)r   r   assertFalsehas_cloud_srchas_file_srcr1   lenprovider_typesr0   r5   is_daisy_chain)r%   r8   r9   r:   s       r   test_iterator_metadata.TestCopyObjectsIterator.test_iterator_metadataW   s   ()H:7GH:K/?	,-24 	*889*778S.==>B	OO)778*778S.==>BOOD1@@@A	OO)778OO)667S.==>BOOF3BBBC*99:	S.==>BOOD1@@@AOO)889r(    )
__name__
__module____qualname____firstlineno____doc__r$   rC   rT   __static_attributes____classcell__)r&   s   @r   r    r    2   s    +1$>: :r(   r    )r[   
__future__r   r   r   r   gslib.commands.cpr   gslib.name_expansionr   r	   r
   gslib.storage_urlr   gslib.tests.testcaseteststestcaser   r   GsUtilUnitTestCaser    rV   r(   r   <module>rf      sI    ? & %  ' - 4 F 4 2 ' '4(A:h99 A:r(   