3
d                 @   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|j ks(td|jddks<tdgt|jksPtdgt|jksdtdgt|j ksztd|j kstd|jddkstdgt|jkstdgt|jkstdgt|j kstd|j kstg t|jkstg t|jkstg t|j ks(td	|jdtd
ks@td|jtt fdksZtd S )Nzfee zfie zfoe ZfeeT)stripZfie Zfoe)r   types)r   )	r   r   r   get_textAssertionErrorliststringsZstripped_strings_all_strings)selfscdatacomment r   H/tmp/pip-build-8z3xcdsh/beautifulsoup4/bs4/tests/test_navigablestring.pytest_text_acquisition_methods   s&    z1TestNavigableString.test_text_acquisition_methodsc          	   C   s:   | j dj}d |jksttjt d|_W d Q R X d S )Nr   foo)soupstringnamer   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   | j d}td}|jd| t|dks.t|jdddksBt|jd dksTtd S )Nr   r   r   z<![CDATA[foo]]>)r    r   )r   r   insertstrr   findcontents)r   r   r   r   r   r   
test_cdata<   s    
z(TestNavigableStringSubclasses.test_cdatac                sV   d _  fdd} jd}td}|jd| d|j|dksDtd j ksRt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)r.   r   r   r)   encoder   )r   r0   r   r   r   )r   r   test_cdata_is_never_formattedF   s    
z;TestNavigableStringSubclasses.test_cdata_is_never_formattedc             C   s2   t d}| jd}|jd| |j dks.td S )Nr   r   r   s   <!DOCTYPE foo>
)r   r   r)   r2   r   )r   doctyper   r   r   r   test_doctype_ends_in_newlineW   s    
z:TestNavigableStringSubclasses.test_doctype_ends_in_newlinec             C   s   t d}d|j kstd S )Nr   z<?foo?>)r   Zoutput_readyr   )r   dr   r   r   test_declaration_   s    z.TestNavigableStringSubclasses.test_declarationc             C   s   | j d}tttgdd |jddD ks.t| j d}tdd |jjd d	D sXt|jj	}t
|tsntt
|t s~td
}| j |}||jjdkst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>j   s    zPTestNavigableStringSubclasses.test_default_string_containers.<locals>.<listcomp>T)r    z><template>Some text<p>In a tag</p></template>Some text outsidec             s   s   | ]}t |tV  qd S )N)
isinstancer   )r9   r:   r   r   r   	<genexpr>t   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_allr   alltemplater   Znext_siblingr<   r   r2   )r   r   Zoutsidemarkupr   r   r   test_default_string_containersc   s    
z<TestNavigableStringSubclasses.test_default_string_containersc             C   sf   d}| j |}t|jjts tt|jjts2td|jddksFtd|jdt	ttfdksbtd S )NuU   <ruby>漢 <rp>(</rp><rt>kan</rt><rp>)</rp> 字 <rp>(</rp><rt>ji</rt><rp>)</rp></ruby>u   漢字T)r   u   漢(kan)字(ji))r   r   )
r   r<   rpr    r   r   rtr   r   r   )r   rA   r   r   r   r   test_ruby_strings   s    
z/TestNavigableStringSubclasses.test_ruby_stringsN)	r%   r&   r'   r-   r3   r5   r7   rB   rE   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(