o
    MK&hÈ  ã                   @   s¤   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r6dd	lmZ er@dd
lmZmZ G dd„ deƒZG dd„ deƒZdS )zTests of the builder registry.é    N)ÚType)ÚBeautifulSoup)Úbuilder_registryÚTreeBuilderÚTreeBuilderRegistry)ÚHTMLParserTreeBuilderé   )ÚHTML5LIB_PRESENTÚLXML_PRESENT)ÚHTML5TreeBuilder)ÚLXMLTreeBuilderForXMLÚLXMLTreeBuilderc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestBuiltInRegistryz@Test the built-in registry with the default builders registered.c                 C   s`   t  dd¡tks
J ‚tr t  dd¡tksJ ‚t  dd¡tks J ‚tr,t  dd¡tks.J ‚d S d S )NÚstrictÚhtmlÚfastÚ
permissiveÚxmlÚhtml5lib)ÚregistryÚlookupr   r
   r   r   r	   r   ©Úself© r   úR/var/www/html/venv/lib/python3.10/site-packages/bs4/tests/test_builder_registry.pyÚtest_combination#   s   ÿz$TestBuiltInRegistry.test_combinationc                 C   sn   t rt d¡tksJ ‚t d¡tksJ ‚d S t d¡d u sJ ‚tr,t d¡tks*J ‚d S t d¡tks5J ‚d S )Nr   r   )r
   r   r   r   r   r	   r   r   r   r   r   r   Útest_lookup_by_markup_type+   s   z.TestBuiltInRegistry.test_lookup_by_markup_typec                 C   sX   t rt dd¡tksJ ‚t dd¡tksJ ‚tr!t d¡tks!J ‚t d¡tks*J ‚d S )NÚlxmlr   r   r   zhtml.parser)r
   r   r   r   r   r	   r   r   r   r   r   r   Útest_named_library6   s   z&TestBuiltInRegistry.test_named_libraryc                 C   s„   t jdd tddd tdddgd W d   ƒ n1 sw   Y  t t¡ tddd W d   ƒ d S 1 s;w   Y  d S )NT)ÚrecordÚ r   )Úfeaturesr   zno-such-feature)ÚwarningsÚcatch_warningsr   ÚpytestÚraisesÚ
ValueErrorr   r   r   r   Ú*test_beautifulsoup_constructor_does_lookup?   s   ø"ÿz>TestBuiltInRegistry.test_beautifulsoup_constructor_does_lookupN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r'   r   r   r   r   r       s    	r   c                   @   sf   e Zd ZdZdd„ Zdedee fdd„Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestRegistryz.Test the TreeBuilderRegistry class in general.c                 C   s   t ƒ | _d S ©N)r   r   r   r   r   r   Úsetup_methodS   s   zTestRegistry.setup_methodÚfeature_listÚreturnc                 G   s,   t dd |¡ tfd|iƒ}| j |¡ |S )NÚBuilder_Ú_r!   )ÚtypeÚjoinÚobjectr   Úregister)r   r/   Úclsr   r   r   Úbuilder_for_featuresV   s
   ÿz!TestRegistry.builder_for_featuresc                 C   s2   |   ¡ }| j d¡d u sJ ‚| j ¡ |ksJ ‚d S )NÚfoo©r8   r   r   ©r   Úbuilderr   r   r   Útest_register_with_no_features^   s   z+TestRegistry.test_register_with_no_featuresc                 C   s8   |   dd¡}| j d¡|u sJ ‚| j d¡|u sJ ‚d S ©Nr9   Úbarr:   r;   r   r   r   Ú0test_register_with_features_makes_lookup_succeedi   s   z=TestRegistry.test_register_with_features_makes_lookup_succeedc                 C   s   | j  d¡d u s
J ‚d S )NÚbaz©r   r   r   r   r   r   Ú4test_lookup_fails_when_no_builder_implements_featuren   s   zATestRegistry.test_lookup_fails_when_no_builder_implements_featurec                 C   s*   |   d¡ |   d¡}| j ¡ |ksJ ‚d S r>   r:   )r   Úbuilder2r   r   r   ÚCtest_lookup_gets_most_recent_registration_when_no_feature_specifiedq   s   

zPTestRegistry.test_lookup_gets_most_recent_registration_when_no_feature_specifiedc                 C   s   | j  ¡ d u s	J ‚d S r-   rB   r   r   r   r   Ú2test_lookup_fails_when_no_tree_builders_registeredv   s   z?TestRegistry.test_lookup_fails_when_no_tree_builders_registeredc                 C   sv   |   d¡ |   d¡ |   ddd¡}|   ddd¡}|   d¡ |   d¡ | j dd¡|ks-J ‚| j ddd¡|ks9J ‚d S )Nr9   r?   rA   Úquuxr:   )r   Úhas_both_earlyÚhas_both_later   r   r   Ú<test_lookup_gets_most_recent_builder_supporting_all_featuresy   s   



zITestRegistry.test_lookup_gets_most_recent_builder_supporting_all_featuresc                 C   s2   |   dd¡ |   dd¡ | j dd¡d u sJ ‚d S )Nr9   r?   rA   r:   r   r   r   r   Ú:test_lookup_fails_when_cannot_reconcile_requested_featuresˆ   s   zGTestRegistry.test_lookup_fails_when_cannot_reconcile_requested_featuresN)r(   r)   r*   r+   r.   Ústrr   r   r8   r=   r@   rC   rE   rF   rJ   rK   r   r   r   r   r,   P   s    r,   )r+   r$   r"   Útypingr   Úbs4r   Úbs4.builderr   r   r   r   Úbs4.builder._htmlparserr   r    r	   r
   Úbs4.builder._html5libr   Úbs4.builder._lxmlr   r   r5   r   r,   r   r   r   r   Ú<module>   s    0