+
    ¾¾jÖ!  ã                   ó¬  € R t ^ RIt^ RIHt ^ RIHtHtHt R R ltR R lt	. ROt
]P                  P                  R]
4      R	 4       t]P                  P                  R]
4      R
 4       t]P                  P                  RRR.4      R 4       tR tR tR tR tR tR tR tR tR t]P                  P                  R]].4      R 4       tR tR tR# )a  Regression tests for issue #1445.

:rfc:`7265` reserves the ``unknown`` value type for properties whose value type
is not known (unrecognized properties, ``X-`` properties without a ``VALUE``
parameter, ``IMAGE``). Such values MUST be carried into and out of iCalendar
*without processing* -- no :rfc:`5545` escaping or unescaping -- so they
round-trip byte-for-byte (:rfc:`7265#section-5.1` / :rfc:`7265#section-5.2`).

These tests pin down, in every direction:

* unknown values are preserved verbatim;
* known types (including ``VALUE=TEXT``) still get TEXT escaping (R1 boundary);
* unrecognized *parameters* are still treated as TEXT, not verbatim (R2);
* :class:`~icalendar.prop.unknown.vUnknown` no longer inherits from
  :class:`~icalendar.prop.text.vText`, but shares its plumbing.
N)Ú	Component)Ú	vDDDTypesÚvTextÚvUnknownc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚlineÚreturn)Ústrr   )Úformats   "Ú^/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/tests/test_issue_1445.pyÚ__annotate__r      s   € ÷ $ñ $”ð $œñ $ó    c                ó:   € RV  R2p\         P                  ! V4      # )z8Parse a one-property VEVENT from a raw content ``line``.zBEGIN:VEVENT
UID:1
z
END:VEVENT
)r   Ú	from_ical)r   Úicss   & r   Ú_eventr      s"   € à% d VÐ+=Ð
>€CÜ×Ò˜sÓ#Ð#r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   Ú	componentÚnamer	   )r   r
   )r   s   "r   r   r      s&   € ÷ Nñ N”Yð N¤cð N¬cñ Nr   c                óÞ   € V P                  4       P                  4       P                  R4       F  pVP                  V4      '       g   K  Vu # 	  \	        V RV P                  4       : 24      h)zHReturn the serialized content line for ``name`` (unfolded, single line).z
z not serialized in )Úto_icalÚdecodeÚsplitÚ
startswithÚAssertionError)r   r   Ú
serializeds   && r   Ú_liner      sd   € à×'Ñ'Ó)×0Ñ0Ó2×8Ñ8¸Ö@ˆ
Ø× Ñ  ×&Ô&ØÒñ Aô ˜D˜6Ð!4°Y×5FÑ5FÓ5HÑ4KÐLÓ
MÐMr   Úrawc                óv  € \        RV  24      pVR,          p\        V\        4      '       g   Q h\        V4      V 8X  g   Q h\	        VR4      RV  28X  g   Q hVP                  4       ^,          ^,          R/ RV .8X  g   Q h\	        \        P                  ! VP                  4       4      R4      RV  28X  g   Q hR# )zEAn unknown value is preserved byte-for-byte through every conversion.ú
X-MYSTERY:z	X-MYSTERYz	x-mysteryÚunknownN)r   Ú
isinstancer   r
   r   Úto_jcalr   Ú	from_jcal)r   ÚevÚprops   &  r   Ú1test_unknown_value_is_verbatim_in_every_directionr'   7   s¸   € ô 
