
    Mh                     V    d dl Z d dlmZ d dlmZmZmZ ddlmZ  G d de          Z	dS )    N)Tag)	FormatterHTMLFormatterXMLFormatter   )SoupTestc                      e Zd Zd Zd Zd Zej                            dddddd	d
dd e	            dfdg
          d             Z
d Zej                            d ed          df ed          df ed          df ed          dfg          d             Zej                            dg d          d             Zd ZdS )TestFormatterc                     t                      }t          d          }d|d<   d|d<   ddg|                    |          k    sJ d |_        g |                    |          k    sJ d	|j        k    sJ d S )
Ntag)name1b2a)r   r   )r   r    )r   r   
attributesattrsindent)self	formatterr   s      X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/bs4/tests/test_formatter.pytest_default_attributesz%TestFormatter.test_default_attributes   s    KK	uoooCC
 J'9+?+?+D+DDDDD 	Y))#......i&&&&&&&    c                      G d dt                     }|                     d          } |            }|                    |          }|j        |j        k    sJ d|k    sJ d S )Nc                       e Zd Zd ZdS )=TestFormatter.test_sort_attributes.<locals>.UnsortedFormatterc              3      K   || _         t          |j                                                  D ]\  }}|dk    r||fV  d S )Nignore)called_withsortedr   items)r   r   kvs       r   r   zHTestFormatter.test_sort_attributes.<locals>.UnsortedFormatter.attributes$   sZ      #& "39??#4#455  DAqH}} Q$JJJJ r   N)__name__
__module____qualname__r    r   r   UnsortedFormatterr   #   s#            r   r)   z*<p cval="1" aval="2" ignore="ignored"></p>r   z<p aval="2" cval="1"></p>)r   soupdecoder    p)r   r)   r+   r   decodeds        r   test_sort_attributesz"TestFormatter.test_sort_attributes    s    	 	 	 	 		 	 	 	 yyEFF%%''	++	+22 $....*g555555r   c                    dD ]}t           j        |         }d|j        u sJ  t          j        d          }d|j        u sJ t           j        d         }d|j        u sJ t	          d          }d|j        u sJ dD ]^}|                     |          }dD ]D}d|j                            d	
          k    sJ d|j                            d
          k    sJ E_d S )N)htmlminimalNFhtml5T)empty_attributes_are_booleans)z<option selected></option>z<option selected=""></option>)r1   r2   xmlNs   <option selected=""></option>r1   r*   s   <option selected></option>)r   REGISTRYr4   r   r   r+   optionencode)r   r   r   markupr+   s        r   "test_empty_attributes_are_booleansz0TestFormatter.test_empty_attributes_are_booleans4   sQ    . 	D 	DD%.t4IICCCCCC )$/		?????!*73	y>>>>> DAAA	y>>>>> V 	 	F99V$$D=  	74;;M;M$ <N < <     58J8J% 9K 9 9     		 	r   zindent,expect)N<a>
<b>
text
</b>
</a>
)r;   )r   r;   ) r;   )r   <a>
 <b>
  text
 </b>
</a>
)   z<a>
  <b>
    text
  </b>
</a>
)	z<a>
	<b>
		text
	</b>
</a>
)abcz#<a>
abc<b>
abcabctext
abc</b>
</a>
r>   )s   bytesr>   c                     |                      d          }t          |          }|                    |          |k    sJ |                    |          |k    sJ d S )Nz<a><b>text</b></a>r   r*   )r+   r   prettifyr8   )r   r   expectr+   r   s        r   test_indentzTestFormatter.test_indentQ   sl    & yy-..V,,,	}}y}11V;;;; {{Y{//6999999r   c                 <    t                      }|j        dk    sJ d S )Nr   )r   r   )r   r   s     r   test_default_indent_valuez'TestFormatter.test_default_indent_valuel   s%    KK	3&&&&&&r   zformatter,expectr   rC   z<p>
 a
</p>
r?   z<p>
  a
</p>
r@   z<p>
	a
</p>
c                 r    |                      d          }||j                            |          k    sJ d S )Nz<p>a</p>r*   )r+   r-   rD   )r   r   rE   r+   s       r   test_indent_subclassesz$TestFormatter.test_indent_subclassesp   s<     yy$$9========r   zs,expect_html,expect_html5)	)	foo & barzfoo &amp; barrK   )foo&zfoo&amp;rL   )
foo&&& barzfoo&amp;&amp;&amp; barrM   )x=1&y=2zx=1&amp;y=2rN   )&123z&amp;123rO   )&abcz&amp;abcrP   )
foo &0 barzfoo &amp;0 barrQ   )foo &lolwat barzfoo &amp;lolwat barrR   )z&nosuchentity;&amp;nosuchentity;rS   c                    t           j        d                             |          |k    sJ t           j        d                             |          |k    sJ t           j        d                             |          |k    sJ d S )Nr1   r3   z
html5-4.12)r   r6   
substitute)r   sexpect_htmlexpect_html5s       r   test_entity_substitutionz&TestFormatter.test_entity_substitution{   s    $ %f-88;;{JJJJ%g.99!<<LLLL%l3>>qAA[PPPPPPr   c                    d}|                      |          }d|j        j        k    sJ |j        j        dz   |j        _        d|j        j        k    sJ d}||j                            d          k    sJ ||j                            d          k    sJ d	}|                      |          }d
|j                            d          k    sJ d	|j                            d          k    sJ d S )Nuf   <p>Some division signs: ÷ &divide; &#247; &#xf7;. These are made with: ÷ &amp;divide; &amp;#247;</p>uI   Some division signs: ÷ ÷ ÷ ÷. These are made with: ÷ &divide; &#247;z &#xf7;uP   Some division signs: ÷ ÷ ÷ ÷. These are made with: ÷ &divide; &#247; &#xf7;z<p>Some division signs: &divide; &divide; &divide; &divide;. These are made with: &divide; &amp;divide; &amp;#247; &amp;#xf7;</p>r1   r*   r3   z<p>a & b</p>z<p>a &amp; b</p>)r+   r-   stringr,   )r   r9   r+   rE   s       r   test_entity_round_tripz$TestFormatter.test_entity_round_trip   s    zyy  Wv}   
 	1 _v}    U888888999999yy  !TV]]V]%D%DDDDD!A!AAAAAAAr   N)r%   r&   r'   r   r/   r:   pytestmarkparametrizeobjectrF   rH   r   r   rJ   rY   r\   r(   r   r   r
   r
      s       ' ' '&6 6 6(  : [20/037:?VXX9::	
  	: 	:!  	:' ' ' [/]!$$$&78]!$$$&89\###%67\&&&(:;		
( (> >( (> [$	
 	
 	
 "Q Q# "Q
B B B B Br   r
   )
r]   bs4.elementr   bs4.formatterr   r   r   r=   r   r
   r(   r   r   <module>rc      s                   
      ^B ^B ^B ^B ^BH ^B ^B ^B ^B ^Br   