o
    MK&h                     @   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d ZdS )TestNavigableStringc                 C   sr  t d}td}td}d| ksJ d|jksJ d|jddks%J dgt|jks/J dgt|jks9J dgt| ksDJ d| ksLJ d|jksSJ d|jddks]J dgt|jksgJ dgt|jksqJ dgt| ks|J d| ksJ g t|jksJ g t|jksJ g t| ksJ d	|jdtd
ksJ d|jtt fdksJ d S )Nzfee zfie zfoe feeTstripfie foer   typesr   )	r   r   r   get_textstringliststringsstripped_strings_all_strings)selfscdatacomment r"   Q/var/www/html/venv/lib/python3.10/site-packages/bs4/tests/test_navigablestring.pytest_text_acquisition_methods   s*   z1TestNavigableString.test_text_acquisition_methodsc                 C   sP   |  dj}d |ju sJ tt d|_W d    d S 1 s!w   Y  d S )Nr   foo)soupr   namepytestraisesAttributeError)r   r   r"   r"   r#   'test_string_has_immutable_name_property5   s
   "z;TestNavigableString.test_string_has_immutable_name_propertyc                 C   sx   |  dj}tt}|d  W d    n1 sw   Y  t|jdks(J |d dks0J |dd dks:J d S )Nz
the stringattrzZstring indices must be integers, not 'str'. Are you treating a NavigableString like a Tag?   e   ze s)r&   r   r(   r)   	TypeErrorstrvalue)r   r   r.   r"   r"   r#   ,test_string_detects_attribute_access_attempt<   s   
z@TestNavigableString.test_string_detects_attribute_access_attemptN)__name__
__module____qualname__r$   r+   r3   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s!J |jd dks*J d S )Nr   r%   r   z<![CDATA[foo]]>r   r   )r&   r   insertr1   findcontents)r   r&   r    r"   r"   r#   
test_cdataI   s   
z(TestNavigableStringSubclasses.test_cdatac                    sV   d _  fdd} d}td}|d| d|j|dks"J d j ks)J 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#   	increment[   s   zNTestNavigableStringSubclasses.test_cdata_is_never_formatted.<locals>.incrementr   z<><><>r   s   <![CDATA[<><><>]]>)	formatterN)r=   r&   r   r9   encode)r   r@   r&   r    r"   r?   r#   test_cdata_is_never_formattedS   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&   r9   rB   )r   doctyper&   r"   r"   r#   test_doctype_ends_in_newlinee   s   
z:TestNavigableStringSubclasses.test_doctype_ends_in_newlinec                 C   s   t d}d| ksJ d S )Nr%   z<?foo?>)r   output_ready)r   dr"   r"   r#   test_declarationm   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 s,J |jj}t	|ts7J t	|t
r>J d
}|  |}||jdksOJ 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>u   s    zPTestNavigableStringSubclasses.test_default_string_containers.<locals>.<listcomp>Tr8   z><template>Some text<p>In a tag</p></template>Some text outsidec                 s   s    | ]}t |tV  qd S )N)
isinstancer   rJ   r"   r"   r#   	<genexpr>   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
   find_allalltemplater   next_siblingrN   r   rB   )r   r&   outsidemarkupr"   r"   r#   test_default_string_containersq   s    


z<TestNavigableStringSubclasses.test_default_string_containersc                 C   sf   d}|  |}t|jjtsJ t|jjtsJ d|jddks#J d|jdtttfdks1J 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&   rN   rpr   r   rtr   r   r   )r   rV   r&   r"   r"   r#   test_ruby_strings   s   

z/TestNavigableStringSubclasses.test_ruby_stringsN)	r4   r5   r6   r<   rC   rE   rH   rW   rZ   r"   r"   r"   r#   r7   H   s    
 r7   )r(   bs4.elementr   r   r   r   r   r   r   r	   r
   r   r   r   r   r7   r"   r"   r"   r#   <module>   s
    05