a
    %#`                     @   s  d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddlm
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i Ze	jZdd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zee
jed'd( Zee
j ed)d* Z!d+S ),z
JSON-LD Context Spec
    )unicode_literalswraps)ContextTerm)context)errorsc                    s    fdd}|S )Nc                    s   t   fdd}|S )Nc               
      s\   z  |  ksJ W n, t yB }  z|  k}W Y d } ~ nd } ~ 0 0 d}|sXJ d  d S )NFzExpected %r)	Exception)esuccess)expected_errorf :/Users/nick/Work/rdflib/rdflib-jsonld/test/test_context.py_try   s    z5_expect_exception.<locals>._try_wrapper.<locals>._tryr   )r   r   r   r   r   _try_wrapper   s    
z'_expect_exception.<locals>._try_wrapperr   )r   r   r   r   r   _expect_exception   s    r   c                  C   sB   t  } | dd | jd}|jdks,J | d|u s>J d S )Nlabelhttp://example.org/ns/label)r   add_termtermsgetname	find_termctxtermr   r   r   test_create_context   s
    r   c                  C   sR   t  } | dd | jdddd | djdks6J | jdddjdksNJ d S )Nupdatedhttp://example.org/ns/updatedZupdatedDatez%http://www.w3.org/2001/XMLSchema#date)coercion)r   r   r   r   r   r   r   r   /test_select_term_based_on_value_characteristics'   s    r$   c                  C   s6   t  } | ddidksJ | ddidks2J d S )N@idurn:x:1	@languageen)r   get_idget_languager#   r   r   r   &test_getting_keyword_values_from_nodesA   s    r+   c                  C   s   t dddddid} | jd}|jdks0J | jd}|jd	ksJJ |jd
ksXJ | ddksjJ | ddks|J | ddksJ | ddksJ d S )Nzhttp://example.org/ns/zx:labelz@typezx:date)@vocabxr   	x:updatedr   r   r.   r!   zhttp://example.org/ns/dater   zhttp://example.org/ns/termzx:term)r   r   r   idtypeexpand
shrink_iri	to_symbolr   r   r   r   'test_parsing_a_context_expands_prefixesG   s     	r4   c                  C   sX   t ddi} | ddksJ | ddks0J | ddksBJ | ddksTJ d S )	N@basezhttp://example.org/path/leaf/http://example.org/z/trailzhttp://example.org/trail../z../../)r   resolver#   r   r   r   test_resolving_irisb   s
    r:   c                  C   sp   t ddd} | ddidks$J | ddidks:J | ddidksPJ | jdks^J | jdkslJ d S )Nr%   r'   )irilangr;   r&   r<   r(   )r   r)   r*   id_keylang_keyr#   r   r   r   &test_accessing_keyword_values_by_aliasj   s    r?   c                  C   s.   t  } | ddi}|ddidks*J d S )Nr<   r'   r(   )r   
subcontextr*   )r   Zctx4r   r   r   test_creating_a_subcontextw   s    rA   c                  C   s,   t ddd} | jd}|jdks(J d S )Nzex:zex:term)r,   r   r   )r   r   r   r/   r   r   r   r   test_prefix_like_vocab}   s    rB   c                    s   t   fdd}|S )Nc                      s   t jt_   tt_d S )N)SOURCESr   r   source_to_json_source_to_jsonr   r   r   r   _wrapper   s    z%_mock_source_loader.<locals>._wrapperr   )r   rF   r   r   r   _mock_source_loader   s    rG   c                  C   sf   d} d}dddiit | < d| ddigit |< t|}|ddksFJ t|g}|ddksbJ d S )	Nzhttp://example.org/base.jsonldz!http://example.org/context.jsonld@contextr,   zhttp://example.org/vocab/nr   zhttp://example.org/vocab/name)rC   r   r1   )Zsource1Zsource2r   r   r   r   test_loading_contexts   s    
rJ   c                  C   s   t ddi} | jdksJ d S )Nr5   z/localr   baser#   r   r   r   test_use_base_in_local_context   s    rM   c                  C   s"   t dddid} | jdksJ d S )N http://example.org/app/data/itemr5   r7   rL   sourcerK   r#   r   r   r   test_override_base   s    rQ   c                  C   s4   t dddid} | jdksJ | ddks0J d S )NrN   r5   r8   rO   zhttp://example.org/app/../otherzhttp://example.org/otherr   rL   resolve_irir#   r   r   r   test_resolve_relative_base   s    rU   c                  C   s4   t ddd id} | jd u sJ | ddks0J d S )NrN   r5   rO   rR   rS   r#   r   r   r   test_set_null_base   s    rV   c                  C   s.   d} dddiit | < t| }|jd ks*J d S )Nz%http://example.org/remote-base.jsonldrH   r5   z/remote)rC   r   rL   Zctx_urlr   r   r   r   test_ignore_base_remote_context   s    rX   c                  C   s   d} d| it | < t| }d S )N#http://example.org/recursive.jsonldrH   rC   r   rW   r   r   r   &test_recursive_context_inclusion_error   s    r[   c                  C   s   d} ddit | < t| }d S )NrY   keyvaluerZ   rW   r   r   r   test_invalid_remote_context   s    r^   N)"__doc__
__future__r   	functoolsr   Zrdflib_jsonld.contextr   r   Zrdflib_jsonldr   r   r   r   r$   r+   r4   r:   r?   rA   rB   rC   rD   rE   rG   rJ   rM   rQ   rU   rV   rX   RECURSIVE_CONTEXT_INCLUSIONr[   INVALID_REMOTE_CONTEXTr^   r   r   r   r   <module>   sF   	






