zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
U
¡ý°d8#ã@sHddlZddlmZmZddlmZGdd„deƒZGdd„deƒZdS)    éN)ÚCommentÚNavigableStringé)ÚSoupTestc@sˆeZdZdZdd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd S)!ÚTestTagz]Test various methods of Tag which aren't so complicated they
    need their own classes.
    cCst| d¡ d¡}d|_d| d¡ks(t‚dg|_d| d¡ksBt‚d| d¡ksTt‚ddg|_d| d¡kspt‚dS)NÚZa_tagTrZsome_other_tagrF)ÚsoupZnew_tagZ_preserve_whitespace_tagsZ_should_pretty_printÚAssertionErrorZpreserve_whitespace_tags)ÚselfÚtag©r úId:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\bs4/tests/test_tag.pyÚtest__should_pretty_print s
z!TestTag.test__should_pretty_printcCsV| d¡}t|jƒdkst‚t|ƒdks,t‚t|jƒdks>t‚t|jjƒdksRt‚dS)z.The length of a Tag is its number of children.z<top>1<b>2</b>3</top>réN)rÚlenÚcontentsr    Útop©r
rr r r Útest_len s
 
zTestTag.test_lencCsL| d¡}|j| d¡kst‚|jj| d¡ d¡ks:t‚|jdksHt‚dS)z2Accessing a Python member .foo invokes find('foo')ú<b><i></i></b>ÚbÚiN)rrÚfindr    rÚarr r r Útest_member_access_invokes_find.s
z'TestTag.test_member_access_invokes_findc    CsP| d¡}tjdd }|j}W5QRX|j|ks6t‚dt|djƒksLt‚dS)NrT)Úrecordzp.bTag is deprecated, use .find("b") instead. If you really were looking for a tag called bTag, use .find("bTag")r)rÚwarningsÚcatch_warningsZbTagrr    ÚstrÚmessage)r
rÚwr r r r Útest_deprecated_member_access5s
 
z%TestTag.test_deprecated_member_accesscCs.| d¡}|j d¡st‚|j d¡r*t‚dS)zÙhas_attr() checks for the presence of an attribute.
 
        Please note note: has_attr() is different from
        __in__. has_attr() checks the tag's attributes and __in__
        checks the tag's chidlren.
        z<foo attr='bar'>ÚattrZattr2N)rÚfooZhas_attrr    rr r r Ú test_has_attr<s
zTestTag.test_has_attrcCsd}| |d¡dS)Nz%<b a="1" z="5" m="3" f="2" y="4"></b>z%<b a="1" f="2" m="3" y="4" z="5"></b>)ZassertSoupEquals)r
Zmarkupr r r Ú.test_attributes_come_out_in_alphabetical_orderGsz6TestTag.test_attributes_come_out_in_alphabetical_ordercCs| d¡}|jjdkst‚dS)Nz
<b>foo</b>r#©rrÚstringr    rr r r Ú test_stringKs
zTestTag.test_stringcCs| d¡}|jjdkst‚dS)Nú<b></b>r&rr r r Útest_empty_tag_has_no_stringQs
z$TestTag.test_empty_tag_has_no_stringcCs`| d¡}|jjdkst‚| d¡}|jjdks4t‚| d¡}|j dd¡|jjdks\t‚dS)Nz<a>foo<b></b><b></b></b>z<a>foo<b></b>bar</b>z
<a>foo</b>rÚbar)rrr'r    rÚinsertrr r r Ú-test_tag_with_multiple_children_has_no_stringVs
 
 
z5TestTag.test_tag_with_multiple_children_has_no_stringcCs,| d¡}|jjdkst‚|jdks(t‚dS)Nz<a><b>foo</b></a>r#)rrr'r    rr r r Ú)test_tag_with_recursive_string_has_stringds
z1TestTag.test_tag_with_recursive_string_has_stringcCs8| d¡}|jjdkst‚| d¡}|jjdks4t‚dS)z7Only a Tag containing a single text node has a .string.z<b>f<i>e</i>o</b>Nr)r&rr r r Útest_lack_of_stringks
 
zTestTag.test_lack_of_stringcCs`| d¡}|jjdkst‚|jjdddks0t‚|j d¡dksDt‚|jjddddks\t‚d    S)
zBTag.text and Tag.get_text(sep=u"") -> all child text, concatenatedz<a>a<b>r</b>   <r> t </r></a>zar  t T)ÚstripZartú,z    a,r, , t za,r,tN)rrÚtextr    Úget_textrr r r Ú test_all_textss
 
