3
d!                 @   s   d dl Z d dlT d dlmZ d dlmZ d dlmZmZ e	ddZ
e	dd	Ze	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G dd de jZedkre j  dS )    N)*)prov_to_dot)Registry)primer_exampleprimer_example_alternateexzhttp://example.org/Zex2zhttp://example2.org/otherzhttp://exceptions.example.org/c             C   s   | j dtdfg d S )Nz
prov:labelhello)add_attributesLiteral)record r   6/tmp/pip-build-7vycvbft/prov/prov/tests/test_extras.py	add_label   s    r   c             C   s4   | j dtdfdtdddfdtdddfg d S )Nz
prov:labelr	   byeen)langtagZbonjourfr)r
   r   )r   r   r   r   
add_labels   s    
r   c             C   s:   | j d	d
dddtd fdtjj fdtdtdfg d S )N	prov:typea         ?Tabczhttp://boiled-egg.example.com)datatype)r   r   )r   r   )r   r   )r   T)r
   EX_NSdatetimenowr   Z
XSD_ANYURI)r   r   r   r   	add_types   s    
r   c             C   sJ   | j d
ddddtd fdtjj fdtjd fdtdtd d	fg d S )Nprov:LocationSouthamptonr         ?Tlondoni  ZgYear)r   )r   r    )r   r   )r   r!   )r   T)r
   r   r   r   urir   ZXSD)r   r   r   r   add_locations-   s    
r$   c             C   s   | j dtd fg d S )Nz
prov:valueZavalue)r
   r   )r   r   r   r   	add_value<   s    r%   c             C   s6   | j td dftd dftd dftd dfg d S )Ntag1r	   tag2r   tag3hizhello
over
more
lines)r
   r   EX2_NS)r   r   r   r   add_further_attributes@   s
    


r+   c             C   s   | j td dftd dftd tdddftd d	ftd
 dftd
 tdtdftd
 tdtdftd
 dftd
 dftd
 tjd fg
 t|  d S )Nr&   r	   r'   r   Zholaes)r   r(   r)   tagr   )r   g      ?TZsouthampton)r
   r   r   r*   Z	XSD_SHORTZ
XSD_DOUBLEr#   "add_further_attributes_with_qnames)r   r   r   r   add_further_attributes0K   s    





r/   c             C   s*   | j td td ftd td fg d S )Nr-   Znewyorkr"   )r
   r   r*   )r   r   r   r   r.   ^   s    r.   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d Zdd Zdd Zdd ZdS )
TestExtrasc             C   s   t  }ttd d}|jtd td td d |jtd tdid |jtd d |jtd	  ttd
 d}|jtd td td d |jtd d |jtd d |j| |j| t| d S )Nbundle1)
identifiera1e1Zuse1)activityentityr2   Zsausage)r2   Zother_attributesa2bundle2Zaa1Zee1Zuse2)	ProvDocument
ProvBundler   usager6   Z	PROV_ROLEr5   
add_bundler   )selfdocumentr1   r8   r   r   r   test_doth   s    

