o
    Lf                     @   s   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r4d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)BeautifulSoup)builder_registryHTMLParserTreeBuilderTreeBuilderRegistry   )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   U/home/ubuntu/dev/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 k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_library4   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
ValueError)r   wr   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                   @   sX   e Zd ZdZ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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_methodQ   s   zTestRegistry.setup_methodc                 G   s,   t dd| tfd|i}| j| |S )NBuilder__r   )typejoinobjectr   register)r   feature_listclsr   r   r   builder_for_featuresT   s
   
z!TestRegistry.builder_for_featuresc                 C   s2   |   }| jdd u sJ | j |ksJ d S )Nfoor6   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 Nr7   barr8   r9   r   r   r   0test_register_with_features_makes_lookup_succeedf   s   z=TestRegistry.test_register_with_features_makes_lookup_succeedc                 C   s$   |  dd}| jdd u sJ d S Nr7   r=   bazr8   r9   r   r   r   4test_lookup_fails_when_no_builder_implements_featurek   s   zATestRegistry.test_lookup_fails_when_no_builder_implements_featurec                 C   s*   |  d}|  d}| j |ksJ d S r<   r8   r   builder1builder2r   r   r   Ctest_lookup_gets_most_recent_registration_when_no_feature_specifiedo   s   

zPTestRegistry.test_lookup_gets_most_recent_registration_when_no_feature_specifiedc                 C   s   | j  d u s	J d S r,   )r   r   r   r   r   r   2test_lookup_fails_when_no_tree_builders_registeredt   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 )Nr7   r=   r@   quuxr8   )r   has_onehas_the_otherhas_both_earlyhas_both_late	lacks_oner   r   r   <test_lookup_gets_most_recent_builder_supporting_all_featuresw   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 r?   r8   rB   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-   r6   r;   r>   rA   rE   rF   rM   rN   r   r   r   r   r+   N   s    r+   )r*   r"   r    bs4r   bs4.builderr   r   r   r   r   r   r   r	   r
   r   r2   r   r+   r   r   r   r   <module>   s    0