a
    `                     @   s   d dl mZ d dl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mZ d dlmZmZmZ dd	d
Ze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dS )    )with_statementN)ConjunctiveGraph)
isomorphic)to_rdf)from_rdf)CONTEXTGRAPH)W3CNTriplesParserr_nodeidbNodec                 C   s"   |  dsdS t| tdS )N_F   )peekr   Zeatr
   group)selfZbnode_context r   4/Users/nick/Work/rdflib/rdflib-jsonld/test/runner.py_preserving_nodeid   s    
r   c              	   C   s|   | | }t |}t }	t||	||dd t |}
d}t|	|||d||ddd}dd }||
}
||}t|
| d S )	NT)basecontext_datageneralized_rdfuseNativeTypes
useRdfTypeFr   use_native_typesZuse_rdf_typec                 S   s&   t | v r| t  t| v r"| t } | S N)r   popr   )datar   r   r   _prune_json-   s
    
z!do_test_json.<locals>._prune_json)
_load_jsonr   r   r   get_compare_json)
suite_basecatnum	inputpathexpectedpathcontextoptions	input_uri	input_objinput_graphexpected_jsonr   result_jsonr   r   r   r   do_test_json   s.    

r.   c              
   C   s~   | | }t |}t|}	t }
|ddkr0dnd}t||
||d|||ddd t|
|	szJ d	|	 |
 f d S )
NZspecVersionzjson-ld-1.1g?g      ?r   ZproduceGeneralizedRdfF)r   r   versionr   zExpected:
%s
Got:
%s)r   _load_nquadsr   r    r   r   	serialize)r"   r#   r$   r%   r&   r'   r(   r)   r*   Zexpected_graphZresult_graphr/   r   r   r   do_test_parser;   s"    

r2   c              	   C   sH   | | }t |}t|}	t||||dd|ddd}
t|	|
 d S )Nr   Fr   r   )r0   r   r   r    r!   )r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   r-   r   r   r   do_test_serializerO   s    

r3   c                 C   sH   t  }t| }| }W d    n1 s,0    Y  |j|dd |S )Nnquads)r   format)r   openreadparse)sourcegraphfr   r   r   r   r0   ]   s
    
&r0   c                 C   s6   t | }t|W  d    S 1 s(0    Y  d S r   )r6   jsonload)r9   r;   r   r   r   r   e   s    
r   c                 C   sH   t | tr$tdd | D dd dS t | ts2| S tdd |  D S )Nc                 s   s   | ]}t |V  qd S r   _to_ordered).0lvr   r   r   	<genexpr>o       z_to_ordered.<locals>.<genexpr>c                 S   s   t | t| jfS r   )_ord_keytype__name__xr   r   r   <lambda>p   rC   z_to_ordered.<locals>.<lambda>)keyc                 s   s   | ]\}}|t |fV  qd S r   r>   )r@   kvr   r   r   rB   t   rC   )
isinstancelistsorteddictitemsobjr   r   r   r?   j   s    

r?   c                 C   s"   t | trd| v r| d S | S d S )Nz@id)rM   rP   rG   r   r   r   rD   w   s    rD   c                 C   s   t j| dddddS )N   ),z: T)indent
separators	sort_keyscheck_circular)r<   dumpsrR   r   r   r   
_dump_json~   s    
r[   c                 C   sH   t t| } t t|}t| t|ksDJ dt| t|f d S )NzExpected JSON:
%s
Got:
%s)r<   loadsr[   r?   )expectedresultr   r   r   r!      s    r!   )N)
__future__r   r<   rdflibr   Zrdflib.comparer   Zrdflib_jsonld.parserr   Zrdflib_jsonld.serializerr   Zrdflib_jsonld.keysr   r   Zrdflib.plugins.parsers.ntriplesr	   r
   r   r   Znodeidr.   r2   r3   r0   r   r?   rD   r[   r!   r   r   r   r   <module>   s$   
#