o
    tBhi;                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
Z
d dl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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"d0d1 Z#d2d3 Z$d4d5 Z%d6d7 Z&d8d9 Z'd:d; Z(d<d= Z)d>d? Z*d@dA Z+dBdC Z,dDdE Z-dFdG Z.dHdI Z/dJdK Z0dLdM Z1dNdO Z2dPdQ Z3dRdS Z4dTdU Z5dVdW Z6dXdY Z7dZd[ Z8d\d] Z9d^d_ Z:d`da Z;dbdc Z<ddde Z=dfdg Z>dhdi Z?djdk Z@dS )l    N)metadata)patchc                   c   s"    t j  t jV  t j  d S N)	pycountry	countries_clear r   r   s/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/pycountry/tests/test_general.pyr      s   
r   c                 C   s2   t tjdks	J tttjd tjjsJ d S )N   r   )lenr   r   
isinstancelistdbDatar   r   r   r	   test_country_list   s    r   c                 C   s@  t jd}t|dksJ |d t jjddksJ t jd}t|dks)J |d t jjddks6J |d t jjd	dksCJ t jd
}t|dksQJ |d t jjddks^J |d t jjddkskJ |d t jjddksxJ t jd}|d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ t jd}t|dksJ |d t jjddksJ d S ) NEngland   r   GBalpha_2zSint Maarten   NLSXCote   CIFRHNNewNCNZPG   US   CA   AU   BS   TW	   MHzunited states of america)r   r   search_fuzzyr   getr   resultsr   r   r	   test_country_fuzzy_search   s4    r3   c                 C   s:   t jd}t|dksJ |d t jjddksJ d S )Nburmar   r   BUMMalpha_4)r   historic_countriesr/   r   r0   r1   r   r   r	   "test_historic_country_fuzzy_searchB   s   r9   c                 C   sX   t jjdd}|jdksJ |jdksJ |jdksJ |jdks#J |jdks*J d S )NDEr   DEU276GermanyFederal Republic of Germany)r   r   r0   r   alpha_3numericnameofficial_name)r   germanyr   r   r	   test_germany_has_all_attributesH   s   rD   c                 C   s   t jjdd}|jdksJ |jdksJ tjtdd |j W d    n1 s*w   Y  tjtdd |j	 W d    d S 1 sEw   Y  d S )NAWr   ArubarB   matchcommon_name)
r   r   r0   r   rA   pytestraisesAttributeErrorrB   rI   )r   arubar   r   r	   test_missing_common_officialQ   s   "rN   c                 C   sJ   t jjdd}|jdksJ |jdksJ |jdksJ |jdks#J d S )NVNr   zViet NamzSocialist Republic of Viet NamVietnam)r   r   r0   r   rA   rB   rI   )r   vietnamr   r   r	   *test_missing_common_official_use_different[   s
   rR   c                 C   sD   t jjdd}tt |j}W d    d S 1 sw   Y  d S Nr:   r   )r   r   r0   rJ   rK   rL   foo)r   rC   _r   r   r	   test_country_missing_attributec      "rV   c                 C   s   t tjdks	J tttjd tjjsJ tjjdd}|jdks%J |j	dks,J |j
dks3J |jd u s:J |jd u sAJ |jtjjddu sMJ d S )	Ni  r   zDE-STcodezSachsen-AnhaltLandr:   r   )r   r   subdivisionsr   r   r   r   r0   rY   rA   typeparentparent_codecountryr   )r   de_str   r   r	   %test_subdivisions_directly_accessiblei   s   ra   c                  C   sr   t jjdd} | jdksJ | jdksJ | jdksJ | jdks#J | jt jjddu s/J | jjdks7J d S )NzFR-01rX   AinzMetropolitan departmentFR-ARAu   Auvergne-Rhône-Alpes)r   r[   r0   rY   rA   r\   r^   r]   )fr_01r   r   r	   ,test_subdivisions_have_subdivision_as_parentv   s   re   c                   C   s8   t tjjdddksJ t tjjdddksJ d S )Nr:   country_code   r$   9   )r   r   r[   r0   r   r   r   r	   "test_query_subdivisions_of_country   s   rj   c                  C   sj   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J d S )N   r   LatinrA   Latn215)r   r   scriptsr   r   r   r   r0   r7   rA   r@   )latinr   r   r	   test_scripts      rr   c                  C   sj   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J d S )N   r   ARSr?   zArgentine Peso032)r   r   
currenciesr   r   r   r   r0   r?   rA   r@   )argentine_pesor   r   r	   test_currencies   rs   rz   c                  C   s   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J tjjdd}|j
dksAJ |jd	ksHJ tjd
}||ksTJ d S )Ni  r   anr   arg	AragonesebnBengaliBanglabAngLa)r   r   	languagesr   r   r   r   r0   r   r?   rA   rI   lookup)	aragonesebengalibengali2r   r   r	   test_languages   s   r   c                  C   s\   t tjdks	J tttjd tjjsJ tjjdd} | j	dks%J | j
dks,J d S )Ns   r   r|   rv   r}   )r   r   language_familiesr   r   r   r   r   r0   r?   rA   )r   r   r   r	   test_language_families   s
   r   c                  C   s*   t jdtjdgd} |  ddksJ d S )Nz	iso3166-1de)r   r=   Deutschland)gettexttranslationr   LOCALES_DIR)germanr   r   r	   test_locales   s   