�*˜S˜EÐ"Ó	#€BØˆk�?€Dô �dœH×%Ò%Ð%Ð%äˆt‹9˜ÔÐÐô ��[Ó! z°#°Ð%7Ô7Ð7Ð7à�:‰:‹<˜�?˜1Õ +¨r°9¸cÐ!BÔBÐBÐBä”×$Ò$ R§Z¡Z£\Ó2°KÓ@ÀjÐQTÐPUÐDVÔVÐVÒVr   c                ó*  € \        RV  24      p\        P                  ! VP                  4       4      P	                  4       pW!P	                  4       8X  g   Q hVP                  4       p\        P                  ! V4      P                  4       pWC8X  g   Q hR# )z<iCal -> jCal -> iCal and jCal -> iCal -> jCal are fixpoints.r    N)r   r   r$   r#   r   )r   r%   Úical_jcal_icalÚjcalÚjcal_ical_jcals   &    r   Ú)test_unknown_value_round_trips_are_stabler,   J   sv   € ô 
�*˜S˜EÐ"Ó	#€Bä×(Ò(¨¯©«Ó6×>Ñ>Ó@€NØŸZ™Z›\Ô)Ð)Ð)à�:‰:‹<€DÜ×(Ò(¨Ó.×6Ñ6Ó8€NØÔ!Ð!Ò!r   c                óÞ   € V P                  R4      ^ ,          p\        V 4      pVP                  4       ^,          ^,          VP                  4       / RV.8X  g   Q h\	        W24      V 8X  g   Q hR# )z3The two literal examples from RFC 7265 section 5.3.Ú:r!   N)r   r   r#   Úlowerr   )ÚicalÚ
jcal_valuer   r%   s   &&  r   Ú"test_rfc_7265_section_5_3_examplesr2   W   s]   € ð �:‰:�c‹?˜1Õ€DÜ	�‹€BØ�:‰:‹<˜�?˜1Õ $§*¡*£,°°I¸zÐ!JÔJÐJÐJÜ�‹?˜dÔ"Ð"Ò"r   c                 ó~   € \        R4      p \        V R,          4      R8X  g   Q hV P                  R4      R8X  g   Q hR# )zFReading an unknown value yields the verbatim text, not a decoded form.ú(X-COFFEE-DATA:Stenophylla;Guinea\,AfricazX-COFFEE-DATAúStenophylla;Guinea\,AfricaN)r   r
   Údecoded©r%   s    r   Ú.test_read_only_access_returns_unprocessed_textr8   f   s>   € ä	Ð;Ó	<€BÜˆr�/Õ"Ó#Ð'DÔDÐDÐDà�:‰:�oÓ&Ð*GÔGÐGÒGr   c                 ó  € \        R4      p \        V R,          \        4      '       g   Q h\        V R,          \        4      '       d   Q h\	        V R4      R8X  g   Q hV P                  4       ^,          ^,          ^,          R8X  g   Q hR# )zCVALUE=TEXT means the author declared TEXT: normal escaping applies.zX-FOO;VALUE=TEXT:a;b\,cúX-FOOzX-FOO;VALUE=TEXT:a\;b\,cÚtextN)r   r"   r   r   r   r#   r7   s    r   Útest_value_text_still_escapesr<   q   ss   € ä	Ð*Ó	+€BÜ�b˜•k¤5×)Ò)Ð)Ð)Ü˜"˜W�+¤x×0Ò0Ð0Ð0ä��WÓÐ!<Ô<Ð<Ð<Ø�:‰:‹<˜�?˜1Õ˜aÕ  FÔ*Ð*Ò*r   c                 ó¬   € \        R4      p \        V R,          \        4      '       g   Q hV P                  4       ^,          ^,          R/ RR.8X  g   Q hR# )zGA recognized VALUE type is parsed as that type, not treated as unknown.zX-WHEN;VALUE=DATE:20110512zX-WHENzx-whenÚdatez
2011-05-12N)r   r"   r   r#   r7   s    r   Ú$test_value_recognized_type_is_parsedr?   {   sJ   € ä	Ð,Ó	-€BÜ�b˜•l¤I×.Ò.Ð.Ð.Ø�:‰:‹<˜�?˜1Õ (¨B°¸Ð!EÔEÐEÒEr   c                 ó  € \        R4      p \        V R,          \        4      '       g   Q hV P                  4       ^,          ^,          R/ RR.8X  g   Q h\        P
                  ! V P                  4       4      p\        VR4      R8X  g   Q hR# )zÅAn unrecognized VALUE type keeps its name and a verbatim value.

