+
    >—·j®  ã                   ó’  € R t ^ RIt^ RIt^ RIt^ RIt]P                  P                  ^ ]! ]P                  ! ]
4      P                  4       P                  4      4       ^ RIt ! R R]P                  P                  4      tR t ! R R]P$                  4      t ! R R]P$                  4      t]R	8X  d   ]P,                  ! 4        R# R# )
zQTests for the shared top navigation:  python3 -m unittest scripts/test_gen_nav.pyNc                   óH   a a€ ] tR t^t oRtV 3R ltR tR tR tRt	Vt
V ;t# )ÚLinkszOCollects (href, text, current, where) for every link, where = 'bar' or 'panel'.c                óP   <€ \         SV `  4        . . R uV n        V n        V n        R # ©N)ÚsuperÚ__init__ÚlinksÚstackÚopen)ÚselfÚ	__class__s   &€Ú,/work/data/stt/webtt/scripts/test_gen_nav.pyr   ÚLinks.__init__   s$   ø€ Ü‰ÑÔØ,.°°DÐ)ˆŒ
�D”J ¦	ó    c                óp  € \        V4      pV P                  P                  VP                  R R4      4       VR8X  dy   \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      '       d   RMRpVR,          RVP                  R	4      R
8H  V.V n        R# R# )ÚclassÚ Úac              3   ó,   "  € T F
  pR V9   x € K  	  R# 5i)z	nav-panelN© )Ú.0Úcs   & r   Ú	<genexpr>Ú(Links.handle_starttag.<locals>.<genexpr>   s   é € Ð"H¹Z¸ ;°!Ö#3»Zùs   ‚TFÚpanelÚbarÚhrefzaria-currentÚpageN)Údictr	   ÚappendÚgetÚanyr
   )r   ÚtagÚattrsr   Úwheres   &&&  r   Úhandle_starttagÚLinks.handle_starttag   s…   € Ü�‹KˆØ�
‰
×Ñ˜!Ÿ%™% ¨Ó,Ô-Ø�#Œ:ß"›sÑ"H¸T¿ZºZÓ"HŸsŸsšsÑ"H¸T¿ZºZÓ"H×HÒH‘GÈeˆEØ˜6� B¨¯©¨nÓ(=ÀÑ(GÈÐOˆDŽIñ r   c                óÞ   € V P                   P                  4        VR 8X  dL   V P                  '       d8   V P                  P	                  \        V P                  4      4       RV n        R# R# R# )r   N)r	   Úpopr
   r   r   Útuple)r   r"   s   &&r   Úhandle_endtagÚLinks.handle_endtag   sH   € Ø�
‰
�‰ÔØ�#Œ:˜$Ÿ)Ÿ)˜)Ø�J‰J×Ñœe D§I¡IÓ.Ô/ØˆDŽIñ $‰:r   c                óˆ   € V P                   '       d0   V P                   ^;;,          VP                  4       ,          uu&   R# R# )é   N)r
   Ústrip)r   Údatas   &&r   Úhandle_dataÚLinks.handle_data   s(   € Ø�9�9ˆ9Ø�I‰I�a�L˜DŸJ™J›LÕ(�Lñ r   )r   r
   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r%   r*   r0   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r      s"   ù‡ € ÙYõ9òPò÷)ò )r   r   c                 óx   € \        4       pVP                  \        P                  ! V 4      4       VP                  # r   )r   ÚfeedÚgen_navÚrenderr   )ÚslugÚps   & r   r   r   $   s'   € Ü‹€AØ‡F�FŒ7�>Š>˜$ÓÔ Ø�7‰7€Nr   c                   óD   a € ] tR t^*t o R tR tR tR tR tR t	Rt
V tR# )	ÚRenderc           
     ó  € \        R 4       Uu. uF  q^,          R8X  g   K  VNK  	  ppT P                  V UUu. uF  vr4VNK  	  upp\        P                   UUu. uF  w  rTRV R2NK  	  upp4       R# u upi u uppi u uppi )Ú
mandelbrotr   ú../Ú/N)r   ÚassertEqualr=   ÚDEMOS)r   Úlr   ÚhÚ_r?   s   &     r   Ú test_panel_lists_every_demo_onceÚ'Render.test_panel_lists_every_demo_once+   sq   € Ü! ,Ô/ÓCÑ/�q°Qµ4¸7±?—�Ñ/ˆÐCØ×Ñ©Ô/©  ›!©Ò/ÌwÏ}Ê}Ô1]É}ÁGÀD°C¸°v¸Q³-É}Ò1]Ö^ùò DùÛ/ùÓ1]s   ŽA7¢A7ºA<
ÁBc           
     ó‚  € \        R 4       Uu. uF  q^,          R8X  g   K  VNK  	  pp\        R \        P                   4       4      pV P	                  V^ ,          R,          R4       T P	                  VR,           UUu. uF  vrEVNK  	  uppV UUu. uF  w  reRV R2NK  	  upp4       R# u upi u uppi u uppi )	Úfluidr   c              3   ó@   "  € T F  w  p r#VR 8X  g   K  Vx € K  	  R# 5i)Ú
