o
    .j)                     @   sV   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
mZ G dd de jZdS )    N)ContentlineContentlines
Parametersdquotefoldlineq_joinq_split)vTextc                   @   sL   e Z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 )IcalendarTestCasec                 C   s   t | ds| j| _d S d S )NassertRaisesRegex)hasattrassertRaisesRegexpr   self r   S/home/thesage/.local/lib/python3.10/site-packages/icalendar/tests/test_icalendar.pysetUp   s   
zIcalendarTestCase.setUpc                 C   sx   t tdg}|tdd | dksJ t dddgks$J t dddgks/J t d	g d
ks:J d S )NzBEGIN:VEVENT d123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 sw   BEGIN:VEVENT
123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234
 56789 123456789 123456789 
zA short line
zA short linezA faked
  long line
A faked long linez:A faked
  long line
And another lin
	e that is folded
)r   zAnd another line that is foldedr   )r   r   appendjointo_ical	from_ical)r   cr   r   r   test_long_lines   s   

z!IcalendarTestCase.test_long_linesc              
   C   s<  t d dks
J t ddgd  }|dksJ t |dks%J | tt d t d	 d
ks6J t d}d| v sBJ t d}| ddksQJ t ddgd   t d dti dfkslJ t d dtddidfks}J t d}| dtddddfksJ | 	ddksJ dtddddf}t j
| dksJ dt df}t j
| d ksJ dt td!f}t j
| d"ksJ d#t td$f}t j
| d%ksJ d#t td$f}t j
| d%ksJ | \}}}|dksJ |dksJ t| td&d'gksJ tjtd(d) t d*  W d    n	1 s-w   Y  tjtd(d) t d+  W d    n	1 sKw   Y  t d, d-td.did/fksbJ t d0 d-td.d1id/fkstJ tjtd(d) t d2  W d    n	1 sw   Y  t d3d4d5 d-td.d1id/fksJ t d3d6d5 d-td.d7id/fksJ t d8d6d5 d-td.d9id/fksJ t d: d;tdd<id=fksJ tjtd(d) t d:d6d5  W d    n	1 sw   Y  d>}t |d6d5 d?td@dAdBdCdDdEdFdGfksJ d S )HNz(Si meliora dies, ut vina, poemata reddits(   Si meliora dies, ut vina, poemata redditr   z
123456789 
   sg   123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234
 56789 123456789 123456789 r   s   1234

1234z1234\n\n1234s   1234\n\n1234sk   This line has a UTF-8 character where it should be folded. Make sure it gëts folded before that character.s   ësX   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxë\n yyyyyyyyyy      x   zdtstart:20050101T120000dtstart20050101T120000z&dtstart;value=datetime:20050101T120000VALUEdatetimezFATTENDEE;CN=Max Rasmussen;ROLE=REQ-PARTICIPANT:MAILTO:maxm@example.comATTENDEEREQ-PARTICIPANTMax Rasmussen)ROLECNzMAILTO:maxm@example.comzutf-8zHATTENDEE;CN="Max Rasmussen";ROLE=REQ-PARTICIPANT:MAILTO:maxm@example.comz ATTENDEE:MAILTO:maxm@example.comzMAILTO:test@example.comz ATTENDEE:MAILTO:test@example.comSUMMARYu   INternational char æ ø åu#   SUMMARY:INternational char æ ø å)r(   r&   )r)   r'   z+Content line could not be parsed into parts)matchzATTENDEE;maxm@example.comz:maxm@example.comzkey;param=:valuekeyPARAMvaluezkey;param="pvalue":valuepvaluezk;:no paramzkey;param=pvalue:valueF)strictTPVALUEzkey;param="pValue":valuepValuez*REFRESH - INTERVAL; VALUE = DURATION:PT48HzREFRESH-INTERVALDURATIONPT48Hs   X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="Kaiserliche Hofburg, 1010 Wien";X-APPLE-MAPKIT-HANDLE=CAESxQEZgr3QZXJyZWljaA==;X-APPLE-RADIUS=328.7978217977285;X-APPLE-REFERENCEFRAME=1;X-TITLE=Heldenplatz:geo:48.206686,16.363235zX-APPLE-STRUCTURED-LOCATIONz328.7978217977285zKaiserliche Hofburg, 1010 Wien1HELDENPLATZzCAESXQEZGR3QZXJYZWLJAA==URI)zX-APPLE-RADIUSz	X-ADDRESSzX-APPLE-REFERENCEFRAMEzX-TITLEzX-APPLE-MAPKIT-HANDLEr#   zgeo:48.206686,16.363235)r   r   r   r   assertRaisesAssertionErrorcountpartsr   decode
from_partsr	   sorteditemspytestraises
ValueError)r   r   r;   nameparamsvalscontains_base64r   r   r   test_contentline_class-   s  











	




z(IcalendarTestCase.test_contentline_classc                 C   s   t ddksJ t ddksJ tt t d dd W d    n1 s(w   Y  t dddd	ks7J t ddks?J t d
dksGJ d S )NfoozdLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis imperdiet dui posuere.zgLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum conval
 lis imperdiet dui posuere.u   привет   )limitfoobar   z	foo
 baruN   DESCRIPTION:АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯuQ   DESCRIPTION:АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭ
 ЮЯ)r   r@   rA   r9   encoder   r   r   r   test_fold_line   s$   z IcalendarTestCase.test_fold_linec                 C   s4   t ddksJ t ddksJ t ddksJ d S )NMaxRasmussen, Max"Rasmussen, Max"z
name:valuez"name:value")r   r   r   r   r   test_value_double_quoting  s   z+IcalendarTestCase.test_value_double_quotingc                 C   s   t dg dks
J d S )NMax,Moller,"Rasmussen, Max")rO   MollerrQ   )r   r   r   r   r   test_q_split  s   zIcalendarTestCase.test_q_splitc                 C   s<   dD ]}t ddD ]}t|d|d|d|ksJ q	qd S )N)zX-SOMETHING=ABCDE==z,,,rI   =)maxsplit)ranger   split)r   srX   r   r   r   test_q_split_bin   s
    z"IcalendarTestCase.test_q_split_binc                 C   s   t g ddks
J d S )N)rO   rT   rP   rS   )r   r   r   r   r   test_q_join%  s   zIcalendarTestCase.test_q_joinN)__name__
__module____qualname__r   r   rG   rN   rR   rU   r\   r]   r   r   r   r   r
      s     Ir
   )unittestr@   icalendar.parserr   r   r   r   r   r   r   icalendar.propr	   TestCaser
   r   r   r   r   <module>   s
    $	