U
    </eb#                     @   s  d dl mZ d dlZd dlmZ d dlmZmZ ej	dd Z
ej	dd Zej	dd	 Zej	d
d Zej	dd Zej	dd Zej	dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejjd ed!d"d# Zejjd ed!d$d% Zd&d' Zd(d) Zd*d+ ZdS ),    )URLErrorN)BunchTileProviderc                   C   s   t ddddS )N*https://myserver.com/tiles/{z}/{x}/{y}.png(C) xyzservicesZmy_public_providerurlattributionnamer    r   r   >/tmp/pip-unpacked-wheel-eve_l6qg/xyzservices/tests/test_lib.pybasic_provider	   s
    r   c                   C   s   t dddddS )N-https://myserver.com/tiles/{z}/{x}/{y}{r}.pngr   Zmy_public_provider2@2x)r   r	   r
   rr   r   r   r   r   retina_provider   s    r   c                   C   s   t ddddS )Nr   r   Zmy_public_retina_provider3r   r   r   r   r   r   silent_retina_provider   s
    r   c                   C   s   t dddddS )NzAhttps://myserver.com/tiles/{z}/{x}/{y}?access_token={accessToken}r   z<insert your access token here>Zmy_private_provider)r   r	   accessTokenr
   r   r   r   r   r   private_provider%   s    r   c                   C   s   t dddddS )Nr   r   C&copy; <a href="https://xyzservices.readthedocs.io">xyzservices</a>Zmy_public_provider_html)r   r	   html_attributionr
   r   r   r   r   r   html_attr_provider/   s    r   c                   C   s   t dddddS )N.https://{s}.myserver.com/tiles/{z}/{x}/{y}.pngr   abcdZmy_subdomain_provider)r   r	   
subdomainsr
   r   r   r   r   r   subdomain_provider9   s    r   c              	   C   s   t | |||t ||ddS )N)r   r   )r   r   r   r   Zbunched)r   )r   r   r   r   r   r   r   r   r   
test_bunchC   s    	 r   c               	   C   s   d} t jt| d d ti  W 5 Q R X t jt| d d tddi W 5 Q R X t jt| d d tdd	d
 W 5 Q R X t jt| d d tdd	d
 W 5 Q R X d S )NzxThe attributes `name`, `url`, and `attribution` are required to initialise a `TileProvider`. Please provide values for: z`name`, `url`, `attribution`matchz`url`, `attribution`r
   Zmynamez`attribution`Zmy_urlZmy_name)r   r
   )pytestraisesAttributeErrorr   )msgr   r   r    test_expect_name_url_attributionW   s    r$   c              	   C   s  d}|   |kstd}|  ddd|ks.t| j ddddd|ksHt| ddd|ks^td}| ddd|ksxt|j ddddd|kstd	}|j dddd
d|kstd}|j dd|ksttjtdd |   W 5 Q R X d}|j ddstd}|  std S )Nr   z$https://myserver.com/tiles/3/1/2.png         r   )Zscale_factorz'https://myserver.com/tiles/3/1/2@2x.pngz'https://myserver.com/tiles/3/1/2@5x.pngz@5xz<https://myserver.com/tiles/{z}/{x}/{y}?access_token=my_tokenZmy_token)r   z#Token is required for this providerr   r   F)Zfill_subdomainz,https://a.myserver.com/tiles/{z}/{x}/{y}.png)Z	build_urlAssertionErrorr    r!   
ValueError)r   r   r   r   r   expectedr   r   r   test_build_urlg   s&    r+   c                 C   s$   |   dkst|  dks td S )NTF)requires_tokenr(   )r   r   r   r   r   test_requires_token   s    r-   c                 C   s   ddddddddg}|D ]}||   kstqt| |d	}d
dddddg}|  }|| D ]}||ks\tq\|ddkst|ddkst|ddkstd S )Nz<div class="xyz-wrap">z<div class="xyz-header">z3<div class="xyz-obj">xyzservices.TileProvider</div>z.<div class="xyz-name">my_public_provider</div>z<div class="xyz-details">z<dl class="xyz-attrs">zL<dt><span>url</span></dt><dd>https://myserver.com/tiles/{z}/{x}/{y}.png</dd>z9<dt><span>attribution</span></dt><dd>(C) xyzservices</dd>firstsecondz,<div class="xyz-obj">xyzservices.Bunch</div>z#<div class="xyz-name">2 items</div>z<ul class="xyz-collapsible">z<li class="xyz-child">z%<span>xyzservices.TileProvider</span>z<div class="xyz-inside">r&   r'   )Z_repr_html_r(   r   count)r   r   Zprovider_stringsZhtml_stringZbunchZbunch_stringsZ
bunch_reprr   r   r   test_html_repr   s2    	r2   c                 C   s   |   }t|tstd S )N)copy
isinstancer   r(   )r   Zbasic2r   r   r   	test_copy   s    r5   c                  C   sP   t jjdd} t| tstd| ks(t| d dks8tt jjd dksLtd S )NZmykey)apikeyr   r6   Z
essentiels)xyzZGeoportailFranceZplanr4   r   r(   )Zupdated_providerr   r   r   test_callable   s
    r8   c                 C   s"   | j | jkst|j dkstd S )Nr   )r   r	   r(   )r   r   r   r   r   test_html_attribution_fallback   s
    r9   ztimeout error)reasonr!   c                  C   s   t d} t| t std S )Nz!OpenStreetMap Standard aka Mapnik)r   from_qmsr4   r(   Zproviderr   r   r   test_from_qms   s    
r=   c                	   C   s$   t t td W 5 Q R X d S )NZLolWut)r    r!   r)   r   r;   r   r   r   r   test_from_qms_not_found_error   s    r>   c                 C   sD   t t | |dt ||dd}t|dks,tt| dks@td S )Nr.   )Zfirst_bunchZsecond_bunchr&      )r   lenr(   flatten)r   r   r   r   Znested_bunchr   r   r   test_flatten   s    

rB   c                 C   s$  t | jdd dkstt | jdd dks8tt | jdd dksTtt | jdd dksptt | jd	d
 dkstt | jdd
 dkstt | jdd
dkstt | jddd dkstt | jdd dkstdd }t | j|d dks td S )Nprivate)keywordr%   publicr?   z{s}Zretina)r
   T)r,   F   )rD   r,   Znonsenser   c                 S   s*   t | dr| jdkrdS t | dr&dS dS )Nr   r   Tr   F)hasattrr   r<   r   r   r   custom   s
    
ztest_filter.<locals>.custom)functionr&   )r@   filterrA   r(   )r   rH   r   r   r   test_filter   s    rK   c               	   C   s   dddddddg} | D ]*}t |}t|ts2t|jdkstqtjtdd	 t d
 W 5 Q R X d}t |}t|tst|j|kstd S )NzCartoDB PositronZcartodbpositronzcartodb-positronzcarto db/positronZCARTO_DB_POSITRONzCartoDB.PositronzCarto,db,positronzNo matching provider foundr   zi don't existz+NASAGIBS.ASTER_GDEM_Greyscale_Shaded_Relief)	r7   Z
query_namer4   r   r(   r
   r    r!   r)   )optionsoptionZqueriedZoption_with_underscorer   r   r   test_query_name   s$    


rN   )urllib.errorr   r    Zxyzservices.providersZ	providersr7   Zxyzservicesr   r   Zfixturer   r   r   r   r   r   r   r$   r+   r-   r2   r5   r8   r9   markZxfailr=   r>   rB   rK   rN   r   r   r   r   <module>   s>   

	

	
	
	
#"	

