a
    #Æ.cÌ  ã                   @   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	 zddlm
Z
 dZW n ey^   dZY n0 zddlmZmZ dZW n eyŽ   dZY n0 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)ÚHTML5TreeBuilderTF)Ú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rXt  dd¡tksXJ ‚d S )NÚstrictÚhtmlÚfastZ
permissiveÚxmlÚhtml5lib)ÚregistryÚlookupr   ÚLXML_PRESENTr   r   ÚHTML5LIB_PRESENTr   ©Úself© r   úY/var/www/brookimports/venv/lib/python3.9/site-packages/bs4/tests/test_builder_registry.pyÚtest_combination    s    z$TestBuiltInRegistry.test_combinationc                 C   sj   t r*t d¡tksJ ‚t d¡tksfJ ‚n<t d¡d ks<J ‚trTt d¡tksfJ ‚nt d¡tksfJ ‚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rBt d¡tksBJ ‚t d¡tksTJ ‚d S )NZlxmlr   r   r   zhtml.parser)r   r   r   r   r   r   r   r   r   r   r   r   Útest_named_library3   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>0    Y  t t¡ tddd W d   ƒ n1 st0    Y  d S )NT)ÚrecordÚ r   )Úfeaturesr   zno-such-feature)ÚwarningsÚcatch_warningsr   ÚpytestZ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_methodP   s    zTestRegistry.setup_methodc                 G   s,   t dd |¡ tfd|iƒ}| j |¡ |S )NZBuilder_Ú_r   )ÚtypeÚjoinÚobjectr   Úregister)r   Zfeature_listÚclsr   r   r   Úbuilder_for_featuresS   s
    
ÿz!TestRegistry.builder_for_featuresc                 C   s2   |   ¡ }| j d¡d u sJ ‚| j ¡ |ks.J ‚d S )NÚfoo©r0   r   r   ©r   Zbuilderr   r   r   Útest_register_with_no_featuresZ   s    z+TestRegistry.test_register_with_no_featuresc                 C   s8   |   dd¡}| j d¡|u s J ‚| j d¡|u s4J ‚d S ©Nr1   Úbarr2   r3   r   r   r   Ú0test_register_with_features_makes_lookup_succeede   s    z=TestRegistry.test_register_with_features_makes_lookup_succeedc                 C   s$   |   dd¡}| j d¡d u s J ‚d S ©Nr1   r6   Úbazr2   r3   r   r   r   Ú4test_lookup_fails_when_no_builder_implements_featurej   s    zATestRegistry.test_lookup_fails_when_no_builder_implements_featurec                 C   s*   |   d¡}|   d¡}| j ¡ |ks&J ‚d S r5   r2   ©r   Zbuilder1Zbuilder2r   r   r   ÚCtest_lookup_gets_most_recent_registration_when_no_feature_specifiedn   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_registereds   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sZJ ‚| j ddd¡|ksrJ ‚d S )Nr1   r6   r9   Zquuxr2   )r   Zhas_oneZhas_the_otherZhas_both_earlyZhas_both_lateZ	lacks_oner   r   r   Ú<test_lookup_gets_most_recent_builder_supporting_all_featuresv   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 r8   r2   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)   r0   r4   r7   r:   r<   r=   r>   r?   r   r   r   r   r'   M   s   r'   )r&   r   r   Zbs4r   Zbs4.builderr   r   r   r   r   r   ÚImportErrorr   r   r   r-   r	   r'   r   r   r   r   Ú<module>   s    

0