simulationNr   )r   ÚkeyrK   Údemoss   &   r   r   ÚMRender.test_bar_shows_home_and_the_current_categorys_demos.<locals>.<genexpr>1   s#   é € ÐbÑ8JÑ$4 C¨¨AÈcÐUaÑNaŸ%š%Ó8Jùs   ‚”
:Né   NrE   :r-   NNrF   N)rE   u
   â†� é¦–é¡µ)r   Únextr=   Ú
CATEGORIESrG   )r   rI   r   rQ   rJ   rK   r?   s   &      r   Ú3test_bar_shows_home_and_the_current_categorys_demosÚ:Render.test_bar_shows_home_and_the_current_categorys_demos/   s¡   € Ü œ.Ó:™.�Q¨a­D°E©M�qˆq™.ˆÐ:ÜÑb¼×8JÒ8JÓbÓbˆ
Ø×Ñ˜˜Q� �Ð%:Ô;Ø×Ñ¨¨R®Ô1©  ›!©Ò1ÑQ[Ô3\ÑQ[ÁgÀd°c¸$¸¸q³MÑQ[Ò3\Ö]ùò ;ùó 2ùÓ3\s   ŽB0¢B0ÂB5
ÂB;c                ó  € \        R 4       Uu. uF  q^,          '       g   K  VNK  	  ppT P                  V UUu0 uF  vr4VkK  	  uppR04       T P                  V UUu0 uF  Ev rEVkK	  	  uppRR04       R# u upi u uppi u uppi )Úchip8z	../chip8/r   r   N)r   rG   )r   rI   ÚcurrentrJ   rK   Úws   &     r   Ú$test_only_the_current_page_is_markedÚ+Render.test_only_the_current_page_is_marked5   sv   € Ü# GœnÓ5™n˜°!·±—1�1™nˆÐ5Ø×Ñ©Ô1©  ›!©Ò1°K°=ÔAØ×Ñ©Ô1©¡ ›!©Ò1°E¸7Ð3CÖDùò 6ùÛ1ùÛ1s   ŽA;£A;»B 
Á!B
c                óz   € \         P                  ! R 4      pV P                  RV4       V P                  RV4       R# )Újpegu   class="nav-cat">å¤šåª’ä½“<zclass="nav-here">JPEG<N©r=   r>   ÚassertIn©r   Únavs   & r   Ú,test_bar_names_the_current_category_and_pageÚ3Render.test_bar_names_the_current_category_and_page:   s.   € Ü�nŠn˜VÓ$ˆØ�‰Ð2°CÔ8Ø�‰Ð.°Ö4r   c                óz   € \         P                  ! R 4      pV P                  RV4       V P                  RV4       R# )Úsha256z<details class="nav-all">u   <summary>å…¨éƒ¨ç¤ºä¾‹</summary>Nrb   rd   s   & r   Ú9test_panel_is_a_details_element_that_works_without_scriptÚ@Render.test_panel_is_a_details_element_that_works_without_script?   s.   € Ü�nŠn˜XÓ&ˆØ�‰Ð1°3Ô7Ø�‰Ð7¸Ö=r   c                óª   € R \         P                  ! R4       R2pV P                  \        \         P                  P                  V4      4      ^4       R# )ú<body class="has-nav">
Úwfcz</body>N)r=   r>   rG   ÚlenÚNAV_REÚfindall)r   r   s   & r   Ú<test_every_page_gets_a_nav_that_the_generator_can_find_againÚCRender.test_every_page_gets_a_nav_that_the_generator_can_find_againD   s>   € à)¬'¯.ª.¸Ó*?Ð)@ÀÐHˆØ×ÑœœWŸ^™^×3Ñ3°DÓ9Ó:¸AÖ>r   r   N)r2   r3   r4   r5   rL   rX   r^   rf   rj   rr   r7   r8   ©r:   s   @r   rB   rB   *   s+   ø‡ € ò_ò^òEò
5ò
>÷
?ð ?r   rB   c                   ó8   a € ] tR t^Jt o R tR tR tR tRtV t	R# )Ú	BodyClassc                óR   € V P                  \        P                  ! R 4      R4       R# )z<body>
rm   N©rG   r=   Úwith_nav_class©r   s   &r   Ú test_adds_has_nav_to_a_bare_bodyÚ*BodyClass.test_adds_has_nav_to_a_bare_bodyK   s   € Ø×Ñœ×/Ò/°
Ó;Ð=WÖXr   c                óR   € V P                  \        P                  ! R 4      R4       R# )z<body class="dark">z<body class="dark has-nav">Nrx   rz   s   &r   Útest_keeps_other_classesÚ"BodyClass.test_keeps_other_classesN   s   € Ø×Ñœ×/Ò/Ð0EÓFÐHeÖfr   c                óR   € V P                  \        P                  ! R 4      R 4       R# )z<body class="has-nav">Nrx   rz   s   &r   Útest_leaves_pages_that_have_itÚ(BodyClass.test_leaves_pages_that_have_itQ   s   € Ø×Ñœ×/Ò/Ð0HÓIÐKcÖdr   c                óÈ   € \         P                   FM  w  r\         P                  R ,          V,          R,          P                  RR7      pV P	                  VRV4       KO  	  R# )Úwwwz
index.htmlzutf-8)Úencodingz<body class="[^"]*\bhas-nav\bN)r=   rH   ÚROOTÚ	read_textÚassertRegex)r   r?   rK   r   s   &   r   Útest_every_demo_page_has_itÚ%BodyClass.test_every_demo_page_has_itT   sL   € Ü—}”}‰GˆDÜ—L‘L 5Õ(¨4Õ/°,Õ>×IÑIÐSZÐIÓ[ˆDØ×Ñ˜TÐ#CÀTÖJó %r   r   N)
r2   r3   r4   r5   r{   r~   r�   r‰   r7   r8   rt   s   @r   rv   rv   J   s#   ø‡ € òYògòe÷Kð Kr   rv   Ú__main__)r6   Úhtml.parserÚhtmlÚpathlibÚsysÚunittestÚpathÚinsertÚstrÚPathÚ__file__ÚresolveÚparentr=   ÚparserÚ
HTMLParserr   r   ÚTestCaserB   rv   r2   Úmainr   r   r   Ú<module>rœ      s    ðÙ WÛ Û Û 
Û à ‡�‡��‘3�w—|’| HÓ-×5Ñ5Ó7×>Ñ>Ó?Ô @Û ô)ˆD�K‰K×"Ñ"ô )ò2ô?ˆX×Ñô ?ô@K�×!Ñ!ô Kð  ˆzÔØ‡M‚M†Oñ r   