zTestExtras.test_dotc             C   s`   t  }|jtd td td d}t| t| t| | jt|jtt	|j
|j  d S )Nr7   r3   Zinf7)r2   )r9   Z	influencer   r   r   r+   assertEquallen
attributeslistZformal_attributesZextra_attributes)r=   r>   infr   r   r   test_extra_attributes   s    z TestExtras.test_extra_attributesc             C   s(   t  }|jd tjd |jd d S )Nzoutput.jsonz%http://netloc/outputmyprov/submit.php)r9   	serializeosremove)r=   r>   r   r   r   test_serialize_to_path   s    

z!TestExtras.test_serialize_to_pathc                s"   t    fdd}| jt| d S )Nc                 s   t  }  j|  d S )N)r:   r<   )bundle)r>   r   r   test   s    z*TestExtras.test_bundle_no_id.<locals>.test)r9   assertRaisesProvException)r=   rK   r   )r>   r   test_bundle_no_id   s    zTestExtras.test_bundle_no_idc             C   sv   t j j }t }|jtd ||d t }|jtd }|j||d | j|| | j|j | | j|j | d S )NZa8)Z	startTimeZendTime)	r   r   r9   r5   r   Zset_timer@   Zget_startTimeZget_endTime)r=   dtZ	document1Z	document2r   r   r   r   test_use_set_time_helpers   s    
z$TestExtras.test_use_set_time_helpersc                s:   t    fdd}| jt|  fdd}| jt| d S )Nc                  s    j  jtd  d S )NZentity_trying_to_be_a_bundle)r<   r6   r   r   )r>   r   r   rK      s    z0TestExtras.test_bundle_add_garbage.<locals>.testc                 s   t  }  j|  d S )N)r:   r<   )rJ   )r>   r   r   rK      s    )r9   rL   rM   )r=   rK   r   )r>   r   test_bundle_add_garbage   s
    z"TestExtras.test_bundle_add_garbagec             C   s   t  }| j|d d S )Nr   )r:   ZassertNotEqual)r=   r>   r   r   r   test_bundle_equality_garbage   s    z'TestExtras.test_bundle_equality_garbagec             C   s   t  }| j|j  d S )N)r:   
assertTrue	is_bundle)r=   r>   r   r   r   test_bundle_is_bundle   s    z TestExtras.test_bundle_is_bundlec             C   s   t  }| j|jd d  d S )N)r9   r@   Z
get_record)r=   r>   r   r   r   test_bundle_get_record_by_id   s    z'TestExtras.test_bundle_get_record_by_idc             C   sX   t  }|jtd d |jtd d | jtt|jtd | jt|j d d S )Nr4   )r2   r      )	r9   r6   r   Zagentr@   rA   rC   Zget_recordsZ	ProvAgent)r=   r>   r   r   r   test_bundle_get_records   s
    z"TestExtras.test_bundle_get_recordsc                s@   t    fdd}| jt| t    fdd}| jt| d S )Nc                  s     j td   j td  d S )N
indistinct)rJ   r   r   )r>   r   r   rK      s    z/TestExtras.test_bundle_name_clash.<locals>.testc                 s*    j td  ttd d}  j|  d S )NrY   )r2   )rJ   r   r:   r<   )rJ   )r>   r   r   rK      s    )r9   rL   rM   )r=   rK   r   )r>   r   test_bundle_name_clash   s    z!TestExtras.test_bundle_name_clashc             C   sR   t  }| j|j  | j|j  |jtd  | j|j  | jdt| d S )Nbz<ProvDocument>)	r9   ZassertFalserT   Zhas_bundlesrJ   r   rS   r@   str)r=   r>   r   r   r   test_document_helper_methods   s    z'TestExtras.test_document_helper_methodsc             C   s   t  }|jtd  tjtjg}tj  tjj	 }x~|D ]v}xp|D ]h}zXy>| }|j
||d |jdd t j||d}| j|| W n tk
r   Y nX W d|j  X qBW q8W dS )zJ
        Tests reading and writing to and from file like objects.
        rK   )Zdestinationformatr   )sourcer^   N)r9   r6   r*   ioBytesIOStringIOr   Zload_serializersZserializerskeysrF   seekZdeserializer@   NotImplementedErrorclose)r=   r>   objectsformatsobjr^   bufZnew_documentr   r   r   -test_reading_and_writing_to_file_like_objects   s     



z8TestExtras.test_reading_and_writing_to_file_like_objectsc             C   s   t  }t }| j|| d S )N)r   r   r@   )r=   Zg1Zg2r   r   r   test_primer_alternate  s    z TestExtras.test_primer_alternateN)__name__
__module____qualname__r?   rE   rI   rN   rP   rQ   rR   rU   rV   rX   rZ   r]   rk   rl   r   r   r   r   r0   g   s   	
&r0   __main__)ZunittestZ
prov.modelZprov.dotr   Zprov.serializersr   Zprov.tests.examplesr   r   Z	Namespacer   r*   ZEX_OTHER_NSr   r   r   r$   r%   r+   r/   r.   ZTestCaser0   rm   mainr   r   r   r   <module>   s&   



	 2