The jCal type field is the custom name (not ``unknown``), so the VALUE
parameter survives the round-trip rather than being dropped.
zX-FOO;VALUE=FOOBAR:x;y\,zr:   úx-fooÚfoobarzx;y\,zN)r   r"   r   r#   r   r$   r   )r%   Úbacks     r   Ú3test_value_unrecognized_type_round_trips_losslesslyrD   ‚   sx   € ô 
Ð,Ó	-€BÜ�b˜•k¤8×,Ò,Ð,Ð,Ø�:‰:‹<˜�?˜1Õ '¨2¨x¸Ð!CÔCÐCÐCä×Ò˜rŸz™z›|Ó,€DÜ��wÓÐ#?Ô?Ð?Ò?r   c                 ó  € \        R4      p V R,          p\        V4      R8X  g   Q hVP                  R,          R8X  g   Q hVP                  R,          R8X  g   Q hV P                  4       ^,          ^,          RR	RR
R/RR.8X  g   Q hR# )zJParameters are decoded (RFC 7265 section 5.1), only the value is verbatim.z0X-FOO;X-ROAST="a,b;c";X-NOTE=line1^nline2:val;uer:   zval;uezX-ROASTza,b;czX-NOTEzline1
line2rA   zx-roastzx-noter!   N)r   r
   Úparamsr#   )r%   r&   s     r   Ú3test_unrecognized_parameter_is_decoded_not_verbatimrG   “   s•   € ä	ÐBÓ	C€BØˆg�;€Dô ˆt‹9˜Ô Ð Ð ð �;‰;�yÕ! WÔ,Ð,Ð,Ø�;‰;�xÕ  NÔ2Ð2Ð2à�:‰:‹<˜�?˜1ÕØØ	�G˜X ~Ð6ØØð	"ô ð ò r   c                 óÒ   € \        R4      p \        V R,          \        4      '       g   Q h\        V R4      R8X  g   Q hV P	                  4       ^,          ^,          R/ RR.8X  g   Q hR# )z=IMAGE without a VALUE resolves to unknown and stays verbatim.zIMAGE:a;b\,cÚIMAGEÚimager!   za;b\,cN)r   r"   r   r   r#   r7   s    r   Ú$test_image_without_value_is_verbatimrK   §   s^   € ä	�Ó	 €BÜ�b˜•k¤8×,Ò,Ð,Ð,Ü��WÓ Ô0Ð0Ð0Ø�:‰:‹<˜�?˜1Õ '¨2¨y¸)Ð!DÔDÐDÒDr   c                 ó²   € \        R4      p \        V R,          \        4      '       g   Q h\        V R,          4      R8X  g   Q h\	        V R4      R8X  g   Q hR# )zFA known TEXT property still escapes and round-trips exactly as before.zSUMMARY:a\;b\,cÚSUMMARYza;b,cN)r   r"   r   r
   r   r7   s    r   Ú&test_known_text_property_is_unaffectedrN   ¯   sQ   € ä	Ð"Ó	#€BÜ�b˜•m¤U×+Ò+Ð+Ð+Üˆr�)�}Ó Ô(Ð(Ð(Ü��YÓÐ#5Ô5Ð5Ò5r   c                 óö   € RR/ RR.R/ RR... .p \         P                  ! \        \        34      ;_uu_ 4        \        P
                  ! V 4      P                  4        RRR4       R#   + '       g   i     R# ; i)	zÒA jCal unknown value with a raw newline cannot be a bare iCal value.

