o
    ÌÄ.jK  ã                   @   s"  d Z ddlZddlmZ ddlZddlmZ ddlmZm	Z	m
Z
 er*ddlmZmZ ej ddd	„ d
d	„ g¡Zedd„ ƒZedd„ ƒZedd„ ƒZej dg d¢¡ej ddd	„ dd	„ dd	„ g¡dd„ ƒƒZej ddddejg¡dd„ ƒZej dg d¢¡Zed d!„ ƒZed"d#„ ƒZd$d%„ ZdS )&zNThis implemensts RFC 6868.

There are only some changes to parameters needed.
é    N)ÚTYPE_CHECKING)ÚCalendar)ÚdquoteÚrfc_6868_escapeÚrfc_6868_unescape)ÚvCalAddressÚvTextÚ	duplicatec                 C   ó   | S ©N© ©Úxr   r   úR/home/thesage/.local/lib/python3.10/site-packages/icalendar/tests/test_rfc_6868.pyÚ<lambda>   ó    r   c                 C   s   t  |  ¡ ¡S r   )r   Ú	from_icalÚto_ical)Úcalr   r   r   r      s    c                 C   s*   || j ƒ}|jd d }|jdksJ ‚dS )zCheck the example from the RFC.r   ÚattendeezGeorge Herman "Babe" RuthN)Úrfc_6868ÚeventsÚname)Ú	calendarsr	   r   r   r   r   r   Útest_rfc_6868_example   s   
r   c                 C   ó(   || j ƒ}|d jd }|dksJ ‚dS )z.Check that all examples get decoded correctly.úX-PARAMÚALLz^"
N©r   Úparams©r   r	   r   Úparamr   r   r   Útest_all_parameters   s   
r"   c                 C   r   )zœif a ^ (U+005E) character is followed by any character other than
    the ones above, parsers MUST leave both the ^ and the following
    character in placer   ÚUNKNOWNz^a^ ^asdNr   r    r   r   r   Útest_unknown_character'   s   
r$   )ÚtextÚexpected))ú^ar'   )ú^^ú^)z^'ú")z^^a^bz^a^bÚmodifyc                 C   r
   r   r   r   r   r   r   r   <   r   c                 C   s   | d S )Né
   r   r   r   r   r   r   <   s    c                 C   s   d| › dS )NÚasdzaaA^AAr   r   r   r   r   r   <   s    c                 C   s    t || ƒƒ}|||ƒksJ ‚dS )zCheck unescaping.N)r   )r%   r&   r+   Úresultr   r   r   Útest_unescape1   s   r/   ÚnewlineÚ
z
úc                 C   s"   |  td| ¡ tdƒ| ksJ ‚dS )zUnescape the newline.Úlinesepú^nN)ÚsetattrÚosr   )r0   Úmonkeypatchr   r   r   Útest_unescape_newlineD   s   r8   ))Ú r9   )r)   r(   )r4   z^^n)zThis text
 has several
 linesz!This text^n has^n several^n lines)zCall me "Harry".zCall me ^'Harry^'.c                 C   s:   t | ƒ}||ksJ |›d|›ƒ‚t t|ƒƒ|ksJ ‚dS )z=Check that we can escape the content with special characters.z == N)r   r   )r%   r&   Úescapedr   r   r   Útest_escape_rfc_6868W   s   r;   c                 C   sP   t ƒ }| dd¡ |d }| |jd< | ¡  ¡ }t|ƒ dt|ƒ |v s&J ‚d S )NzX-Paramr-   r   ÚRFC6868zX-PARAM;RFC6868=)r   Úaddr   r   ÚdecodeÚprintr   )r%   r&   r   r!   Úicalr   r   r   Útest_escaping_parameters_   s   
rA   c                 C   s8   | j }t | ¡ ¡}||ksJ ‚| ¡ | ¡ ksJ ‚dS )z0The example file should yield its content again.N)r   r   r   r   )r   r   Úagainr   r   r   Útest_encode_example_againj   s   rC   )Ú__doc__r6   Útypingr   ÚpytestÚicalendar.cal.calendarr   Úicalendar.parserr   r   r   Ú	icalendarr   r   ÚmarkÚparametrizeÚparam_duplicater   r"   r$   r/   r3   r8   Úparam_valuesr;   rA   rC   r   r   r   r   Ú<module>   sH    ÿ


	þ
ÿ
þ


