
                             d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ ddlmc mZ d Zd Z G d dej&                        Zy)z8Unit tests for name_expansion.CopyObjectsIterator class.    )absolute_import)print_function)division)unicode_literals)DestinationInfo)CopyObjectsIterator)%NameExpansionIteratorDestinationTuple)NameExpansionResult)StorageUrlFromStringNc           	   #   V   K   | D ]   }t        |      }t        |ddd|d        " y w)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      s8     !k&{3K
6;@E.33>.24 4 "s   ')c           	   #      K   t        | |      D ]1  \  }}t        t        |      t        t	        |      d            }| 3 y w)NF)zipr	   r   r   r   )src_url_strs_arraydst_url_strsr   dst_url_strname_expansion_iter_dst_tuples        r   7_ConstrcutNameExpansionIteratorDestinationTupleIteratorr   )   sJ     #&'9<#HlK$I'5,[95A%C! ('	 $Is   AAc                   .     e Zd ZdZ fdZd Zd Z xZS )TestCopyObjectsIteratorz#Unit tests for CopyObjectsIterator.c                 *    t         t        |           y )N)superr    setUp)self	__class__s    r   r#   zTestCopyObjectsIterator.setUp5   s    	
!4.0    c                    t        d      D cg c]+  }t        d      D cg c]  }dj                  ||       c}- }}}t        d      D cg c]  }dt        |      z    }}t        t	        ||      d      }t        ||      D cg c]  \  }}|D ]  }||f  }	}}}|	D ]\  \  }
}t        |      }| j                  |
|j                  j                         | j                  ||j                  j                         ^ d}	 t        |       | j                  |       y c c}w c c}}w c c}w c c}}}w # t        $ r d}Y 6w xY w)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_iteratorz%TestCopyObjectsIterator.test_iterator8   sg   >CAh>F5848a		Aq	!84h   .31X6X7SV#XK6/?{	,-24 !$$5{ C CKC 
c
 	 C   %4 Z34
z'::FFH
z#3#?#?#K#KL	 %4 N
 ! 	OON#7 	5 7  ns3   D+D&D+D1D6	D= &D+=E
Ec                    dgdgdgg}g d}t        t        ||      d      }| j                  |j                         | j                  |j                         | j                  t        |j                        d       t        |       | j                  |j                         | j                  |j                         | j                  t        |j                        d       | j                  d|j                  v        t        |       | j                  |j                         | j                  |j                         | j                  t        |j                        d	       | j                  d
|j                  v        | j                  |j                         t        |       | j                  t        |j                        d       | j                  d|j                  v        | j                  |j                         y )Nzgs://bucket1sourcezs3://bucket1)gs://bucket2destrD   Fr      gs   filer(   s3)r   r   assertFalsehas_cloud_srchas_file_srcr/   lenprovider_typesr.   r3   is_daisy_chain)r$   r6   r7   r8   s       r   test_iterator_metadataz.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____doc__r#   rA   rQ   __classcell__)r%   s   @r   r    r    2   s    +1$>:r&   r    )rU   
__future__r   r   r   r   gslib.commands.cpr   gslib.name_expansionr   r	   r
   gslib.storage_urlr   gslib.tests.testcaseteststestcaser   r   GsUtilUnitTestCaser     r&   r   <module>r`      sI    ? & %  ' - 4 F 4 2 ' '4(A:h99 A:r&   