
    XHh                         d Z ddlZddlZddlmZ ddlmZ ddlmZ	m
Z
mZ ddlmZ ddlmZmZ erdd	lmZ erdd
lmZmZ  G d de      Z G d de      Zy)zTests of the builder registry.    N)Type)BeautifulSoup)builder_registryTreeBuilderTreeBuilderRegistry)HTMLParserTreeBuilder   )HTML5LIB_PRESENTLXML_PRESENT)HTML5TreeBuilder)LXMLTreeBuilderForXMLLXMLTreeBuilderc                   (    e Zd ZdZd Zd Zd Zd Zy)TestBuiltInRegistryz@Test the built-in registry with the default builders registered.c                    t        j                  dd      t        k(  sJ t        r>t        j                  dd      t        k(  sJ t        j                  dd      t
        k(  sJ t        r t        j                  dd      t        k(  sJ y y )Nstricthtmlfast
permissivexmlhtml5lib)registrylookupr   r   r   r   r
   r   selfs    X/var/www/html/planif/env/lib/python3.12/site-packages/bs4/tests/test_builder_registry.pytest_combinationz$TestBuiltInRegistry.test_combination#   st    x04IIII??662oEEE??<7;PPPP??:v6:JJJJ     c                 >   t         r=t        j                  d      t        k(  sJ t        j                  d      t        k(  sJ y t        j                  d      J t
        rt        j                  d      t        k(  sJ y t        j                  d      t        k(  sJ y )Nr   r   )r   r   r   r   r   r
   r   r   r   s    r   test_lookup_by_markup_typez.TestBuiltInRegistry.test_lookup_by_markup_type+   s|    ??6*o===??5)-BBBB??5)111v.2BBBBv.2GGGGr   c                    t         r>t        j                  dd      t        k(  sJ t        j                  dd      t        k(  sJ t
        rt        j                  d      t        k(  sJ t        j                  d      t        k(  sJ y )Nlxmlr   r   r   zhtml.parser)r   r   r   r   r   r
   r   r   r   s    r   test_named_libraryz&TestBuiltInRegistry.test_named_library6   sk    ??6515JJJJ??662oEEE??:.2BBBB}-1FFFFr   c                 
   t        j                  d      5  t        dd       t        dddg       	 d d d        t        j                  t
              5  t        dd       d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)NT)record r   )featuresr   zno-such-feature)warningscatch_warningsr   pytestraises
ValueErrorr   s    r   *test_beautifulsoup_constructor_does_lookupz>TestBuiltInRegistry.test_beautifulsoup_constructor_does_lookup?   sv    $$D1 	
 "v."'78	 ]]:& 	:"'89	: 	:	 		: 	:s   A-A9-A69BN)__name__
__module____qualname____doc__r   r    r#   r-    r   r   r   r       s    JK	HG:r   r   c                   V    e Zd ZdZd Zdedee   fdZd Z	d Z
d Zd	 Zd
 Zd Zd Zy)TestRegistryz.Test the TreeBuilderRegistry class in general.c                 "    t               | _        y N)r   r   r   s    r   setup_methodzTestRegistry.setup_methodS   s    +-r   feature_listreturnc                     t        ddj                  |      z   t        fd|i      }| j                  j	                  |       |S )NBuilder__r'   )typejoinobjectr   register)r   r8   clss      r   builder_for_featuresz!TestRegistry.builder_for_featuresV   sA    ,//&Z<V
 	s#
r   c                     | j                         }| j                  j                  d      J | j                  j                         |k(  sJ y )NfoorB   r   r   r   builders     r   test_register_with_no_featuresz+TestRegistry.test_register_with_no_features^   sJ    ++- }}##E*222 }}##%000r   c                     | j                  dd      }| j                  j                  d      |u sJ | j                  j                  d      |u sJ y NrD   barrE   rF   s     r   0test_register_with_features_makes_lookup_succeedz=TestRegistry.test_register_with_features_makes_lookup_succeedi   sN    ++E59}}##E*g555}}##E*g555r   c                 >    | j                   j                  d      J y )Nbazr   r   r   s    r   4test_lookup_fails_when_no_builder_implements_featurezATestRegistry.test_lookup_fails_when_no_builder_implements_featuren   s    }}##E*222r   c                     | j                  d       | j                  d      }| j                  j                         |k(  sJ y rJ   rE   )r   builder2s     r   Ctest_lookup_gets_most_recent_registration_when_no_feature_specifiedzPTestRegistry.test_lookup_gets_most_recent_registration_when_no_feature_specifiedq   s;    !!%(,,U3}}##%111r   c                 <    | j                   j                         J y r6   rO   r   s    r   2test_lookup_fails_when_no_tree_builders_registeredz?TestRegistry.test_lookup_fails_when_no_tree_builders_registeredv   s    }}##%---r   c                 ^   | j                  d       | j                  d       | j                  ddd      }| j                  ddd      }| j                  d       | j                  d       | j                  j                  dd      |k(  sJ | j                  j                  ddd      |k(  sJ y )NrD   rK   rN   quuxrE   )r   has_both_earlyhas_both_lates      r   <test_lookup_gets_most_recent_builder_supporting_all_featureszITestRegistry.test_lookup_gets_most_recent_builder_supporting_all_featuresy   s    !!%(!!%(225%G11%G!!%(!!%( }}##E51]BBB }}##E5%8NJJJr   c                     | j                  dd       | j                  dd       | j                  j                  dd      J y )NrD   rK   rN   rE   r   s    r   :test_lookup_fails_when_cannot_reconcile_requested_featureszGTestRegistry.test_lookup_fails_when_cannot_reconcile_requested_features   s?    !!%/!!%/}}##E51999r   N)r.   r/   r0   r1   r7   strr   r   rB   rH   rL   rP   rS   rU   rZ   r\   r2   r   r   r4   r4   P   sF    8.# ${:K 	16
32
.K:r   r4   )r1   r*   r(   typingr   bs4r   bs4.builderr   r   r   r   bs4.builder._htmlparserr   r&   r
   r   bs4.builder._html5libr   bs4.builder._lxmlr   r   r?   r   r4   r2   r   r   <module>rd      sQ    $     
 :
 6-:& -:`;:6 ;:r   