o
    .j                     @  s   d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZ edZejd'd	d
Zejddddddedddfddedddfddedddfg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 )(z8Test the image class to convert from and to binary data.    )annotationsN)CalendarImagevBinaryvUri)vTextziVBORw0KGgoAAAANSUhEUgAAAAEAAAABCA
YAAAAfFcSJAAAACXBIWXMAAAAnAAAAJwEqCZFPAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jn
m+48GgAAAA1JREFUCJlj+P//PwMACPwC/oXNqzQAAAAASUVORK5CYII=returndict[str, Image]c                 C  s.   | j }i }|jD ]}|jd }|||j< q|S )z4Return the images we get from the example calendars.r   )rfc_7986_imagesubcomponentsimagesuid)	calendarscalendarr   	componentimg r   O/home/thesage/.local/lib/python3.10/site-packages/icalendar/tests/test_image.pyr      s   

r   )r   uridatafmt_typealtrepdisplay)z	uri-eventz#http://example.com/images/party.pngN	image/pngNBADGE)zuri-todo#http://example.com/images/party.jpgNNNr   )zuri-journalr   Nz	image/jpgNICONz
data-eventr   z	data-todor   zdata-journalr   c                 C  sR   | | }|j |ksJ |j|ksJ |j|ksJ |j|ks J |j|ks'J dS )z1Test that the image property is parsed correctly.N)r   r   fmttyper   r   )r   r   r   r   r   r   r   imager   r   r   test_image_parsing   s   ?r   c                  C  s   t  } t| jdksJ dS )z*Test that an empty calendar has no images.r   N)r   lenr   )r   r   r   r   test_no_imagesc   s   r!   c                   C  s   t t td W d   n1 sw   Y  t t ttdddid W d   n1 s5w   Y  t t ttd W d   dS 1 sRw   Y  dS )z?Test that creating an image with invalid type raises TypeError.znot a valid typeNVALUETEXTparamshttp://example.com/image.png)pytestraises	TypeErrorr   from_property_valuer   r   r   r   r   test_create_image_invalid_typei   s   "r+   c                  C  sJ   G dd d} t t t|   W d   dS 1 sw   Y  dS )zATest that creating an image with invalid params raises TypeError.c                   @  s   e Zd ZdZdS )z4test_create_image_invalid_params.<locals>.DummyValueinvalidN)__name__
__module____qualname__r%   r   r   r   r   
DummyValuev   s    r0   N)r'   r(   r)   r   r*   )r0   r   r   r    test_create_image_invalid_paramss   s   "r1   c                  C  st   t td} t| ddid}t|}|jdu sJ |jtks#J |j	dks*J |j
du s1J |jdu s8J dS )z/Test creating an Image from a vBinary property.asciiFMTTYPEr   r$   N)base64	b64encodeTRANSPARENT_PIXELdecoder   r   r*   r   r   r   r   r   )b64datavbinr   r   r   r   test_create_with_vBinary}   s   
r:   c                  C  sj   d} t | dddd}t|}|j| ksJ |jdu sJ |jdks%J |jdu s,J |jdks3J dS )z,Test creating an Image from a vUri property.r&   r   r   )r3   DISPLAYr$   N)r   r   r*   r   r   r   r   r   )r   vurir   r   r   r   test_create_with_vUri   s   
r=   c                  C  s`   t tdddid} | jdksJ | jdu sJ | jdu s J | jdu s'J | jdu s.J dS )PTest that creating an image with vText but VALUE URI or BINARY raises TypeError.r&   r"   URIr$   N)r   r*   r   r   r   r   r   r   )r   r   r   r   #test_create_image_with_vText_as_uri   s   r@   c                  C  sp   t td} tt| ddid}|jdu sJ |jtks!J |j	du s(J |j
du s/J |jdu s6J dS )r>   r2   r"   BINARYr$   N)r4   r5   r6   r7   r   r*   r   r   r   r   r   r   )r8   r   r   r   r   &test_create_image_with_vText_as_binary   s   rB   c                   C  sl   t t t  W d   n1 sw   Y  t t tddd W d   dS 1 s/w   Y  dS )z&Test forbidden parameter combinations.N r&   )r8   r   )r'   r(   
ValueErrorr   r   r   r   r   test_requires_uri_xor_binary   s   "rE   )r   r	   )__doc__
__future__r   r4   r'   	icalendarr   r   r   r   icalendar.propr   	b64decoder6   fixturer   markparametrizer   r!   r+   r1   r:   r=   r@   rB   rE   r   r   r   r   <module>   s\    

			
5