zTestTag.test_all_textcCsd| d¡}| ¡dkst‚|jttfddks2t‚|jdddksFt‚| d¡}| ¡dks`t‚dS)Núfoo<!--IGNORE-->barZfoobar)ÚtypesZ fooIGNOREbarú3foo<style>CSS</style><script>Javascript</script>bar)rr3r    rrrr r r Ú/test_get_text_ignores_special_string_containers{s 
 
z7TestTag.test_get_text_ignores_special_string_containerscCsD| d¡}ddgt|jƒks t‚| d¡}ddgt|jƒks@t‚dS)Nr5r#r+r7)rÚlistÚstringsr    rr r r Ú2test_all_strings_ignores_special_string_containers…s
 
z:TestTag.test_all_strings_ignores_special_string_containerscCs&| d¡}| d¡}| d¡}|j ¡dks0t‚t|jjƒdgksFt‚|jj ¡dksZt‚t|jjjƒdgksrt‚|j ¡dks„t‚t|jjƒdgksšt‚|jj ¡dks®t‚t|jjjƒddd    gksÊt‚|j ¡dksÜt‚t|jjƒdgksòt‚|jj ¡d
kst‚t|jjjƒd
gks"t‚dS) Nz#<div>a<style>Some CSS</style></div>zT<div>a<template><p>Templated <b>text</b>.</p><!--With a comment.--></template></div>z6<div>a<script><!--a comment-->Some text</script></div>rzSome CSSzTemplated text.z
Templated r2Ú.z<!--a comment-->Some text)    rÚdivr3r    r9r:ÚstyleÚtemplateÚscript)r
r>r?r@r r r Ú8test_string_methods_inside_special_string_container_tagsŒs
 
 
z@TestTag.test_string_methods_inside_special_string_container_tagsN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrrr!r$r%r(r*r-r.r/r4r8r;rAr r r r rs  
rc@sPeZdZdZdd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Z    dd„Z
dd„Z dS)ÚTestMultiValuedAttributeszTest the behavior of multi-valued attributes like 'class'.
 
    The values of such attributes are always presented as lists.
    cCs"| d¡}dg|jdkst‚dS)Nz<a class='foo'>r#Úclass©rrr    rr r r Útest_single_value_becomes_list²s
z8TestMultiValuedAttributes.test_single_value_becomes_listcCs$| d¡}ddg|jdks t‚dS)Nz<a class='foo bar'>r#r+rGrHrr r r Ú!test_multiple_values_becomes_list¶s
z;TestMultiValuedAttributes.test_multiple_values_becomes_listcCs&| d¡}dddg|jdks"t‚dS)Nz<a class='foo    bar
baz'>r#r+ZbazrGrHrr r r Ú2test_multiple_values_separated_by_weird_whitespaceºs
zLTestMultiValuedAttributes.test_multiple_values_separated_by_weird_whitespacecCs | d¡}d|j ¡kst‚dS)Nz<a class='foo    bar'>s<a class="foo bar"></a>)rrÚencoder    rr r r Ú,test_attributes_joined_into_string_on_output¾s
zFTestMultiValuedAttributes.test_attributes_joined_into_string_on_outputcCs$| d¡}dg|j d¡ks t‚dS)Nz<a id='abc def'>zabc defÚid)rrZget_attribute_listr    rr r r Útest_get_attribute_listÂs
z1TestMultiValuedAttributes.test_get_attribute_listcCs$| d¡}ddg|jdks t‚dS)Nz(<form accept-charset="ISO-8859-1 UTF-8">z
ISO-8859-1zUTF-8úaccept-charset)rÚformr    rr r r Útest_accept_charsetÆs
z-TestMultiValuedAttributes.test_accept_charsetcCs$d}| |¡}d|jdks t‚dS)Nz)<a accept-charset="ISO-8859-1 UTF-8"></a>zISO-8859-1 UTF-8rPrH)r
Údatarr r r Ú-test_cdata_attribute_applying_only_to_one_tagÊs
zGTestMultiValuedAttributes.test_cdata_attribute_applying_only_to_one_tagcCs<|jdddid}|jddks$t‚|jddgks8t‚dS)Nz<a class="foo" id="bar">Ú*rN)Zmulti_valued_attributesrGr#r+rHrr r r Útest_customizationÒs ÿz,TestMultiValuedAttributes.test_customizationN) rBrCrDrErIrJrKrMrOrRrTrVr r r r rF¬srF)rZ bs4.elementrrrrrrFr r r r Ú<module>s
 %