r   c                  C   s\   t jjdd} t| t jjsJ | jdksJ | jdksJ | jdks%J | j	dks,J d S )NSUNrv   SUHHz)USSR, Union of Soviet Socialist Republicsz
1992-08-30)
r   r8   r0   r   r   r   r7   r?   rA   withdrawal_date)ussrr   r   r	   test_removed_countries   s   r   c                 C   s"   t dttjjddsJ d S )NzCountry\(alpha_2=u?'DE', alpha_3=u?'DEU', flag='..', name=u?'Germany', numeric=u?'276', official_name=u?'Federal Republic of Germany'\)r:   r   )rerH   reprr   r   r0   r   r   r   r	   	test_repr   s   r   c                 C   s6   t jjdd}ddddd|jd}t||ksJ d S )Nr:   r   r;   r=   r<   r>   )r   r?   rA   r@   rB   flag)r   r   r0   r   dict)r   r_   expr   r   r	   	test_dict   s   r   c                 C   s,   t jjdd}dD ]
}|t|v sJ q	d S )Nr:   r   )r   r?   rA   r@   rB   )r   r   r0   dir)r   rC   nr   r   r	   test_dir   s   r   c                 C   s   t j}tt |jddd W d    n1 sw   Y  |jdd|jddks-J |jddd u s7J t }|jd|d|u sEJ d S )Nr:   r;   )r   r?   r   rv   Foo)r   default)r   r   rJ   rK   	TypeErrorr0   object)r   ctracerr   r   r	   test_get   s   r   c                 C   s  t j}|jdd}||jddksJ ||dksJ ||dks%J ||dks.J ||dks7J ||dks@J t jjdd	}|t jd
ksQJ t jjdd}|t jdksbJ t jjdd}|t jdkssJ t jjdd}|t jdksJ t jjdd}|t jdksJ t	
t t jd W d    n1 sw   Y  t	
t t jd W d    n1 sw   Y  t	
t t jjdd W d    d S 1 sw   Y  d S )Nr:   r   r   r;   r<   rC   r>   BQAQr6   atbDeEURrv   eurorl   rm   latnrc   rX   zfr-arazbogus countryi90  )r   r   r0   r   r8   r   rx   rp   r[   rJ   rK   LookupError)r   r   gbqaqr   r   rq   fr_arar   r   r	   test_lookup   s6   "r   c                  C   s<   t j} | jdd}|jdksJ |j| j|jdu sJ d S )NzCV-BVrX   zCV-B)r   r[   r0   r^   r]   )ssdr   r   r	   test_subdivision_parent	  s   r   c                  C   s   t j} | jddd u sJ d S )NzUS-ZZrX   )r   r[   r0   r   r   r   r	   -test_subdivision_missing_code_raises_keyerror  s   r   c                  C   sN   t j} t| jdddksJ t| jdddksJ | jddd u s%J d S )Nr:   rf   rh   JEr   FOOBAR)r   r[   r   r0   r   r   r   r	   test_subdivision_empty_list  s   r   c                   C   s`   zt d W n t jy   td Y nw tjdksJ ttjdks'J dtjv s.J d S )Nr   z5pycountry not installed correctly, you're on your ownn/ar%   .)_importlib_metadatadistributionPackageNotFoundErrorrJ   skipr   __version__r   r   r   r   r	   test_has_version_attribute  s   r   c                   C      t tjtjs	J d S r   )r   r   r   	Languagesr   r   r   r	   test_is_instance_of_language&     r   c                 C   s&   t jjdd}|jj}|dksJ d S )Nr$   r   Country)r   r   r0   	__class____name__)r   united_states
class_namer   r   r	   test_is_instance_of_country*  s   r   c                   C   r   r   )r   r   r[   Subdivisionsr   r   r   r	   test_is_instance_of_subdivision0  r   r   c                   C   r   r   )r   r   rp   Scriptsr   r   r   r	   test_is_instance_of_script4  r   r   c                   C   r   r   )r   r   rx   
Currenciesr   r   r   r	   test_is_instance_of_currency8  r   r   c                 C   sN   t jjddd u sJ t jjddddd t jjdd}t|t jjs%J d S )NXKr   XXKKosovo926)r   r?   rA   r@   )r   r   r0   	add_entryr   
data_class)r   r_   r   r   r	   test_add_entry<  s   r   c                 C   s>   t jjddd usJ t jjdd t jjddd u sJ d S rS   )r   r   r0   remove_entryr   r   r   r	   test_remove_entryG  s   r   c                   C   sB   t jtdd tjjdd W d    d S 1 sw   Y  d S )Nz	not foundrG   zNot A Real Countryrm   )rJ   rK   KeyErrorr   r   r   r   r   r   r	   test_remove_non_existent_entryO  s   "r   c                    s   zdd l  W n ty   ddlm  Y nw  fdd}|dd}ttj|d} d}t	
t | | W d    d S 1 sCw   Y  d S )	Nr   )	resourcesc                    s   t  | | S r   )strfiles)package_or_requirementresource_nameimportlib_resourcesr   r	   resource_filenameZ  s   z7test_no_results_lookup_error.<locals>.resource_filenamer   	databasesziso3166-1.jsonznonexistent query)r   ModuleNotFoundError	importlibr   r   ExistingCountriesospathjoinrJ   rK   r   r/   )r   r   DATABASE_DIRqueryr   r   r	   test_no_results_lookup_errorT  s   
"r   c                  C   2   t jd} t| dksJ | d jdksJ d S NAlabamar   r   r   r[   r/   r   rA   r2   r   r   r	   #test_subdivision_fuzzy_search_matchi     r   c                  C   2   t jd} t| dksJ | d jdksJ d S NMassachusettr   r   Massachusettsr   r   r   r   r	   +test_subdivision_fuzzy_search_partial_matcho  r   r   c                  C   r   r   )r   r[   rH   r   rA   r   r   r   r	   test_subdivision_matchu  r   r   c                  C   r   r   )r   r[   partial_matchr   rA   r   r   r   r	   test_subdivision_partial_match{  r   r   c                  C   sD   t jjdd} tt | j W d    d S 1 sw   Y  d S )NEnglishrm   )r   r   r0   rJ   rK   rL   rB   )englishr   r   r	    test_non_country_attribute_error  rW   r  c                 C   sD   t jjdd}tt |j W d    d S 1 sw   Y  d S )Nr&   r   )r   r   r0   rJ   rK   rL   maple_syrup)r   canadar   r   r	   test_country_attribute_error  rW   r  c                   C   sL   t ddks	J t ddksJ t ddksJ t ddks$J d S )	Nu   CaféCafeu   résuméresumeu   naïvenaiveu
   São Pauloz	Sao Paulor   remove_accentsr   r   r   r	   test_with_accents  s   r
  c                   C   (   t ddks	J t ddksJ d S )Napplebananar  r   r   r   r	   test_without_accents  s   r  c                   C      t ddks	J d S )N r  r   r   r   r	   test_empty_string  r   r  c                   C   r  )Nz
