+
    ÈB·j¨  ã                   óx  € R t ^ RIt^ RIt^ RIt]P                  P                  ^ ]! ]P                  ! ]4      P                  4       P                  4      4       ^ RItRtRt ! R R]P                  4      t ! R R]P                  4      t ! R R	]P                  4      t]R
8X  d   ]P&                  ! 4        R# R# )zXTests for the pure helpers in new_demo.py:  python3 -m unittest scripts/test_new_demo.pyNuñ   CATEGORIES = [
    ('graphics', 'ðŸŽ¨ å›¾å½¢æ¸²æŸ“', 'åˆ†å½¢', [
        ('mandelbrot', 'æ›¼å¾·å�šé›†å�ˆ'), ('terrain', 'å™ªå£°åœ°å½¢'),
    ]),
    ('games', 'ðŸŽ® æ¸¸æˆ�ä¸Ž AI', 'å�¯ä»¥çŽ©', [
        ('gomoku', 'äº”å­�æ£‹ AI'),
    ]),
]
ue          <section class="cat" id="cat-graphics" aria-labelledby="cat-graphics-title">
            <h2 class="cat-title" id="cat-graphics-title">ðŸŽ¨ å›¾å½¢æ¸²æŸ“<small>åˆ†å½¢</small></h2>
            <div class="card-grid">
            <a href="mandelbrot/" class="card">
            </a>
            </div>
        </section>

        <p class="help">x</p>
c                   ó2   a € ] tR t^t o R tR tR tRtV tR# )ÚAddToCategoriesc                ó
  € \         P                  ! \        R RR4      pVRVP                  R4       pV P	                  VP                  4       P                  R4      4       V P                  RWP                  R4      R 4       R# )ÚgraphicsÚwfcu   æ³¢å‡½æ•°å��ç¼©Nz('games'u#   ('wfc', 'æ³¢å‡½æ•°å��ç¼©'),
    ]),)Únew_demoÚadd_to_categoriesÚNAVÚindexÚ
