a
    #.c                     @   sh   d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ G dd deZG dd deZdS )	    N)
CDataCommentDeclarationDoctypeNavigableStringRubyParenthesisStringRubyTextStringScript
StylesheetTemplateString   )SoupTestc                   @   s   e Zd Zdd Zdd ZdS )TestNavigableStringc                 C   s^  t d}td}td}d| ks(J d|jddks<J dgt|jksPJ dgt|jksdJ dgt| kszJ d| ksJ d|jddksJ dgt|jksJ dgt|jksJ dgt| ksJ d| ksJ g t|jksJ g t|jksJ g t| ks(J d	|jdtd
ks@J d|jtt fdksZJ d S )Nzfee zfie zfoe ZfeeTstripZfie Zfoer   typesr   )r   r   r   get_textliststringsZstripped_strings_all_strings)selfscdatacomment r   X/var/www/brookimports/venv/lib/python3.9/site-packages/bs4/tests/test_navigablestring.pytest_text_acquisition_methods   s&    z1TestNavigableString.test_text_acquisition_methodsc                 C   sN   |  dj}d |jksJ tt d|_W d    n1 s@0    Y  d S )Nr   foo)soupstringnamepytestZraisesAttributeError)r   r"   r   r   r   'test_string_has_immutable_name_property3   s    z;TestNavigableString.test_string_has_immutable_name_propertyN)__name__
__module____qualname__r   r&   r   r   r   r   r      s   r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestNavigableStringSubclassesc                 C   sX   |  d}td}|d| t|dks.J |jdddksBJ |jd dksTJ d S )Nr   r    r   z<![CDATA[foo]]>r"   r   )r!   r   insertstrfindcontents)r   r!   r   r   r   r   
test_cdata<   s    
z(TestNavigableStringSubclasses.test_cdatac                    sV   d _  fdd} d}td}|d| d|j|dksDJ d j ksRJ d	S )
zkText inside a CData object is passed into the formatter.

        But the return value is ignored.
        r   c                     s     j d7  _ dS )Nr   zBITTER FAILURE)count)argsr   r   r   	incrementM   s    zNTestNavigableStringSubclasses.test_cdata_is_never_formatted.<locals>.incrementr   z<><><>r   s   <![CDATA[<><><>]]>)	formatterN)r1   r!   r   r,   encode)r   r4   r!   r   r   r3   r   test_cdata_is_never_formattedF   s    
z;TestNavigableStringSubclasses.test_cdata_is_never_formattedc                 C   s2   t d}| d}|d| | dks.J d S )Nr    r   r   s   <!DOCTYPE foo>
)r   r!   r,   r6   )r   doctyper!   r   r   r   test_doctype_ends_in_newlineW   s    
z:TestNavigableStringSubclasses.test_doctype_ends_in_newlinec                 C   s   t d}d| ksJ d S )Nr    z<?foo?>)r   Zoutput_ready)r   dr   r   r   test_declaration_   s    z.TestNavigableStringSubclasses.test_declarationc                 C   s   |  d}tttgdd |jddD ks.J |  d}tdd |jjd d	D sXJ |jj}t	|tsnJ t	|t
r|J d
}|  |}||jdksJ d S )Nz7<div>text</div><script>text</script><style>text</style>c                 S   s   g | ]
}|j qS r   )	__class__.0xr   r   r   
<listcomp>i   s   zPTestNavigableStringSubclasses.test_default_string_containers.<locals>.<listcomp>Tr+   z><template>Some text<p>In a tag</p></template>Some text outsidec                 s   s   | ]}t |tV  qd S )N)
isinstancer   r=   r   r   r   	<genexpr>s   s   zOTestNavigableStringSubclasses.test_default_string_containers.<locals>.<genexpr>r   sB   <template>Some text<p>In a tag</p><!--with a comment--></template>utf8)r!   r   r	   r
   Zfind_allalltemplater   Znext_siblingrA   r   r6   )r   r!   Zoutsidemarkupr   r   r   test_default_string_containersc   s$    

z<TestNavigableStringSubclasses.test_default_string_containersc                 C   sf   d}|  |}t|jjts J t|jjts2J d|jddksFJ d|jdtttfdksbJ d S )NuU   <ruby>漢 <rp>(</rp><rt>kan</rt><rp>)</rp> 字 <rp>(</rp><rt>ji</rt><rp>)</rp></ruby>u   漢字Tr   u   漢(kan)字(ji)r   )	r!   rA   rpr"   r   rtr   r   r   )r   rF   r!   r   r   r   test_ruby_strings   s    
z/TestNavigableStringSubclasses.test_ruby_stringsN)	r'   r(   r)   r0   r7   r9   r;   rG   rJ   r   r   r   r   r*   :   s   
"r*   )r$   Zbs4.elementr   r   r   r   r   r   r   r	   r
   r   r   r   r   r*   r   r   r   r   <module>   s   0(