
    Owg                         d Z ddlZddlZddlmZ ddlmZmZ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)BeautifulSoup)builder_registryHTMLParserTreeBuilderTreeBuilderRegistry   )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    V/var/www/horilla/myenv/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                 D   t         r=t        j                  d      t        k(  sJ t        j                  d      t        k(  sJ y t        j                  d      d k(  s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)T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_library4   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
ValueError)r   ws     r   *test_beautifulsoup_constructor_does_lookupz>TestBuiltInRegistry.test_beautifulsoup_constructor_does_lookup=   sx    $$D1 	Q
 "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                   F    e Zd ZdZd Z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_methodQ   s    +-r   c                     t        ddj                  |      z   t        fd|i      }| j                  j	                  |       |S )NBuilder__r%   )typejoinobjectr   register)r   feature_listclss      r   builder_for_featuresz!TestRegistry.builder_for_featuresT   sA    : 669zL9; 	s#
r   c                     | j                         }| j                  j                  d      J | j                  j                         |k(  sJ y )Nfoor@   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 NrB   barrC   rD   s     r   0test_register_with_features_makes_lookup_succeedz=TestRegistry.test_register_with_features_makes_lookup_succeedf   sN    ++E59}}##E*g555}}##E*g555r   c                 b    | j                  dd      }| j                  j                  d      J y NrB   rI   bazrC   rD   s     r   4test_lookup_fails_when_no_builder_implements_featurezATestRegistry.test_lookup_fails_when_no_builder_implements_featurek   s/    ++E59}}##E*222r   c                     | j                  d      }| j                  d      }| j                  j                         |k(  sJ y rH   rC   r   builder1builder2s      r   Ctest_lookup_gets_most_recent_registration_when_no_feature_specifiedzPTestRegistry.test_lookup_gets_most_recent_registration_when_no_feature_specifiedo   s=    ,,U3,,U3}}##%111r   c                 <    | j                   j                         J y r5   )r   r   r   s    r   2test_lookup_fails_when_no_tree_builders_registeredz?TestRegistry.test_lookup_fails_when_no_tree_builders_registeredt   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 )NrB   rI   rM   quuxrC   )r   has_onehas_the_otherhas_both_earlyhas_both_late	lacks_ones         r   <test_lookup_gets_most_recent_builder_supporting_all_featureszITestRegistry.test_lookup_gets_most_recent_builder_supporting_all_featuresw   s    ++E211%8225%G11%G--e4	11%8 }}##E51]BBB }}##E5%8NJJJr   c                     | j                  dd      }| j                  dd      }| j                  j                  dd      J y rL   rC   rP   s      r   :test_lookup_fails_when_cannot_reconcile_requested_featureszGTestRegistry.test_lookup_fails_when_cannot_reconcile_requested_features   sC    ,,UE:,,UE:}}##E51999r   N)r-   r.   r/   r0   r6   r@   rF   rJ   rN   rS   rU   r]   r_   r1   r   r   r3   r3   N   s3    8.	16
32
.K:r   r3   )r0   r(   r&   bs4r   bs4.builderr   r   r   r   r$   r   r	   r
   r   r   r<   r   r3   r1   r   r   <module>rb      sI    $    
 ,
.:& .:`;:6 ;:r   