This is only reachable from jCal (an iCal content line cannot carry a raw
newline). It fails loudly rather than emitting invalid iCalendar.
ÚveventÚuidr;   Ú1zx-mr!   za
bN)ÚpytestÚraisesr   Ú
ValueErrorr   r$   r   )r*   s    r   Ú5test_jcal_unknown_value_with_raw_newline_fails_safelyrV   ·   sb   € ð ˜˜r 6¨3Ð/°%¸¸YÈÐ1OÐPÐRTÐU€DÜ	�Šœ¬
Ð3×	4Õ	4Ü×Ò˜DÓ!×)Ñ)Ô+÷ 
5×	4×	4Ò	4ús   ¸%A'Á'A8	c                 óÄ   € \        \        \        4      '       d   Q h\        P                  \        P                   U u. uF  q P                  NK  	  up 9  g   Q hR# u up i )zBThe classes are deliberately independent (issue #1445 / RFC 7265).N)Ú
issubclassr   r   Ú__name__Ú__mro__)Úcs    r   Ú$test_vunknown_does_not_inherit_vtextr\   Å   sC   € äœ(¤E×*Ò*Ð*Ð*Ü�>‰>´h×6FÒ6FÓ!GÑ6F°§*¤*Ñ6FÑ!GÔGÐGÒGùÒ!Gs   ¾AÚclsc                ó*  € V ! RRR/R7      p\        V4      R8X  g   Q hVP                  R8X  g   Q hVP                  R,          R8X  g   Q h\        V P	                  R4      V 4      '       g   Q hVP                  R4      w  r#rEW#V3RRR/R38X  g   Q hR# )	zUvText and vUnknown share construction/jCal plumbing (the duplication must not drift).ÚhellozX-PÚv)rF   ÚzrA   zx-pN)r
   Ú
ical_valuerF   r"   r   r#   )r]   Úobjr   rF   Ú_vtypeÚvalues   &     r   Útest_shared_string_plumbingrf   Ë   sœ   € ñ ˆg˜u c˜lÔ
+€CÜˆs‹8�wÔÐÐØ�>‰>˜WÔ$Ð$Ð$Ø�:‰:�eÕ Ô#Ð#Ð#Ü�c—m‘m CÓ(¨#×.Ò.Ð.Ð.Ø"%§+¡+¨gÓ"6Ñ€D�&Ø˜%Ð  W¨u°c¨l¸GÐ$DÔDÐDÒDr   c                 ó†   € \        R4      P                  4       R8X  g   Q h\        R4      P                  4       R8X  g   Q hR# )z;The one place the two classes differ: escaping vs verbatim.úa;bs   a\;bs   a;bN)r   r   r   © r   r   Útest_diverging_to_ical_behaviorrj   ×   s8   € ä�‹<×ÑÓ! XÔ-Ð-Ð-Ü�E‹?×"Ñ"Ó$¨Ô.Ð.Ò.r   c                 ó¦   € \        R4      P                  R4      ^,          R8X  g   Q h\        R4      P                  R4      ^,          R8X  g   Q hR# )z6vText serializes as ``text``; vUnknown as ``unknown``.ÚxrA   r;   r!   N)r   r#   r   ri   r   r   Útest_diverging_jcal_type_fieldrm   Ý   sF   € ä�‹:×Ñ˜gÓ& qÕ)¨VÔ3Ð3Ð3Ü�C‹=× Ñ  Ó)¨!Õ,°	Ô9Ð9Ò9r   )
r5   rh   za,bza\,bza\;bza\\bza\:bza\nbza\NbÚ20110512T120000Z)r0   r1   )z%X-COMPLAINT-DEADLINE:20110512T120000Zrn   )r4   r5   )Ú__doc__rS   Úicalendar.calr   Úicalendar.propr   r   r   r   r   ÚVERBATIM_VALUESÚmarkÚparametrizer'   r,   r2   r8   r<   r?   rD   rG   rK   rN   rV   r\   rf   rj   rm   ri   r   r   Ú<module>ru      s  ðñó" å #ß 5Ñ 5õ$õNò€ð ‡�×Ñ˜ Ó0ñWó 1ðWð$ ‡�×Ñ˜ Ó0ñ	"ó 1ð	"ð ‡�×ÑØàEØTðóñ#óð#òHò+òFò@ò"ò(Eò6ò,òHð ‡�×Ñ˜ ¨Ð 1Ó2ñEó 3ðEò/ô:r   