!@#$%^&*()r  r   r   r   r	   test_special_characters  r   r  c                   C   r  )Nu   你好u   こんにちはr  r   r   r   r	   test_unicode_characters  s   r  c                   C   s<   t t tjd W d    d S 1 sw   Y  d S )NNon Existent Subdivision)rJ   rK   r   r   r[   r/   r   r   r   r	   6test_subdivision_search_fuzzy_non_existent_subdivision  s   "r  c                  C       t jd} t| dksJ d S Nr  r   )r   r[   r   r   resultr   r   r	   "test_subdivision_partial_match_non     r  c                  C   r  r  )r   r[   rH   r   r  r   r   r	   test_subdivision_match_non  r  r  c                  C   sJ   t dtjd td} | dksJ W d    d S 1 sw   Y  d S )Nzimportlib.metadata.version)side_effectnon_existent_packager   )r   r   r   r   get_versionr  r   r   r	   'test_get_version_with_package_not_found  s   
"r   c                  C   s(   t j} dd | D }t|}|sJ d S )Nc                 S   s   g | ]}t |d qS rm   )hasattr).0subdivisionr   r   r	   
<listcomp>  s    
z=test_all_subdivisions_have_name_attribute.<locals>.<listcomp>)r   r[   all)r[   has_name_attrall_have_name_attrr   r   r	   )test_all_subdivisions_have_name_attribute  s   r(  c                  C   s    dd t jD } | g ksJ d S )Nc                 S   s$   g | ]}|j r|js|j|j fqS r   )r^   r]   rY   )r"  ir   r   r	   r$    s    
z:test_subdivisions_with_missing_parents.<locals>.<listcomp>)r   r[   r  r   r   r	   &test_subdivisions_with_missing_parents  s   r*  )Ar   os.pathr   r   r   r   r   unittest.mockr   rJ   r   pycountry.dbfixturer   r   r3   r9   rD   rN   rR   rV   ra   re   rj   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r   r(  r*  r   r   r   r	   <module>   sz    
)	



		


