U
    jr                     @   s  d Z ddlmZ ddlZddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ G dd dZ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d Zejdddd d!gd"d# Zejd$dej fd%ej!fd&ej"fgd'd( Z#e d)d* Z$e	d+d,d-Z%e	d+d.d/Z&d0d1 Z'd2d3 Z(d4d5 Z)ejd6d7d8ge	d+d9d:Z*e	d+d;d<Z+e	d+d=d>Z,ejd?dd@gedAdBdCZ-ejdDdej.fd%ej/fgdEdF Z0dGdH Z1dS )IzTest the property parameters.    )datetimeN)	CUTYPEFBTYPEPARTSTATRANGERELTYPEvCalAddress	vDatetimevPeriodvText)
Parameters)TZPc                   @   sL   e Zd ZU eed< dd ZedddZddlm	Z	m
Z
mZmZmZmZ d	S )
Propparamsc                 K   s   t || _dS )zCreate a new property.N)r   r   )self
parameters r   V/tmp/pip-unpacked-wheel-g40nyxg1/icalendar/tests/test_issue_798_property_parameters.py__init__   s    zProp.__init__)returnc                 C   s   | j  dS )zParameters to bytes to string.zutf-8)r   to_icaldecode)r   r   r   r   r      s    zProp.to_icalr   )ALTREPCNr   DELEGATED_FROMDELEGATED_TOr   N)__name__
__module____qualname__r   __annotations__r   strr   Zicalendar.paramr   r   r   r   r   r   r   r   r   r   r      s   
r   c                   C   s   t  S )zEmpty test property.)r   r   r   r   r   p,   s    r!   c                 C   s*   d| _ | jddikst| j dks&td S )Nhttp://example.comr   r   r   AssertionErrorr!   r   r   r   test_set_altrep2   s    r&   c                   C   s   t dd dkstdS )z,altrepparam = "ALTREP" "=" DQUOTE uri DQUOTEZ1234aA)r   zALTREP="1234aA"N)r   r   r$   r   r   r   r   test_altrep_must_be_quoted7   s    r'   c                 C   s$   | ` | ji kst| j dks tdS )Del when emptyNr#   r%   r   r   r   test_del_altrep;   s    r)   c                 C   s*   d| _ | ` | ji kst| j dks&tdS )r(   r"   Nr#   r%   r   r   r   test_del_altrep_fullA   s    r*   c                 C   s   | j dkstdS )zThe default is individual.
INDIVIDUALN)r   r$   r%   r   r   r   test_get_cutypeI   s    r,   c                  C   s2   t dd} | jdkstd| _| jtjks.td S )NZ
individual)r   r+   unknown)r   r   r$   UNKNOWNr%   r   r   r   test_set_lowercaseN   s    
r/   c                 C   s   d| _ | j dkstd S )N
mailto:foor0   )r   r$   r%   r   r   r   test_set_delegation_to_stringU   s    r2   c                 C   s   d| _ | j dkstd S )Nr0   z
mailto:barr   r$   r%   r   r   r   test_set_delegation_to_tupleY   s    r5   c                 C   s   d| _ | ` | j dkstd S )Nr3   r   r4   r%   r   r   r   test_delete_delegation_to]   s    r6   )valueexpected)r    )r1   zDELEGATED-TO="mailto:foo")r3   z&DELEGATED-TO="mailto:foo","mailto:bar"))zmailto:"asd"zDELEGATED-TO="mailto:^'asd^'"c                 C   s   || _ |  |kstd S N)r   r   r$   )r!   r7   r8   r   r   r   test_serialize_delegation_tob   s    
r;   )indexr8         c                 C   s8   | j j| }|d }t|tr&|d }||jks4td S )NZFREEBUSYr   )Zissue_798_freebusyZfreebusy
isinstancelistr   r$   )	calendarsr<   r8   Zfbr!   r   r   r   test_get_fbtypep   s
    	
rB   c                   C   s   t dS )Nr0   )r   r   r   r   r   addr   s    rC   rC   c                 C   s   | j dkstdS )ztest the default partstatzNEEDS-ACTIONN)r   r$   rD   r   r   r   test_partstat_get   s    rE   c                 C   s   t j| _ | j dkstd S )NACCEPTED)r   rF   r$   rD   r   r   r   test_set_the_partstat   s    rG   c                   C   s   t tdddjd kstd S N     
   )r	   r   r   r$   r   r   r   r   test_this_and_future   s    rL   c                  C   s.   t tddd} tj| _| jd dks*td S )NrI   rJ   rK   r   THISANDFUTURE)r	   r   r   rM   r   r$   )dr   r   r   test_this_and_future_set   s    rO   c                 C   s   | j r
td S r:   )RSVPr$   rD   r   r   r   test_rsvp_default   s    rQ   rsvpTFc                 C   s2   || _ | j |kst| jd |r$dndks.td S )NrP   TRUEFALSE)rP   r$   r   )rC   rR   r   r   r   test_set_rsvp   s    rU   c                 C   s   | j d kstd S r:   )SENT_BYr$   rD   r   r   r   test_sent_by   s    rW   c                 C   s<   d| _ | j dkst| jd dks&t| j dks8td S )Nz
mailto:asdzSENT-BYs   SENT-BY="mailto:asd")rV   r$   r   r   rD   r   r   r   test_set_sent_by   s    rX   tzidzEurope/Berlin)tzpc                 C   s*   t |tddd| }|jd ks&td S rH   )r	   Zlocalizer   ZTZIDr$   )rY   rZ   dtr   r   r   	test_tzid   s    r\   )r<   reltypec                 C   sH   | j j| }t|   |d }t| t|j ||jksDtdS )z&The reltype parameter in the examples.z
RELATED-TON)Zissue_798_related_toeventsprintr   r   r   r   r$   )rA   r<   r]   eventrr   r   r   test_reltype_example   s    	
rb   c                 C   s.   t j| _ | j t jkst| jd dks*td S )Nr   CHILD)r   rc   r$   r   r%   r   r   r   test_set_reltype   s    rd   )2__doc__r   ZpytestZ	icalendarr   r   r   r   r   r   r	   r
   r   Zicalendar.parserr   Zicalendar.timezone.tzpr   r   Zfixturer!   r&   r'   r)   r*   r,   r/   r2   r5   r6   markZparametrizer;   ZBUSY_UNAVAILABLEZBUSYZFREErB   rC   rE   rG   rL   rO   rQ   rU   rW   rX   r\   ZPARENTZSIBLINGrb   rd   r   r   r   r   <module>   sn   ,
	




