o
    .j                     @  s  d Z ddlmZ ddlmZmZ ddlmZmZ ddlZzddl	m
Z
 W n ey3   ddlm
Z
 Y nw ddlmZmZ erFddlmZmZ G d	d
 d
eZdMddZdMddZdMddZejdeddedddfedddeddedddfedddddfeddedddfedddeddedddfedddddfeddedddfedddeddedddfedddddfeddedddfedddeddedddfedddddfedddedddedddeddddd fedddedddedddeddddd!fed"d#dedddded"d#dedddddd$fed"d#dedddde
d%d&ed"d#dedddde
d%d&dd'fed"d#dedddde
d(d&ed"d#dedddde
d(d&dd)fed"d#dedddde
d%d&ed"d#dedddddd*fed"d#dedddde
d(d&ed"d#dedddddd+fed"d#dedddde
d(d&ed"d#dedddde
d%d&dd,fgejd-eeeegd.d/ Zd0eeed1Zejd2ed"d3ed4dd5ed6dd5d7fed8d9ed4dd5ed6dd5d:fed8d9ded6dd5dd;d<fedd9ded6dd5d=fed>eded6dd5d?fedeed@ddAdBdBed6dd5ddCdDfed"d0ded6dd5ddCe
d%d&dEfed"d0ded6dd5ddCe
d(d&dFfgdNdKdLZdS )OzThe all() function can be exposed now that we have the after() function.

all() becomes a Generator.
We do not wish to retain a high memory footprint on the occurrences.
    )annotations)datedatetime)TYPE_CHECKING
NamedTupleN)ZoneInfo)
OccurrenceOccurrenceID)RecurrenceIDsTimec                   @  sJ   e Zd ZU ded< ded< ded< ded< edd	d	Zded
< dd ZdS )Adapterstruidnamer
   recurrence_idsr   start  
   endc                 C  s   | j S )N)r   )self r   _/home/thesage/.local/lib/python3.10/site-packages/recurring_ical_events/test/test_occurrence.pycomponent_name    s   zAdapter.component_nameN)__name__
__module____qualname____annotations__r   r   r   r   r   r   r   r      s   
 r   adapterc                 C  s
   t | jS )zCheck the id of the occurrence.)r   idr   r   r   r   occurrence_id$   s   
r    c                 C  s   t | j S z&Check the string of the occurrence id.)r   r   	to_stringr   r   r   r   occurrence_id_string)   s   r#   c                 C  s   t t| j S r!   )r	   from_stringr   r   r"   r   r   r   r   occurrence_id_string_parsed.   s   r%   )adapter1adapter2equalitymessageasdr   r      Tz	same copyasd1Fzdifferent namezdifferent uid   zdifferent recurrence idr   zno recurrence id but copyz"no recurrence id but start differsVEVENTr   r   UTC)tzinfozUTC datezEurope/BerlinzEurope/Berlin dateztimezone differs - UTCz timezone differs - Europe/Berlinz&timezone differs - Europe/Berlin + UTCcreate_occurrencec                 C  s   || }||}||k|ksJ d| ||k|ks J d| ||k|ks,J d| ||k|ks8J d| t |t |k|ksHJ d| t |t |k|ksXJ d| dS )z"Check the equality of Occurrences.z	1 == 2 - z	1 != 2 - z	2 == 1 - z	2 != 1 - zhash1 == hash2 - zhash1 != hash2 - N)hash)r&   r'   r(   r)   r1   occurrence1occurrence2r   r   r   test_equality3   s   wr5       )original_component_idr)   awddi     i  zdate and all values givenVTODOz+-2123_zdatetime and all values given   zdatetime no recurrence idzdate no recurrence idVALARMzno recurrence id and a wild UIDi           zrecurrence id and a wild UIDzstart in UTCzstart in Europe/Berlinr8   r	   r)   r   c                 C  sB   t |  }| |ksJ d| |  | ksJ d| dS )z!Check the equality after parsing.z7The parsed component id should be equal to its source. z)The string representation cannot change. N)r	   r$   r"   )r8   r)   parsed_component_idr   r   r   test_equality_after_parsed   s   8
rB   )r   r   )r8   r	   r)   r   ) __doc__
__future__r   r   r   typingr   r   pytestzoneinfor   ImportErrorbackports.zoneinfo recurring_ical_events.occurrencer   r	   recurring_ical_events.typesr
   r   r   r    r#   r%   markparametrizer5   joinmapchrrange	ALL_CHARSrB   r   r   r   r   <module>   sB   


	q


6