assertTrueÚrstripÚendswithÚassertNotIn)ÚselfÚoutr   s   &  Ú-/work/data/stt/webtt/scripts/test_new_demo.pyÚ-test_appends_to_the_end_of_the_right_categoryÚ=AddToCategories.test_appends_to_the_end_of_the_right_category    sm   € Ü×(Ò(¬¨j¸%ÐARÓSˆØÐ-˜Ÿ	™	 *Ó-Ð.ˆØ�‰˜Ÿ™Ó)×2Ñ2Ð3YÓZÔ[Ø×Ñ˜ §I¡I¨jÓ$9Ð$:Ð ;Ö<ó    c                ó`  € V P                  \        4      ;_uu_ 4        \        P                  ! \        R RR4       RRR4       V P                  \        4      ;_uu_ 4        \        P                  ! \        RRR4       RRR4       R#   + '       g   i     LU; i  + '       g   i     R# ; i)ÚnopeÚxNr   Úterrainu   å™ªå£°åœ°å½¢)ÚassertRaisesÚ
ValueErrorr   r   r	   ©r   s   &r   Ú,test_rejects_unknown_category_and_duplicatesÚ<AddToCategories.test_rejects_unknown_category_and_duplicates&   sl   € Ø×Ñœz×*Õ*Ü×&Ò&¤s¨F°C¸Ô=÷ +à×Ñœz×*Õ*Ü×&Ò&¤s¨J¸	À>ÔR÷ +Ñ*÷ +×*úç*×*Ð*ús   žB	Á!BÂ	B	ÂB-	c                ó´   € / p\        \        P                  ! \        R RR4      V4       V P	                  VR,          ^,          ^,          R,          R4       R# )ÚgamesÚchip8úCHIP-8Ú
CATEGORIESNéÿÿÿÿ)r    r!   )Úexecr   r   r	   ÚassertEqual)r   Únss   & r   Ú!test_result_is_still_valid_pythonÚ1AddToCategories.test_result_is_still_valid_python,   sG   € ØˆÜŒX×'Ò'¬¨W°g¸xÓHÈ"ÔMØ×Ñ˜˜LÕ)¨!Õ,¨QÕ/°Õ3Ð5HÖIr   © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r'   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ò=òS÷Jð Jr   r   c                   ó2   a € ] tR t^2t o R tR tR tRtV tR# )ÚAddCardc                óö   € \         P                  ! \        R RRRRRRR4	      pVRVP                  R4       pV P	                  R	V4       V P                  VP                  R
4      VP                  R	4      4       R# )r   Ú r   u   ðŸ§©ÚWFCu   è¯´æ˜Žu   æ ‡ç­¾Nz
</section>zhref="wfc/"zhref="mandelbrot/")r   Úadd_cardÚHOMEr
   ÚassertInÚ
assertLess)r   r   Úsections   &  r   Ú&test_adds_card_inside_existing_sectionÚ.AddCard.test_adds_card_inside_existing_section3   si   € Ü×Ò¤ j°"°b¸%ÀÈÐPXÐZbÓcˆØÐ.�s—y‘y Ó.Ð/ˆØ�‰�m WÔ-Ø�‰˜Ÿ™Ð&:Ó;¸W¿]¹]È=Ó=YÖZr   c                ó.  € \         P                  ! \        R RRRRRRR4	      pV P                  RV4       V P	                  VP                  R	4      VP                  R4      4       V P	                  VP                  R4      VP                  R
4      4       R# )r   u   ðŸŽ® æ¸¸æˆ�ä¸Ž AIu	   å�¯ä»¥çŽ©r    u   ðŸ•¹ï¸�r!   ÚdÚtzid="cat-games"zid="cat-graphics"z<p class="help">N)r   r7   r8   r9   r:   r
   ©r   r   s   & r   Ú/test_creates_missing_section_after_the_last_oneÚ7AddCard.test_creates_missing_section_after_the_last_one9   s{   € Ü×Ò¤ gÐ/BÀKÐQXÐZcÐemÐorÐtwÓxˆØ�‰Ð&¨Ô,Ø�‰˜Ÿ	™	Ð"5Ó6¸¿	¹	ÐBRÓ8SÔTØ�‰˜Ÿ	™	Ð"2Ó3°S·Y±YÐ?QÓ5RÖSr   c                óJ  € \         P                  ! \        R RRRRRRR4	      pV P                  RV4       V P                  RV4       V P	                  \
        4      ;_uu_ 4        \         P                  ! \        R RRR	RRR
R4	       RRR4       R#   + '       g   i     R# ; i)r   r5   r   Úiza<bzc&dr@   za&lt;bzc&amp;dÚ
mandelbrotr?   ÚgN)r   r7   r8   r9   r   r   rA   s   & r   Ú(test_escapes_text_and_rejects_duplicatesÚ0AddCard.test_escapes_text_and_rejects_duplicates?   s   € Ü×Ò¤ j°"°b¸#¸sÀEÈ5ÐRUÓVˆØ�‰�h Ô$Ø�‰�i Ô%Ø×Ñœz×*Õ*Ü×Òœd J°°B¸ÀcÈ3ÐPSÐUXÔY÷ +×*×*Ò*ús   Á$#BÂB"	r)   N)	r*   r+   r,   r-   r<   rB   rH   r.   r/   r0   s   @r   r3   r3   2   s   ø‡ € ò[òT÷Zð Zr   r3   c                   ó,   a € ] tR t^Gt o R tR tRtV tR# )ÚPageHtmlc                ó²   € V P                  R \        P                  ! RRRRRR4      4       V P                  R \        P                  ! RRRRRR4      4       R# )	zhref="style.css"ÚTÚHÚSr5   ÚhTFN)r9   r   Ú	page_htmlr   r   s   &r   Ú)test_links_own_stylesheet_only_when_askedÚ2PageHtml.test_links_own_stylesheet_only_when_askedH   sP   € Ø�‰Ð(¬(×*<Ò*<¸SÀ#ÀsÈBÐPSÐUYÓ*ZÔ[Ø×ÑÐ+¬X×-?Ò-?ÀÀSÈ#ÈrÐSVÐX]Ó-^Ö_r   c                óÀ   € \         P                  ! R RRRRR4      pV P                  VP                  R4      ^4       V P                  VP                  R4      ^4       R# )	rM   rN   rO   r5   rP   Fz<nav class="top-nav"></nav>z#<details class="explain"></details>N)r   rQ   r%   Úcount)r   Úpages   & r   Ú-test_has_the_placeholders_the_generators_fillÚ6PageHtml.test_has_the_placeholders_the_generators_fillL   sP   € Ü×!Ò! # s¨C°°S¸%Ó@ˆØ×Ñ˜Ÿ™Ð$AÓBÀAÔFØ×Ñ˜Ÿ™Ð$IÓJÈAÖNr   r)   N)r*   r+   r,   r-   rR   rW   r.   r/   r0   s   @r   rK   rK   G   s   ø‡ € ò`÷Oð Or   rK   Ú__main__)Ú__doc__ÚpathlibÚsysÚunittestÚpathÚinsertÚstrÚPathÚ__file__ÚresolveÚparentr   r	   r8   ÚTestCaser   r3   rK   r*   Úmainr)   r   r   Ú<module>rg      s¥   ðÙ ^Û Û 
Û à ‡�‡��‘3�w—|’| HÓ-×5Ñ5Ó7×>Ñ>Ó?Ô @Û ð€ð	€ôJ�h×'Ñ'ô Jô&Zˆh×Ñô Zô*Oˆx× Ñ ô Oð ˆzÔØ‡M‚M†Oñ r   