Your IP : 216.73.216.196


Current Path : /opt/alt/python312/lib64/python3.12/test/__pycache__/
Upload File :
Current File : //opt/alt/python312/lib64/python3.12/test/__pycache__/test_minidom.cpython-312.pyc

�

�#�jB���ddlZddlZddlZddlZddlmZddlZddlZddlm	Z	m
Z
mZmZm
Z
mZddlmZddlmZej$dd��Zd	Zdd
�Zd�Zd�ZGd
�dej0�Zedk(rej6�yy)�N)�support)�parse�Attr�Node�Document�Element�parseString)�getDOMImplementation)�
ExpatErrorztest.xml�xmltestdata)�subdira<?xml version='1.0' encoding='us-ascii'?>
<!DOCTYPE doc PUBLIC 'http://xml.python.org/public' 'http://xml.python.org/system' [
  <!ELEMENT e EMPTY>
  <!ENTITY ent SYSTEM 'http://xml.python.org/entity'>
]><doc attr='value'> text
<?pi sample?> <!-- comment --> <e/> </doc>c�8�t�jdd|�S)N�doc)r
�createDocument)�doctypes �8/opt/alt/python312/lib64/python3.12/test/test_minidom.py�create_doc_without_doctypers���!�0�0��u�g�F�F�c���t�jddd�}g|j_g|j_t
jjjddd�}|jjj|�t
jjjdddd�}d|_d|_d|_
|jjj|�|S)	Nrzmy-notationz"http://xml.python.org/notations/myz	my-entityz!http://xml.python.org/entities/myz1.0�utf-8�us-ascii)r
�createDocumentType�entities�_seq�	notations�xml�dom�minidom�Notation�append�Entity�version�encoding�actualEncoding)r�notation�entitys   r�create_nonempty_doctyper' s���"�$�7�7��t�T�J�G��G�����G�����w�w���'�'�
�t�(L�N�H������!�!�(�+�
�W�W�_�_�
#�
#�K��$G�$1�3�F��F�N��F�O�&�F������� � ��(��Nrc��t�}t|�}||jjd�_||j
jd�_|S�Nr)r'rr�item�
ownerDocumentr)rrs  r�create_doc_with_doctyper,0sK��%�'�G�
$�W�
-�C�-0�G�����!��*�.1�G�����1��+��Jrc��eZdZd�d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zej d
�d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6�Z9d7�Z:d8�Z;d9�Z<d:�Z=d;�Z>d<�Z?d=�Z@d>�ZAd?�ZBd@�ZCdA�ZDdB�ZEdC�ZFdD�ZGdE�ZHdF�ZIdG�ZJdH�ZKdI�ZLdJ�ZMdK�ZNdL�ZOdM�ZPdN�ZQdO�ZRdP�ZSdQ�ZTdR�ZUdS�ZVdT�ZWdU�ZXdV�ZYdW�ZZdX�Z[dY�Z\dZ�Z]d[�Z^d\�Z_d]�Z`d^�Zad_�Zbd`�Zcda�Zddb�Zedc�Zfdd�Zgde�Zhdf�Zidg�Zjdh�Zkdi�Zldj�Zmdk�Zndl�Zodm�Zpdn�Zqdo�Zrdp�Zsdq�Ztdr�Zuds�Zvdt�Zwdu�Zxdv�Zydw�ZzGdx�dy�Z{dz�Z|d{�Z}d|�Z~d}�Zd~�Z�d�Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�y�)��MinidomTestc�(�|j||�y�N)�
assertTrue)�self�test�testnames   r�confirmzMinidomTest.confirm8s������h�'rc�R�|j}|j||k(d|�d|���y)Nzlooking for z, found )�	wholeTextr5)r2�node�s�ts    r�checkWholeTextzMinidomTest.checkWholeText;s"���N�N�����Q�!�V�1�a�@�Arc��t�}|j|j�|jtj�yr0)r�assertFalse�async_�r2rs  r�testDocumentAsyncAttrz!MinidomTest.testDocumentAsyncAttr?s-���j��������$�������)rc���ttd�5}t|�}|j�|j	t|t��ddd�y#1swYyxYw)N�rb��open�tstfiler�unlinkr5�
isinstancer�r2�filers   r�testParseFromBinaryFilez#MinidomTest.testParseFromBinaryFileDs?��
�'�4�
 �D���+�C��J�J�L��L�L��C��2�3�!�
 �
 �s�;A�Ac���ttdd��5}t|�}|j�|j	t|t��ddd�y#1swYyxYw)N�rz
iso-8859-1)r#rCrHs   r�testParseFromTextFilez!MinidomTest.testParseFromTextFileJsA��
�'�3��
6�$���+�C��J�J�L��L�L��C��2�3�7�
6�
6�s�;A�A c��tdddd�}|j|jd�|j|jd�|j|jd�|j|j
d�y)N�qName�namespaceURI�	localName�prefix�r�assertEqual�namerPrRrQ�r2�attrs  r�testAttrModeSetsParamsAsAttrsz)MinidomTest.testAttrModeSetsParamsAsAttrsPsd���G�^�[�(�C��������G�,�����*�*�N�;�������h�/��������5rc��tdddd�}|j|jd�|j|jd�|j|jd�|j|j
|j�y)NrOrPrRrSrVs  r� testAttrModeSetsNonOptionalAttrsz,MinidomTest.testAttrModeSetsNonOptionalAttrsWsh���G�^�T�8�<��������G�,�����*�*�N�;�������h�/����������3rc��tt�}|j|jd�|jjd�k(�|j�y)N�LI)rrEr5�getElementsByTagName�documentElementrF�r2rs  r�testGetElementsByTagNamez$MinidomTest.testGetElementsByTagName^sG���G�n�����S�-�-�d�3��#�#�8�8��>�?�	@��
�
�rc�j�td�}|j}|jd}|jd�}|j	||�|jt
|j�dk(xr�|jjdk(xr�|jd|uxr�|jjd�|uxre|jd|uxrR|jjd�|uxr3|j|uxr#|j|uxr|j�dk(d�|jd�}|j	|d�|jt
|j�dk(xr�|jjdk(xr�|jd|uxr�|jjd�|uxre|jd|uxrR|jjd�|uxr3|j|uxr#|j|uxr|j�d	k(d�|jd
�}|j	||�|jt
|j�dk(xr�|jjdk(xr�|jd|uxr�|jjd�|uxre|jd|uxrR|jjd�|uxr3|j|uxr#|j|uxr|j�dk(d�|j�y)
N�<doc><foo/></doc>r�element��z<doc><element/><foo/></doc>z0testInsertBefore -- node properly placed in tree�z%<doc><element/><foo/><element/></doc>�bar�z+<doc><element/><foo/><bar/><element/></doc>)r	r^�
childNodes�
createElement�insertBeforer5�len�lengthr*�
firstChild�	lastChild�toxml�previousSibling�nextSiblingrF)r2r�root�elem�nelem�nelem2s      r�testInsertBeforezMinidomTest.testInsertBeforedsD���-�.���"�"�����q�!���!�!�)�,�����%��&����S����)�Q�.�B��O�O�*�*�a�/�B��O�O�A�&�%�/�B��O�O�(�(��+�u�4�B��O�O�A�&�$�.�	B�
�O�O�(�(��+�t�3�B��O�O�u�,�
B��N�N�d�*�B��J�J�L�$A�A�D�		F��!�!�)�,�����%��&����S����)�Q�.�L��O�O�*�*�a�/�L��O�O�A�&�$�.�L��O�O�(�(��+�t�3�L��O�O�A�&�%�/�	L�
�O�O�(�(��+�u�4�L��N�N�e�+�
L��)�)�T�1�L��J�J�L�$K�K�D�		F��"�"�5�)�����&�%�(����S����)�Q�.�	>��O�O�*�*�a�/�	>��O�O�A�&�&�0�	>��O�O�(�(��+�v�5�	>��O�O�A�&�%�/�		>�
�O�O�(�(��+�u�4�	>��&�&�%�/�
	>��)�)�V�3�	>��J�J�L�=�>�D�
	F�	�
�
�rc�l�td�}|jd�}|jd�}|jd�}|jd�}|jj|�|j	�}|j|�|j|�|j|�||||||fS)N�<doc/>�original�foorg�bat)r	�createTextNoder^�appendChild�createDocumentFragment�r2r�orig�c1�c2�c3�frags       r�_create_fragment_test_nodesz'MinidomTest._create_fragment_test_nodes�s����(�#���!�!�*�-��
�
�
��
&��
�
�
��
&��
�
�
��
&�����'�'��-��)�)�+������������������D�"�b�"�d�*�*rc�(�|j�\}}}}}}|jj|d�|jt	|jj
�||||fk(d�|j
�|j
�|j�\}}}}}}|jj||�|jt	|jj
�||||fk(d�|j
�|j
�y)NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))r�r^rkr5�tuplerirFr�s       r�testInsertBeforeFragmentz$MinidomTest.testInsertBeforeFragment�s���&*�&F�&F�&H�#��T�2�r�2�t����(�(��t�4����U�3�.�.�9�9�:��B��B�'�(�5�	7�	
���
��
�
��&*�&F�&F�&H�#��T�2�r�2�t����(�(��t�4����U�3�.�.�9�9�:��"�b�$�'�(�5�	7�	
���
��
�
�rc�j�tt�}|jj|j	d��|j|jjdjdk(�|j|jjdjdk(�|j�y)N�Hello���z#comment)
rrEr^r~�
createCommentr5ri�nodeName�datarFr_s  r�testAppendChildzMinidomTest.testAppendChild�s����G�n�����'�'��(9�(9�'�(B�C����S�(�(�3�3�B�7�@�@�J�N�O����S�(�(�3�3�B�7�<�<��G�H��
�
�r�cpuc�h�t�}|jddd�}|j}tdd�D�cgc]}|j	d|�����}}|}tj�}|D]}|j|�|}�tj�}	|j|	|z
d�ycc}w)N�some_tagrei�zchild-rh)	r
rr^�rangerj�time�	monotonicr~�
assertLess)
r2�impl�newdoc�top_element�i�childrenrc�start�child�ends
          r�$testAppendChildNoQuadraticComplexityz0MinidomTest.testAppendChildNoQuadraticComplexity�s���#�%���$�$�T�:�t�<���,�,��@E�a��@U�V�@U�1�F�(�(�6�!���6�@U��V������ ���E�����&��G���n�n���	
����e��Q�'��Ws�B/c��td�}td�}d|_|j|�|j	|jd�d�y)Nr3�idztest-id)rr�value�setAttributeNoderT�getAttribute)r2rtrWs   r�(testSetAttributeNodeWithoutOwnerDocumentz4MinidomTest.testSetAttributeNodeWithoutOwnerDocument�sD���v����D�z����
����d�#�����*�*�4�0�)�<rc��|j�\}}}}}}|jj|�|jt	|jj
�||||fk(d�|j
�|j
�y)NzappendChild(<fragment>))r�r^r~r5r�rirFr�s       r�testAppendChildFragmentz#MinidomTest.testAppendChildFragment�sx��&*�&F�&F�&H�#��T�2�r�2�t����'�'��-����U�3�.�.�9�9�:��B��B�'�(�.�	0�	
���
��
�
�rc�4�|j�\}}}}}}|jj||�|j�|j	t|jj�|||fk(d�|j�|j�y)NzreplaceChild(<fragment>))r�r^�replaceChildrFr5r�rir�s       r�testReplaceChildFragmentz$MinidomTest.testReplaceChildFragment�s{��&*�&F�&F�&H�#��T�2�r�2�t����(�(��t�4����
����U�3�.�.�9�9�:�r�2�r�l�J�*�	,����
��
�
�rc���t�}|jd�}|jd�}|jtj
j|j|�|j|�|jtj
j|j||�|jtj
j|j||�|j}|jtj
j|j|�|jtj
j|j|�|j|�|j�y)Nrc�text)rrjr}�assertRaisesrr�HierarchyRequestErrr~rkr��
attributes�setNamedItem�setNamedItemNSrF)r2rrtr��nodemaps     r�testLegalChildrenzMinidomTest.testLegalChildren�s���j��� � ��+���!�!�&�)�����#�'�'�5�5�s����M���������#�'�'�5�5�s�7G�7G���	 ����#�'�'�5�5�s�7G�7G���	 ��/�/�����#�'�'�5�5�w�7K�7K��	 ����#�'�'�5�5�w�7M�7M��	 �	
������
�
�rc��t�}|jd�}|j}d|d<|jd�}|j	|j
|ud�|j	|j|ud�|j	|jdk(d�|j	|jdk(d�|j�|j�y)	Nrcrgr{rz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
rrjr�r*r5r+�ownerElementr��	nodeValuerF)r2rrt�attrs�as     r�testNamedNodeMapSetItemz#MinidomTest.testNamedNodeMapSetItem�s����j��� � ��+��������e���J�J�q�M�����Q�_�_��+�?�	A����Q�^�^�t�+�>�	@����Q�W�W��%�7�	9����Q�[�[�E�)�;�	=����
��
�
�rc��tt�}|j|�|j|j	d��|j|j
dj
�|j
�y)Nr{r�)rrEr5r~r�rirFr_s  r�testNonZerozMinidomTest.testNonZero
sU���G�n�����S������)�)�%�0�1��������+�6�6�6�7��
�
�rc��tt�}|j|j�|j	�|j|j�yr0)rrEr1rirFr=r_s  r�
testUnlinkzMinidomTest.testUnlinks6���G�n��������'��
�
��������(rc��tt�5}|j|j�ddd�|j	j�y#1swY�%xYwr0)rrEr1rir=r_s  r�testContextzMinidomTest.testContexts:��
�7�^�s��O�O�C�N�N�+��������(��^�s�A�Ac��t�}|j|jd��|j|j�|j�y�N�abc)rr~rjr5r^rFr_s  r�testElementzMinidomTest.testElements;���j������)�)�%�0�1����S�(�(�)��
�
�rc�j�td�}|j}|jdd�|j|j	�dk(d�|jd�}|j|j|ud�|j|j|jud�|j�y)N�<abc/>�spam�jam2�<abc spam="jam2"/>�testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	r	r^�setAttributer5rp�getAttributeNoder+r�rF)r2r�elr�s    rr�zMinidomTest.testAAA"s����(�#��
�
 �
 ��
�����'����R�X�X�Z�#7�7��C�����'�����Q�_�_��+�3�	5����Q�^�^�s�':�':�:�2�	4��
�
�rc���td�}|j}|jdd�|jdd�|j|j	�dk(d�|j�y)Nr�r��jamr�r��testAAB)r	r^r�r5rprF�r2rr�s   rr�zMinidomTest.testAAB.sV���(�#��
�
 �
 ��
�����&�
�����'����R�X�X�Z�#7�7��C��
�
�rc�T�t�}|j|jd��}|jdd�|j	|jd�dk(�|j	|jdjdk(�|jdd�|j	|jd�dk(�|j	|jdjdk(�|j	t|j�dk(�|jdd�|j	|jd�dk(�|j	|jdjdk(�|j	t|j�dk(�|j�y)Nr��def�ghi�jkl�mnord�newval)
rr~rjr�r5r�r�r�rlrF�r2rr�s   r�testAddAttrzMinidomTest.testAddAttr6sM���j������ 1� 1�%� 8�9��
���5�%�(����U�'�'��.�%�7�8����U�%�%�e�,�2�2�e�;�<�
���5�%�(����U�'�'��.�%�7�8����U�%�%�e�,�2�2�e�;�<����S��)�)�*�a�/�0�
���5�(�+����U�'�'��.�(�:�;����U�%�%�e�,�2�2�h�>�?����S��)�)�*�a�/�0��
�
�rc��t�}|j|jd��}|jt	|j
�dk(�|j
dd�|jt	|j
�dk(�|j
d=|jt	|j
�dk(�|j�y)Nr�rr�r�re)rr~rjr5rlr�r�rFr�s   r�testDeleteAttrzMinidomTest.testDeleteAttrKs����j������ 1� 1�%� 8�9�����S��)�)�*�a�/�0�
���5�%�(����S��)�)�*�a�/�0����U�#����S��)�)�*�a�/�0��
�
�rc���t�}|j|jd��}|jdd�|j	t|j�dk(�|jtjj|jd�|jd�|j	t|j�dk(�|j�y)Nr�r�r�rer{r)
rr~rjr�r5rlr�r�rr�NotFoundErr�removeAttributerFr�s   r�testRemoveAttrzMinidomTest.testRemoveAttrVs����j������ 1� 1�%� 8�9��
���5�%�(����S��)�)�*�a�/�0����#�'�'�-�-�u�/D�/D�e�L�
���e�$����S��)�)�*�a�/�0��
�
�rc���t�}|j|jdd��}|jddd�|jddd�|j	t
jj|jdd�|jt|j�dk(�|jdd�|jt|j�d	k(�|j�y)
N�http://www.python.org�
python:abc�http://www.w3.org�xmlns:pythonzpython:abcattrr{rd�abcattrre)
rr~�createElementNS�setAttributeNSr�rrr��removeAttributeNSr5rlr�rFr�s   r�testRemoveAttrNSzMinidomTest.testRemoveAttrNSas����j������#�#�$;�\�J�L��
���0�.�0G�	I�
���4�6F��N����#�'�'�-�-�u�/F�/F��*�	,����S��)�)�*�a�/�0�
��� 7��C����S��)�)�*�a�/�0��
�
�rc��t�}|j|jd��}|jdd�|j	t|j�dk(�|jd�}|jtjj|jd�|j||j|��|j	t|j�dk(xr|jd�du�t�}|j|jd��}|jd�}|jtjj|j|�|j�y)Nr{r�r�rer)rr~rjr�r5rlr�r�r�rrr��removeAttributeNode�assertIsrF)r2rr�r8�dom2�child2�node2s       r�testRemoveAttributeNodez#MinidomTest.testRemoveAttributeNodeos2���j������ 1� 1�%� 8�9��
���6�5�)����S��)�)�*�a�/�0��%�%�f�-�����#�'�'�-�-�u�/H�/H��	��
�
�d�E�5�5�d�;�<����S��)�)�*�a�/�;��*�*�6�2�d�:�	<��z���!�!�$�"4�"4�U�";�<���'�'��/�����#�'�'�-�-�v�/I�/I��	��
�
�rc��t�}|j|jd��}|jdd�|j	|jd��y)Nr{r�r�)rr~rjr�r5�hasAttributer�s   r�testHasAttributezMinidomTest.testHasAttribute�sI���j������ 1� 1�%� 8�9��
���6�5�)����U�'�'��/�0rc���td�}|j}|jdd�|jt	|j
�dk(�|jdd�|j
d�|jt	|j
�dk(xrm|j
djdk(xrO|j
djdk(xr1|jd�dk(xr|jd�j�d|j
d<|jt	|j
�dk(xrk|j
djdk(xrM|j
djdk(xr/|jd�dk(xr|j
dj�|jdd�|jt	|j
�dk(xr�|j
djdk(xr�|j
djdk(xrf|jd�dk(xrP|j
djdk(xr2|j
djdk(xr|jd�dk(�d	|j
d<|jt	|j
�dk(xr�|j
djdk(xr�|j
djdk(xrf|jd�dk(xrP|j
djd	k(xr2|j
djd	k(xr|jd�d	k(�|j�y)
Nr�r�r�re�bam�ham�spam2rd�bam2)
r	r^r�r5rlr��setIdAttributer�r�r�r��isIdrFr�s   r�testChangeAttrzMinidomTest.testChangeAttr�s$���(�#��
�
 �
 ��
�����&����S����'�1�,�-�
�����&�	���&�!����S����'�1�,�5��M�M�&�)�/�/�5�8�5��M�M�&�)�3�3�u�<�5��O�O�F�+�u�4�5��'�'��/�4�4�		6�
!&��
�
�f�����S����'�1�,�/��M�M�&�)�/�/�5�8�/��M�M�&�)�3�3�u�<�/��O�O�F�+�u�4�/��M�M�&�)�.�.�		0�
	�����'����S����'�1�,�6��M�M�&�)�/�/�5�8�6��M�M�&�)�3�3�u�<�6��O�O�F�+�u�4�6��M�M�'�*�0�0�E�9�	6�
�M�M�'�*�4�4��=�6��O�O�G�,��5�
	7�"(��
�
�g�����S����'�1�,�7��M�M�&�)�/�/�5�8�7��M�M�&�)�3�3�u�<�7��O�O�F�+�u�4�7��M�M�'�*�0�0�F�:�	7�
�M�M�'�*�4�4��>�7��O�O�G�,��6�
	8�	�
�
�rc��yr0��r2s r�testGetAttrListzMinidomTest.testGetAttrList����rc��yr0r�r�s r�testGetAttrValueszMinidomTest.testGetAttrValues�rrc��yr0r�r�s r�testGetAttrLengthzMinidomTest.testGetAttrLength�rrc��t�}|j|jdd��}|j|j	d�d�y)Nr�r��missing�)rr~r�rTr�r�s   r�testGetAttributezMinidomTest.testGetAttribute�sD���j�������� 7��F�H������+�+�I�6��;rc��t�}|j|jdd��}|jddd�|j	|jdd�d�|j	|jdd�d�|j|j
d��}|j	|jdd	�d�y)
Nr�r�r�r��python�otherrr�r)rr~r�r�rT�getAttributeNSrj)r2rr�r�s    r�testGetAttributeNSzMinidomTest.testGetAttributeNS�s����j������#�#�$;�\�J�L��
���0�.�0G�	I�����-�-�.A�8�L�#�	%�����-�-�.A�7�K��	��"�"�3�#4�#4�U�#;�<������.�.�/F�	�R��	rc��yr0r�r�s r�testGetAttributeNodez MinidomTest.testGetAttributeNode�s��Drc�d�d}t|�}|jdd�}|jt|�dk(xrb|djdk(xrN|dj
dk(xr:|djdk(xr&|djdk(xr|djdk(�|j�y)NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidom�myelemrerrzminidom:myelem)
r	�getElementsByTagNameNSr5rlrPrQrR�tagNamer�rF)r2�dr�elemss    r�testGetElementsByTagNameNSz&MinidomTest.testGetElementsByTagNameNS�s������!�n���*�*�+H�+3�5�����S��Z�1�_�:��!�H�)�)�-J�J�:��!�H�&�&�(�2�:��!�H�O�O�y�0�:��!�H�$�$�(8�8�	:�
�!�H�%�%�)9�9�	;�	�
�
�rc�b�|j||�}|jt|�dk(�yr))rr5rl)r2r�nsuri�lname�nodelists     r�5get_empty_nodelist_from_elements_by_tagName_ns_helperzAMinidomTest.get_empty_nodelist_from_elements_by_tagName_ns_helper�s)���-�-�e�U�;�����S��]�a�'�(rc��td�}|j|dd�|j|dd�|j|dd�td�}|j|dd�|j|dd�|j|d	d
�y)Nryz"http://xml.python.org/namespaces/a�	localname�*�splatz3<doc xmlns="http://xml.python.org/splat"><e/></doc>zhttp://xml.python.org/splatz	not-therez#http://somewhere.else.net/not-there�e)r	rr?s  r�+testGetEmptyNodeListFromElementsByTagNameNSz7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNS�s����(�#���B�B��5�{�	D��B�B���g�	��B�B��5�s�	<��O�P���B�B��.��	=��B�B���k�	#��B�B��6��	=rc���t�}|j|jd��}t|�}t	|�}|j||k(�|j
�yr��rr~rj�repr�strr5rF�r2rr��string1�string2s     r�testElementReprAndStrz!MinidomTest.testElementReprAndStr��N���j��
�_�_�S�.�.�u�5�
6���r�(���b�'�����W��'�(��
�
�rc���t�}|j|jd��}t|�}t	|�}|j||k(�|j
�yr�r#r&s     r�testElementReprAndStrUnicodez(MinidomTest.testElementReprAndStrUnicode�r*rc���t�}|j|jdd��}t|�}t	|�}|j||k(�|jd|v�|j
�y)Nzhttp://www.slashdot.orgz	slash:abc)rr~r�r$r%r5rFr&s     r�testElementReprAndStrUnicodeNSz*MinidomTest.testElementReprAndStrUnicodeNSsf���j��
�_�_���� 9�;�G�I���r�(���b�'�����W��'�(����[�G�+�,��
�
�rc���t�}|j|jd��}|jdd�}|j	t|�t
|�k(�|j�y)Nr�r�)rr~rjr�r5r%r$rF)r2rr�r8s    r�testAttributeReprzMinidomTest.testAttributeReprsT���j��
�_�_�S�.�.�u�5�
6�����u�e�,�����S��Y�$�t�*�,�-��
�
�rc��yr0r�r�s r�testTextNodeReprzMinidomTest.testTextNodeRepr���rc��d}t|�}|j�}|j�|j||k(�y)Nz <?xml version="1.0" ?><a b="c"/>)r	rprFr5�r2r%r�domstrs    r�testWriteXMLzMinidomTest.testWriteXMLs5��0���#���������
�
�����S�F�]�#rc��d}t|�}|jd��}|j�|j||j	dd�k(�y)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)�newl�
)r	�toprettyxmlrFr5�replacer5s    r�testAltNewlinezMinidomTest.testAltNewlinesF��4���#������f��-���
�
�����V�s�{�{�4��8�8�9rc��d}|jtd�j�|dz�|jtd�j�|dz�|jtd�j�|dz�|jtd�j�|d	z�|jtd
�j�|dz�y)N�<?xml version="1.0" ?>
�<B>A</B>z	<B>A</B>
z<C>A<B>A</B></C>z<C>
	A
	<B>A</B>
</C>
z<C><B>A</B>A</C>z<C>
	<B>A</B>
	A
</C>
z<C><B>A</B><B>A</B></C>z<C>
	<B>A</B>
	<B>A</B>
</C>
z<C><B>A</B>A<B>A</B></C>z <C>
	<B>A</B>
	A
	<B>A</B>
</C>
)rTr	r;)r2�decls  r� test_toprettyxml_with_text_nodesz,MinidomTest.test_toprettyxml_with_text_nodes"s���)������Z�0�<�<�>���,�	.�����%7�8�D�D�F�� >�>�	@�����%7�8�D�D�F�� >�>�	@�����%>�?�K�K�M�� E�E�	G�����%?�@�L�L�N�� J�J�	Lrc�&�t�}|jd�}|j|jd��|j|jd��|j|�d}|j	|j�|dz�y)Nrt�TEXTr?z<elem>
	TEXT
	TEXT
</elem>
)rrjr~r}rTr;)r2rrtrAs    r�)test_toprettyxml_with_adjacent_text_nodesz5MinidomTest.test_toprettyxml_with_adjacent_text_nodes0s}���j��� � ��(������+�+�F�3�4�����+�+�F�3�4������)��������*�� C�C�	Erc�2�dD]�}t|�}t|j��}|j|jd�djdj�|jd�djdj����y)N)r@z<A><B>C</B></A>�Br)r	r;rTr]rirp)r2r%rr�s    r�/test_toprettyxml_preserves_content_of_text_nodez;MinidomTest.test_toprettyxml_preserves_content_of_text_node;s���2�C��c�"�C��s���0�1�D�����(�(��-�a�0�;�;�A�>�D�D�F��)�)�#�.�q�1�<�<�Q�?�E�E�G�
I�3rc�0�td�}|jj}|j|jdk(xr�|j
dk(xr�|jdk(xr�|jtjk(xr�|jduxr�|j�xrqt|j�dk(xrW|jduxrG|jduxr7|jduxr'|j t"j$j&k(�y)Nz<e><?mypi 	
 data 	
 ?></e>�mypizdata 	
 r)r	r^rnr5�targetr�r��nodeTyper�PROCESSING_INSTRUCTION_NODEr��
hasChildNodesrlrirorQrPrr�EMPTY_NAMESPACE)r2r�pis   r�testProcessingInstructionz%MinidomTest.testProcessingInstructionDs���;�<��
�
 �
 �
+�
+�����R�Y�Y�&�(�
?��G�G�|�+�
?��K�K�6�)�
?��K�K�4�#C�#C�C�
?��M�M�T�)�	
?�
�(�(�*�*�
?���
�
�&�!�+�
?��M�M�T�)�
?��L�L�D�(�
?��L�L�D�(�
?��O�O�s�w�w�'>�'>�>�
	@rc��yr0r�r�s r�testProcessingInstructionReprz)MinidomTest.testProcessingInstructionReprSs��Trc��yr0r�r�s r�testTextReprzMinidomTest.testTextReprUs��Drc��yr0r�r�s r�
testWriteTextzMinidomTest.testWriteTextWs��Trc��yr0r�r�s r�testDocumentElementzMinidomTest.testDocumentElementY���4rc���td�}|jd�}|jtjj
|j|�|j�|j�y)Nry�extra)r	rjr�rrr�r~rF�r2rrts   r�testTooManyDocumentElementsz'MinidomTest.testTooManyDocumentElements[sN���(�#��� � ��)�����#�'�'�5�5�s����M����
��
�
�rc��yr0r�r�s r�testCreateElementNSzMinidomTest.testCreateElementNScrZrc��yr0r�r�s r�testCreateAttributeNSz!MinidomTest.testCreateAttributeNSes��Trc��yr0r�r�s r�	testParsezMinidomTest.testParsegs��rc��yr0r�r�s r�testParseStringzMinidomTest.testParseStringis��trc��yr0r�r�s r�testCommentzMinidomTest.testCommentks��4rc��yr0r�r�s r�testAttrListItemzMinidomTest.testAttrListItemmr3rc��yr0r�r�s r�testAttrListItemszMinidomTest.testAttrListItemsos��rc��yr0r�r�s r�testAttrListItemNSzMinidomTest.testAttrListItemNSq���$rc��yr0r�r�s r�testAttrListKeyszMinidomTest.testAttrListKeyssr3rc��yr0r�r�s r�testAttrListKeysNSzMinidomTest.testAttrListKeysNSurorc�8�td�}|j}|j}|jd�}|j	d�}|j|j
|��|jtjj|jd�y)Nz<doc a=''/>r�)r	r^r�r��removeNamedItemr5�
isSameNoder�rrr��r2rr r��a1�a2s      r�testRemoveNamedItemzMinidomTest.testRemoveNamedItemwsw���-�(����������
�
�
��
$��
�
"�
"�3�
'�����R�]�]�2�&�'����#�'�'�-�-�u�/D�/D�c�Jrc�>�td�}|j}|j}|jdd�}|j	dd�}|j|j
|��|jtjj|jdd�y)Nz.<doc xmlns:a='http://xml.python.org/' a:b=''/>zhttp://xml.python.org/�b)r	r^r��getAttributeNodeNS�removeNamedItemNSr5rvr�rrr�rws      r�testRemoveNamedItemNSz!MinidomTest.testRemoveNamedItemNS�s����J�K����������
�
!�
!�":�C�
@��
�
$�
$�%=�s�
C�����R�]�]�2�&�'����#�'�'�-�-�u�/F�/F�2�C�	9rc��yr0r�r�s r�testAttrListValueszMinidomTest.testAttrListValues�rorc��yr0r�r�s r�testAttrListLengthzMinidomTest.testAttrListLength�rorc��yr0r�r�s r�testAttrList__getitem__z#MinidomTest.testAttrList__getitem__����trc��yr0r�r�s r�testAttrList__setitem__z#MinidomTest.testAttrList__setitem__�r�rc��yr0r�r�s r�testSetAttrValueandNodeValuez(MinidomTest.testSetAttrValueandNodeValue����Drc��yr0r�r�s r�testParseElementzMinidomTest.testParseElement�r3rc��yr0r�r�s r�testParseAttributeszMinidomTest.testParseAttributes�rZrc��yr0r�r�s r�testParseElementNamespacesz&MinidomTest.testParseElementNamespaces�s��$rc��yr0r�r�s r�testParseAttributeNamespacesz(MinidomTest.testParseAttributeNamespaces�r�rc��yr0r�r�s r�testParseProcessingInstructionsz+MinidomTest.testParseProcessingInstructions�s��trc��yr0r�r�s r�testChildNodeszMinidomTest.testChildNodes����drc��yr0r�r�s r�testFirstChildzMinidomTest.testFirstChild�r�rc���td�}|j}|j|j��td�}|j}|j	|j��y)Nrbry)r	r^r1rNr=)r2rrr��doc2s     r�testHasChildNodeszMinidomTest.testHasChildNodes�sY���-�.���!�!������)�)�+�,��8�$���#�#������+�+�-�.rc��|j}|j}t|j��}t|j��}|j�|j�|j	||k(d�tt
|��D]�}|j|�}	|j|�}
|j	|	|
uxrj|	j|
jk(xrO|	j|
jk(xr4|	j|
jk(xr|	j|
jk(d�|j	|
j|ud���y)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)
r��list�keys�sortr5r�rlr*r�r�rPrQr�)r2�e1�e2r3�attrs1�attrs2�keys1�keys2r�rxrys           r�!_testCloneElementCopiesAttributesz-MinidomTest._testCloneElementCopiesAttributes�s�����������V�[�[�]�#���V�[�[�]�#��
�
�
��
�
�
�����U�e�^�%O�P��s�5�z�"�A����Q��B����Q��B��L�L��2��5����B�H�H�,�5�������4�5����2�?�?�:�5�������4�K�
M�
�L�L����B�.�=�
?�#rc��td�}|j}|j|�}|j||d|xrdxsdz�dx|_|_|j
dd�|j
dd	�||fS)
Nz<doc attr='value'><foo/></doc>�testCloneElement�Deep�Shallow�MODIFIEDrWz	NEW VALUE�added�VALUE)r	r^�	cloneNoder�rr�r�)r2�deeprrs�clones     r�_setupCloneElementzMinidomTest._setupCloneElement�s����:�;���"�"�����t�$���.�.��%�+�t���/K�)�L�	N�(2�1���t�}����&�+�.����'�7�+��E�z�rc��|jd�\}}|jt|j�dk(xr>|jjdk(xr#|j
duxr|j
�dk(d�|j�y)Nrz<doc attr="value"/>�testCloneElementShallow�r�r5rlrirm�
parentNoderprF�r2rr�s   rr�z#MinidomTest.testCloneElementShallow�s����,�,�Q�/�
��U����S��)�)�*�a�/�;��$�$�+�+�q�0�;��$�$��,�;��K�K�M�%:�:�+�		-�
	�
�
�rc��|jd�\}}|jt|j�dk(xr>|jjdk(xr#|j
duxr|j
�dk(d�|j�y)Nrez<doc attr="value"><foo/></doc>�testCloneElementDeepr�r�s   rr�z MinidomTest.testCloneElementDeep�s����,�,�Q�/�
��U����S��)�)�*�a�/�F��$�$�+�+�q�0�F��$�$��,�F��K�K�M�%E�E�(�		*�
	�
�
�rc�d�td�}|jd�}|j|dud�y)N��<?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>rzFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)r	r�r5�r2rr�s   r�testCloneDocumentShallowz$MinidomTest.testCloneDocumentShallow�s:���*�+���}�}�Q������T�T�\�@�	Arc��td�}|jd�}|j|j|�xs|j|�d�|jt	|j
�t	|j
�k(d�|j|jjtjk(d�|j|jjj|�d�|j|jj|j�d�|j��|j|jjtjk(d�|j|jjj|��|j|jj|j��yy)	Nr�rez4testCloneDocumentDeep: document objects not distinctz8testCloneDocumentDeep: wrong number of Document childrenz:testCloneDocumentDeep: documentElement not an ELEMENT_NODEz@testCloneDocumentDeep: documentElement owner is not new documentz;testCloneDocumentDeep: documentElement should not be sharedz7testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE)
r	r�r5rvrlrir^rLr�ELEMENT_NODEr+r�DOCUMENT_TYPE_NODEr�s   r�testCloneDocumentDeepz!MinidomTest.testCloneDocumentDeep�sm���*�+���}�}�Q������#�.�.��.�F�$�/�/�#�2F�G�F�	H����S����(�C����,@�@�J�	L����T�)�)�2�2�d�6G�6G�G�L�	N����T�)�)�7�7�B�B�4�H�N�	P�����,�,�7�7��8L�8L�M�M�M�	O��;�;�"��L�L����.�.�$�2I�2I�I�M�
O��L�L����3�3�>�>�t�D�E��L�L�S�[�[�3�3�D�L�L�A�A�B�#rc�F�t�}|jd�}|j|dux�rD|j|jk(x�r(|j|jk(x�r|j
|j
k(xr�|j|jk(xr�t|j�t|j�k(xr�|jjt|j��duxrwt|j�t|j�k(xrJ|jjt|j��duxrt|j�dk(�tt|j��D�]+}|jj|�}|jj|�}|j|j|�xr�|j|�xr�|j|jk(xr�|j|jk(xr�|j
|j
k(xrj|j|jk(xrO|j|jk(xr4|j |j k(xr|j"|j"k(���.tt|j��D]�}|jj|�}|jj|�}|j|j|�xrc|j|�xrO|j|jk(xr4|j
|j
k(xr|j|jk(���y)Nrer)r'r�r5r�rU�publicId�systemIdrlrr*rrir�rv�notationNamer#r$r")r2rr�r��se�ce�sn�cns        r�testCloneDocumentTypeDeepOkz'MinidomTest.testCloneDocumentTypeDeepOks��)�+���!�!�!�$�����U�$�&�	/��N�N�g�&6�&6�6�	/��J�J�'�,�,�.�	/��N�N�g�&6�&6�6�	/��N�N�g�&6�&6�6�		/�
����'�3�w�/?�/?�+@�@�	/��N�N�'�'��E�N�N�(;�<��D�
	/�����(�C��0A�0A�,B�B�	/��O�O�(�(��U�_�_�)=�>�$�F�	/���(�(�)�Q�.�		0��s�7�+�+�,�-�A��!�!�&�&�q�)�B����$�$�Q�'�B��L�L�b�m�m�B�/�/�1��]�]�2�.�.�1����r�{�{�2�1����2�?�?�:�1����r�{�{�2�	1�
���r�{�{�2�1����r�{�{�2�
1��)�)�R�->�->�>�1��
�
�b�j�j�0�
2�.��s�7�,�,�-�.�A��"�"�'�'��*�B����%�%�a�(�B��L�L�b�m�m�B�/�/�3��]�]�2�.�.�3����r�{�{�2�3����r�{�{�2�3����r�{�{�2�	
4�/rc�v�t�}|jjd�}|j|dud�y)Nre�testCloneDocumentTypeDeepNotOk�r,rr�r5�r2rr�s   rr�z*MinidomTest.testCloneDocumentTypeDeepNotOk#s1��%�'�����%�%�a�(�����U�d�]�$D�Erc�P�t�}|jd�}|j|duxr�|j|jk(xr�|j|jk(xr�|j
|j
k(xr�|j|jk(xr�t|j�dk(xrp|jjd�duxrQt|j�dk(xr7|jjd�duxrt|j�dk(�yr))r'r�r5r�rUr�r�rlrr*rri)r2rr�s   r�testCloneDocumentTypeShallowOkz*MinidomTest.testCloneDocumentTypeShallowOk(s��)�+���!�!�!�$�����U�$�&�	/��N�N�g�&6�&6�6�	/��J�J�'�,�,�.�	/��N�N�g�&6�&6�6�	/��N�N�g�&6�&6�6�		/�
����'�1�,�	/��N�N�'�'��*�d�2�
	/�����(�A�-�	/��O�O�(�(��+�t�3�	/���(�(�)�Q�.�		0rc�v�t�}|jjd�}|j|dud�y)Nr�!testCloneDocumentTypeShallowNotOkr�r�s   rr�z-MinidomTest.testCloneDocumentTypeShallowNotOk6s1��%�'�����%�%�a�(�����U�d�]�$G�Hrc��td�}td�}|jtjj|j
||�y)Nry)r	r�rr�NotSupportedErr�
importNode)r2r��testName�doc1r�s     r�check_import_documentz!MinidomTest.check_import_document;s8���8�$���8�$�����#�'�'�1�1�4�?�?�D�$�Orc�(�|jdd�y)Nr�testImportDocumentShallow�r�r�s rr�z%MinidomTest.testImportDocumentShallow@����"�"�1�&A�Brc�(�|jdd�y)Nre�testImportDocumentDeepr�r�s rr�z"MinidomTest.testImportDocumentDeepC����"�"�1�&>�?rc��t�}t�}|jtjj
|j|jd�yr)�r,rr�rrr�r�r�r2�srcrKs   r�testImportDocumentTypeShallowz)MinidomTest.testImportDocumentTypeShallowF�=��%�'��+�-�����#�'�'�1�1�6�3D�3D��+�+�q�	*rc��t�}t�}|jtjj
|j|jd�y�Nrer�r�s   r�testImportDocumentTypeDeepz&MinidomTest.testImportDocumentTypeDeepLr�rc�
�td�}|jjd�}|j|d�|j	|�}|j|j
|��|j|j
|��|j|jdu|dz�|j|jj
|j�|dz�|j|j|dz�y)Nz<doc attr='value'/>rWz: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
r	r^r��assertNotEqualr�r5rvr�r+�	specified)r2r�r�rrWr�s      r�check_clone_attributez!MinidomTest.check_clone_attributeTs����/�0���"�"�3�3�F�;�����D�$�'����t�$������)�)�$�/�/�0��������/�/�0����U�'�'�4�/��:�:�	<����U�(�(�3�3�D�4F�4F�G��;�;�	=����U�_�_��K�K�	Mrc�(�|jdd�y)Nr�testCloneAttributeShallow�r�r�s rr�z%MinidomTest.testCloneAttributeShallowbr�rc�(�|jdd�y)Nre�testCloneAttributeDeepr�r�s rr�z"MinidomTest.testCloneAttributeDeeper�rc�.�td�}|j}|j|jtj
�|j
|�}|j|j|jk(xr|j|jk(�y)Nz<?target data?><doc/>)
r	rnrTrLrrMr�r5rKr�)r2r�r�rrPr�s      r�check_clone_pizMinidomTest.check_clone_pihsn���1�2��
�^�^��������d�&F�&F�G����T�"�����U�\�\�R�Y�Y�.�*��J�J�"�'�'�)�	+rc�(�|jdd�y)Nr�testClonePIShallow�r�r�s rr�zMinidomTest.testClonePIShallowps�����A�3�4rc�(�|jdd�y)Nre�testClonePIDeepr�r�s rr�zMinidomTest.testClonePIDeepss�����A�0�1rc���tjjjdj	��}Gd�d�}|�}|j
}|jd}|jdd|�|r�|jd��}|j|jjjd	�tjjj}|j
jd}	netj |d
d�5|jd��}ddd�tjjj"}jd}	|j|j$|�|j|j&d�|j|j(d�|j+|j,|�|j+|j.|	�y#1swY��xYw)Nu
            <?xml version="1.0" ?>
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                "http://www.w3.org/TR/html4/strict.dtd"
                [ <!ENTITY smile "☺"> ]
            >
            <doc>Don't let entities make you frown &smile;</doc>
        c��eZdZd�Zy)�4MinidomTest.check_clone_node_entity.<locals>.Handlerc�J�||_||_||_||_||_yr0)�	operation�keyr�r��dst�r2r�r�r�r�rs      r�handlez;MinidomTest.check_clone_node_entity.<locals>.Handler.handle�s%��!*������ ��	������rN)�__name__�
__module__�__qualname__rr�rr�Handlerr��s��
rr�smiler�r�T)r�u%Don't let entities make you frown ☺r+)rrrr	�striprr�setUserDatar�rTr^rnr7�UserDataHandler�
NODE_IMPORTEDr�	swap_attr�NODE_CLONEDr�r�r�r�r�r)
r2�clone_document�documentr�handlerrr&r�r�rs
          r�check_clone_node_entityz#MinidomTest.check_clone_node_entityvs����7�7�?�?�.�.�0�
�E�G���	�	��)���"�"���!�!�'�*�����5�&�'�2���&�&�D�&�1�E����U�2�2�=�=�G�G�D�
F����/�/�=�=�I��-�-�(�(��1�C��"�"�7�O�T�B��)�)�t�)�4��C����/�/�;�;�I��.�.��)�C�����*�*�I�6�������e�,�������v�.��
�
�g�k�k�6�*��
�
�g�k�k�3�'�C�B�s�G+�+G4c�H�|jd�|jd�y)NFT)rr�s r�testCloneNodeEntityzMinidomTest.testCloneNodeEntity�s���$�$�U�+��$�$�T�*rc��td�}|j}|j|jd��|j|jd��|j	t|j�dk(xr|jjdk(d�|j�|j	t|j�dk(xrN|jjdk(xr3|j|juxr|jjdk(d�|j�td�}|j}|j|jd	��|j�|j	t|j�d
k(xr|jjd
k(d�|j�y)Nry�first�secondrdztestNormalize -- preparationre�firstsecondztestNormalize -- resultrrz*testNormalize -- single empty node removed)
r	r^r~r}r5rlrirm�	normalizernror�rF�r2rrss   r�
testNormalizezMinidomTest.testNormalize�sq���(�#���"�"������+�+�G�4�5�����+�+�H�5�6����S����)�Q�.�0��O�O�*�*�a�/�.�	0�	�
�
�����S����)�Q�.�:��O�O�*�*�a�/�:��O�O�t�~�~�5�:��O�O�(�(�M�9�+�		-�
	�
�
���(�#���"�"������+�+�B�/�0��
�
�����S����)�Q�.�0��O�O�*�*�a�/�<�	>�	�
�
�rc��td�}|j}|j|jd��|j|jd��|j|j	d��|jt
|j�dk(xr|jjdk(d�|j�|jt
|j�dk(xr�|jjdk(xr�|jjdk(xr�|j|juxrz|jj|juxrV|jjduxr<|jj|juxr|jjdud	�|j�y)
Nryrrr�rfz1testNormalizeCombineAndNextSibling -- preparationrdrz-testNormalizeCombinedAndNextSibling -- result)r	r^r~r}rjr5rlrirmrrnr�rorrrqrFrs   r�"testNormalizeCombineAndNextSiblingz.MinidomTest.testNormalizeCombineAndNextSibling�s����(�#���"�"������+�+�G�4�5�����+�+�H�5�6�����*�*�3�/�0����S����)�Q�.�0��O�O�*�*�a�/�C�	E�	�
�
�����S����)�Q�.�7��O�O�*�*�a�/�7��O�O�(�(�M�9�7��O�O�4�>�>�9�7��O�O�/�/�4�>�>�A�	7�
�O�O�3�3�t�;�7��N�N�2�2�d�o�o�E�
7��N�N�.�.�$�6�A�	C�	�
�
�rc���td�}|j}|j|jd��|j|jd��|j	t|j�dk(xr|jjdk(d�|j�|j	t|j�dk(xr�|jjdk(xrg|jjdk(xrL|j|juxr2|jjduxr|jjdud�|j�y)Nryrrrdz1testNormalizeDeleteWithPrevSibling -- preparationrez,testNormalizeDeleteWithPrevSibling -- result�r	r^r~r}r5rlrirmrrnr�rorrrqrFrs   r�"testNormalizeDeleteWithPrevSiblingz.MinidomTest.testNormalizeDeleteWithPrevSibling�s-���(�#���"�"������+�+�G�4�5�����+�+�B�/�0����S����)�Q�.�0��O�O�*�*�a�/�C�	E�	�
�
�����S����)�Q�.�<��O�O�*�*�a�/�<��O�O�(�(�G�3�<��O�O�t�~�~�5�<��O�O�/�/�4�7�	<�
�O�O�3�3�t�;�@�
	B�	�
�
�rc���td�}|j}|j|jd��|j|jd��|j	t|j�dk(xr|jjdk(d�|j�|j	t|j�dk(xr�|jjdk(xrg|jjdk(xrL|j|juxr2|jjduxr|jjdud�|j�y)Nryrrrdz1testNormalizeDeleteWithNextSibling -- preparationrez,testNormalizeDeleteWithNextSibling -- resultrrs   r�"testNormalizeDeleteWithNextSiblingz.MinidomTest.testNormalizeDeleteWithNextSibling�s-���(�#���"�"������+�+�B�/�0�����+�+�H�5�6����S����)�Q�.�0��O�O�*�*�a�/�C�	E�	�
�
�����S����)�Q�.�<��O�O�*�*�a�/�<��O�O�(�(�H�4�<��O�O�t�~�~�5�<��O�O�/�/�4�7�	<�
�O�O�3�3�t�;�@�
	B�	�
�
�rc�j�td�}|j}|j|jd��|j|j	d��|j|jd��|jt
|j�dk(xr|jjdk(d�|j�|jt
|j�dk(xr�|jjdk(xr�|j|juxrz|jj|juxrV|jjduxr<|jj|juxr|jjdud�|j�y)Nryr�rrfz1testNormalizeDeleteWithTwoSiblings -- preparationrdz,testNormalizeDeleteWithTwoSiblings -- result)r	r^r~rjr}r5rlrirmrrnrorrrqrFrs   r�)testNormalizeDeleteWithTwoNonTextSiblingsz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblings�sg���(�#���"�"������*�*�3�/�0�����+�+�B�/�0�����*�*�3�/�0����S����)�Q�.�0��O�O�*�*�a�/�C�	E�	�
�
�����S����)�Q�.�7��O�O�*�*�a�/�7��O�O�4�>�>�9�7��O�O�/�/�4�>�>�A�7��O�O�3�3�t�;�	7�
�N�N�2�2�d�o�o�E�7��N�N�.�.�$�6�@�	B�	�
�
�rc��td�}|j}|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��|j	t|j�dk(xr|jjdk(d�|j�|j	t|j�dk(xr�|jjdk(xrg|j|juxrM|jjdk(xr2|jjduxr|jjdud	�|j�y)
Nryrr�fourth�z,testNormalizeDeleteAndCombine -- preparationre�secondfourthz'testNormalizeDeleteAndCombine -- result)r	r^r~r}r5rlrirmrrnror�rqrrrFrs   r�testNormalizeDeleteAndCombinez)MinidomTest.testNormalizeDeleteAndCombinesw���(�#���"�"������+�+�B�/�0�����+�+�H�5�6�����+�+�B�/�0�����+�+�H�5�6�����+�+�B�/�0����S����)�Q�.�0��O�O�*�*�a�/�>�	@�	�
�
�����S����)�Q�.�8��O�O�*�*�a�/�8��O�O�t�~�~�5�8��O�O�(�(�N�:�8��O�O�3�3�t�;�	8�
�O�O�/�/�4�7�;�
	=�	�
�
�rc�.�td�}|j}|jdj|j	d��|jdj|j	d��|jdjdj|j	d��|jdj|j	d��|j|j	d��|jt
|j�dk(x�r!|jjdk(x�rt
|jdj�d	k(xr�|jdjjd	k(xr�t
|jdj�dk(xr�|jdjjdk(xrgt
|jdjdj�d
k(xr3|jdjdjjd
k(d�|j�|jt
|j�d
k(x�r!|jjd
k(x�rt
|jdj�d
k(xr�|jdjjd
k(xr�t
|jdj�d
k(xr�|jdjjd
k(xrgt
|jdjdj�dk(xr3|jdjdjjdk(d�|j|jdjdjd
k(xra|jdjdjdjdk(xr)|jdjdjdk(d�|j|jdjdjdux�r�|jdjdj|jdjdux�rI|jdjdjdux�r|jdjdj|jdjduxr�|jdjdjduxr�|jdjdj|jdjduxrl|jdjdjduxrB|jdjdj|jdjdud�|j�y)Nz)<doc><o><i/>t</o><o><o>t2</o>t3</o></doc>rr�xre�x2�x3rfrhrdztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengths�tx�t2x2�t3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)
r	r^rir~r}r5rlrmrr�rrrqrFrs   r�testNormalizeRecursionz"MinidomTest.testNormalizeRecursion$sd���#�$��"�"�"�������&�&�s�'9�'9�"�'=�>������&�&�s�'9�'9�#�'>�?������%�%�a�(�4�4�S�5G�5G��5M�N������&�&�s�'9�'9�$�'?�@�����+�+�B�/�0����S����)�Q�.�L��O�O�*�*�a�/�L������*�5�5�6�!�;�L��O�O�A�&�1�1�8�8�A�=�L������*�5�5�6�!�;�	L�
�O�O�A�&�1�1�8�8�A�=�L������*�5�5�a�8�C�C�D��I�
L��O�O�A�&�1�1�!�4�?�?�F�F�!�K�1�	3�	�
�
�����S����)�Q�.�L��O�O�*�*�a�/�L������*�5�5�6�!�;�L��O�O�A�&�1�1�8�8�A�=�L������*�5�5�6�!�;�	L�
�O�O�A�&�1�1�8�8�A�=�L������*�5�5�a�8�C�C�D��I�
L��O�O�A�&�1�1�!�4�?�?�F�F�!�K�8�	:�	
���T�_�_�Q�'�2�2�1�5�:�:�d�B�D��O�O�A�&�1�1�!�4�?�?��B�G�G�6�Q�D��O�O�A�&�1�1�!�4�9�9�V�C�8�	:�	
���T�_�_�Q�'�2�2�1�5�A�A�T�I�<��O�O�A�&�1�1�!�4�D�D��?�?�1�-�8�8��;�<�<��O�O�A�&�1�1�!�4�D�D��L�<��O�O�A�&�1�1�!�4�@�@��?�?�1�-�8�8��;�<�	<��O�O�A�&�1�1�!�4�@�@�D�H�
<��O�O�A�&�1�1�!�4�D�D��?�?�1�-�8�8��;�<�<��O�O�A�&�1�1�!�4�D�D��L�<��O�O�A�&�1�1�!�4�@�@��?�?�1�-�8�8��;�<�6�	8�	�
�
�rc���td�}|jjd}|j|jt
j�|j�|j�y)Nz<o>text</o>r)	r	r^rirTrLr�	TEXT_NODErrF)r2rr�s   r�testBug0777884zMinidomTest.testBug0777884csM���-�(���"�"�-�-�a�0�����������7������
�
�rc���td�}|j}d|jd_|j	�|j|jdjdud�y)Nz<o><i/>t</o>rrer�z)Final child's .nextSibling should be None)r	r^rir�rr5rr�r2rr8s   r�testBug1433694zMinidomTest.testBug1433694ksX���.�)���"�"��')������$��������T�_�_�R�(�4�4��<�@�	Brc�N�td�}|j}|j\}}}|j|j|uxrN|j
duxr>|j|uxr.|j
|uxr|jduxr|j
|ud�|j
�y)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)r	r^rir5rrrqrF)r2rrsrPr��elms      rr8zMinidomTest.testSiblingsss����8�9���"�"���/�/���T�3����R�^�^�t�+�,��"�"�d�*�,�� � �C�'�,��$�$��*�,����4�'�	,�
�#�#�t�+�^�	=�	�
�
�rc�h�td�}|j}|jd}|j\}}|jd}|j|j|uxr>|j|uxr.|j|uxr|j|uxr|j|ud�|j�y)Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r�testParents)r	r^rir5r�rF)r2rrs�elm1�elm2a�elm2b�elm3s       rr;zMinidomTest.testParents�s����A�C���"�"�����q�!������������"�����T�_�_��+�)����4�'�)�� � �D�(�)�� � �D�(�)����5�(�-�		9�
	�
�
�rc���td�}|j}|d}|j|d|jd�uxr�|jd�duxr�|jjd�|jduxrb|jjd�|jduxr6|jjd�jjd�dud�|j	�y)Nz<doc><e/><e/></doc>rreztest NodeList.item())r	rir5r*rF)r2rr��docelems    r�testNodeListItemzMinidomTest.testNodeListItem�s����/�0���>�>���1�+�����X�a�[�H�M�M�!�$4�4�J��M�M�!�$��,�J��&�&�+�+�A�.�'�2D�2D�Q�2G�G�J��&�&�+�+�A�.�'�2D�2D�Q�2G�G�J��&�&�+�+�A�.�9�9�>�>�q�A�T�I�&�	(�	�
�
�rc��td�}|j|j�d�|j|jd�d�|j|jd�d�|j|jd�d�|j|jd	�d
jd	��|j	t
tf�5td�ddd�|j�y#1swY�xYw)N�<foo>&#x20ac;</foo>�$<?xml version="1.0" ?><foo>€</foo>rs4<?xml version="1.0" encoding="utf-8"?><foo>€</foo>ziso-8859-15s8<?xml version="1.0" encoding="iso-8859-15"?><foo>�</foo>rs;<?xml version="1.0" encoding="us-ascii"?><foo>&#8364;</foo>zutf-16u5<?xml version="1.0" encoding="utf-16"?><foo>€</foo>s0<fran�ais>Comment �a va ? Tr�s bien ?</fran�ais>)r	rTrp�encoder��UnicodeDecodeErrorrrFr?s  r�
testEncodingszMinidomTest.testEncodings�s����/�0���������B�	D�������7�+�L�	N�������=�1�J�	L�������:�.�J�	L�������8�,�
 � &��x� 0�	2��
�
� 2�J�?�
@��O�
�A�
	�
�
��A�
@�s�C?�?Dc��td�}|j|j�d�|j|jd��d�|j|jd��d�|j|jd��d�|j|jdd�d	�|j�y)
NrDrE)�
standaloneTu4<?xml version="1.0" standalone="yes"?><foo>€</foo>Fu3<?xml version="1.0" standalone="no"?><foo>€</foo>rsE<?xml version="1.0" encoding="utf-8" standalone="yes"?><foo>€</foo>)r	rTrprFr?s  r�testStandalonezMinidomTest.testStandalone�s����/�0���������B�	D�������d��3�B�	D�������d��3�E�	G�������e��4�D�	F�������7�D�1�
'�	(�	�
�
�rc��eZdZdZd�Zy)�MinidomTest.UserDataHandlerrc�d�|j||dz|�|j|dd�d|_yr�)r	�calledrs      rrz"MinidomTest.UserDataHandler.handle�s-���O�O�C����4�0��O�O�C��t�,��D�KrN)rrrrOrr�rrr
rM�s����	rr
c���t�}|jd�}|j|jd�du�|j	ddd�|j|jd�du�|j	ddd�|j	ddd�|j|jd�dk(�|j|jd�dk(�|j	ddd�|j|jd�du�|j|jd�dk(�|j�}|j	dd|�|j
d�}|j|jxr)|jd�duxr|jd�dk(�|j�|j�|j�y)Nr r{�rg�
re)	rrjr5�getUserDatar	r
r�rOrF)r2r�nr�cs     r�testUserDatazMinidomTest.testUserData�s{���j�����c�"�����Q�]�]�5�)�T�1�2�	�
�
�e�T�4�(����Q�]�]�5�)�T�1�2�	�
�
�e�R��$�	�
�
�e�R��$����Q�]�]�5�)�R�/�0����Q�]�]�5�)�R�/�0�	�
�
�e�T�4�(����Q�]�]�5�)�T�1�2����Q�]�]�5�)�R�/�0��&�&�(��	�
�
�e�R��)�
�K�K��N�����W�^�^�/��M�M�%�(�D�0�/��M�M�%�(�B�.�	0�	
���
�	���
��
�
�rc�&�|jtjj|j|dd�td�}|jtjj|j|tjjd�y)N�http://xml.python.org/nsz	xmlns:fooryr{)r�rr�NamespaceErr�
renameNoder	�WrongDocumentErrrO)r2rr8r�s    r� checkRenameNodeSharedConstraintsz,MinidomTest.checkRenameNodeSharedConstraints�se�����#�'�'�.�.�����4�k�	C��8�$�����#�'�'�2�2�D�O�O�T��'�'�1�1�5�	:rc��td�}|j}|j}|jd}|j|tj
jd�}|j|jdk(xr�|jdk(xr�|jduxr�|jtj
jk(xr�|jduxr�|jdk(xr�|jd�duxrp|jd�j|�xrN|dj|�xr8|j j|�xr|j"j|��|j|dd�}|j|jdk(xr�|jdk(xr�|jdk(xr�|jdk(xr�|jduxr�|jdk(xr�|jd�duxr�|jd�duxro|jd�j|�xrM|j%dd�j|�xr*|dj|�xr|dj|��|j|dd	�}|j|jd	k(x�r|jd	k(x�r|jd
k(xr�|jdk(xr�|jdk(xr�|jdk(xr�|jd�duxr�|jd�duxr�|jd�duxr�|j%dd�duxro|jd	�j|�xrM|j%dd
�j|�xr*|d	j|�xr|dj|��|j|tj
jd
�}|j|jd
k(x�r|jd
k(xr�|jduxr�|jtj
jk(xr�|jduxr�|jdk(xr�|jd�duxr�|jd�duxrv|jd�duxra|jd	�duxrL|j%dd�duxr6|jd
�j|�xr|d
j|��|j'tj
j(|j|dd�|j+||�|j-�y)Nz<doc a='v'/>r�r|�vrXrU)rXrU�http://xml.python.org/ns2zp:dr�p)r_rr �xmlns)r	r^r�rZrrrOr5rUr�rQrPrRr�r�rvr+r�r}r�rYr\rF)r2rrt�attrmaprWs     r�testRenameAttributezMinidomTest.testRenameAttribute�s����.�)���"�"���/�/�����s�#���~�~�d�C�G�G�$;�$;�S�A�����T�Y�Y�#�%�
7��M�M�S�(�
7��N�N�d�*�
7��%�%����)@�)@�@�
7��K�K�4�'�	
7�
�J�J�#�%�
7��)�)�#�.�$�6�
7��)�)�#�.�9�9�$�?�
7��C�L�+�+�D�1�
7��&�&�1�1�#�6�
7��%�%�0�0��6�
	8��~�~�d�$>��D�����T�Y�Y�#�%�P��M�M�S�(�P��N�N�c�)�P��%�%�)C�C�P��K�K�4�'�	P�
�J�J�#�%�P��)�)�#�.�$�6�
P��)�)�#�.�$�6�P��)�)�#�.�9�9�$�?�P��+�+�.��5�5?�Z��5E�P��C�L�+�+�D�1�P��=�>�I�I�$�O�	Q��~�~�d�$?��G�����T�Y�Y�%�'�Q��M�M�U�*�Q��N�N�c�)�Q��%�%�)D�D�Q��K�K�3�&�	Q�
�J�J�#�%�Q��)�)�#�.�$�6�
Q��)�)�#�.�$�6�Q��)�)�#�.�$�6�Q��+�+�.��5�8<�=�Q��)�)�%�0�;�;�D�A�Q��+�+�/��6�6@�j��6F�Q��E�N�-�-�d�3�Q��>�?�J�J�4�P�	R�$�~�~�d�C�G�G�$;�$;�S�A�����T�Y�Y�#�%�
2��M�M�S�(�
2��N�N�d�*�
2��%�%����)@�)@�@�
2��K�K�4�'�	
2�
�J�J�#�%�
2��)�)�#�.�$�6�

2��)�)�#�.�$�6�
2��)�)�#�.�$�6�
2��)�)�%�0�D�8�
2��+�+�.��5�8<�=�
2��)�)�#�.�9�9�$�?�
2��C�L�+�+�D�1�
	3�	
���#�'�'�.�.�����4�g�	?��-�-�c�4�8��
�
�rc��td�}|j}|j|tjj
d�}|j
|jdk(xru|jdk(xrd|jduxrT|jtjj
k(xr+|jduxr|jj|��|j|dd�}|j
|jdk(xr^|jdk(xrM|jdk(xr<|jdk(xr+|jduxr|jj|��|j|dd�}|j
|jdk(xr_|jdk(xrN|jdk(xr=|jdk(xr,|jdk(xr|jj|��|j|tjj
d	�}|j
|jd	k(xru|jd	k(xrd|jduxrT|jtjj
k(xr+|jduxr|jj|��|j||�|j�y)
Nryr�rXr|r_zp:crUr`r)r	r^rZrrrOr5rr�rQrPrRr+rvr\rFr]s   r�testRenameElementzMinidomTest.testRenameElement7s����(�#���"�"���~�~�d�C�G�G�$;�$;�S�A�����T�\�\�S�(�7��M�M�S�(�7��N�N�d�*�7��%�%����)@�)@�@�7��K�K�4�'�	7�
�&�&�1�1�#�6�	8��~�~�d�$>��D�����T�\�\�S�(�7��M�M�S�(�7��N�N�c�)�7��%�%�)C�C�7��K�K�4�'�	7�
�&�&�1�1�#�6�	8��~�~�d�$?��G�����T�\�\�U�*�7��M�M�U�*�7��N�N�c�)�7��%�%�)D�D�7��K�K�3�&�	7�
�&�&�1�1�#�6�	8��~�~�d�C�G�G�$;�$;�S�A�����T�\�\�S�(�7��M�M�S�(�7��N�N�d�*�7��%�%����)@�)@�@�7��K�K�4�'�	7�
�&�&�1�1�#�6�	8�	
�-�-�c�4�8��
�
�rc��tjjj�j	tjj
dd�}|j
d�}|jtjj|j|tjj
d�|j�y)Nr �commentr{)rrrr
rrOr�r�r�rZrFr5s   r�testRenameOtherzMinidomTest.testRenameOtherbs����g�g�o�o�2�2�4�C�C��G�G�#�#�S�$�0��� � ��+�����#�'�'�1�1�3�>�>�4��'�'�1�1�5�	:��
�
�rc���td�}|j}|jd}|j|jt
j�|j|d�|j|jd��|j|d�|j|jd�|�|j|d�|jd�}|j|�|jd	�}|j|�|j|d�|j|d	�|jd
�}|j||�|}|j|d�|j|d	�|jdd�}|j||�|}|j|d�|j|d	�|j!|�|j|d
�|j|d
�y)Nz<doc>a</doc>rr�r|�abrU�cabrgrr*�y�z�cabd)r	r^rirTrLrr2r;r~r}rk�createCDATASectionr�rjr��createProcessingInstruction�removeChild)r2rrtr��splitter�text2r*s       r�
testWholeTextzMinidomTest.testWholeTextls����.�)���"�"�����q�!�����������7����D�#�&�����+�+�C�0�1����D�$�'����#�0�0��5�t�<����D�%�(��$�$�Y�/������"��"�"�3�'����������D�%�(����E�3�'����c�"�����!�X�&������D�%�(����E�3�'��+�+�C��5�����!�X�&������D�%�(����E�3�'�����"����D�&�)����E�6�*rc���td�}|j}|j}|j|j|ud�|j||�|j|j|ud�y)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())r	r^rnr5r�r�)r2rrtr s    r�testPatch1094164zMinidomTest.testPatch1094164�sa���+�,���"�"���O�O�����Q�\�\�T�)�+B�C����!�Q�����Q�\�\�T�)�+A�Brc�h�d�}|�\}}}}}|jd�}|j|d�|j|d�|jt|j�dk(�|�\}}}}}|jd�}|j|d�|j|d�|jt|j�dk(�|�\}}}}}|jd�}|j|d�|j|duxrt|j�dk(�y)	Nc�
�td�}|j}|j}|j}|j}|j|j
d�|�|j|jd�|�|||||fS)Nz<doc>a<e/>d</doc>r|rU)r	r^rnrorrrkr}ro)rrt�text1rsrrs     r�setupz/MinidomTest.testReplaceWholeText.<locals>.setup�s|���1�2�C��&�&�D��O�O�E��N�N�E��(�(�H����c�0�0��5�x�@����c�4�4�S�9�5�A���e�X�u�4�4rznew contentrrfrkr&rrd)�replaceWholeTextr;r5rlri)r2rzrrtryrrrsr�s        r�testReplaceWholeTextz MinidomTest.testReplaceWholeText�s��	5�-2�G�)��T�5�(�E��%�%�m�4�����D�-�0����E�3�'����S����)�Q�.�/�,1�G�)��T�5�(�E��%�%�m�4�����D�-�0����E�5�)����S����)�Q�.�/�,1�G�)��T�5�(�E��%�%�b�)�����E�3�'����T�T�\�.�����(�A�-�	/rc���td�}|j}|j}|j|jduxr'|j
tjjk(�dj�}|D]c}|j|�}|j}|jt|d�xr'|j
tjjk(��ey)Nal<!DOCTYPE doc [
  <!ENTITY e1 SYSTEM 'http://xml.python.org/e1'>
  <!ENTITY e2 SYSTEM 'http://xml.python.org/e2'>
  <!ATTLIST doc id   ID       #IMPLIED 
                ref  IDREF    #IMPLIED 
                refs IDREFS   #IMPLIED 
                enum (a|b)    #IMPLIED 
                ent  ENTITY   #IMPLIED 
                ents ENTITIES #IMPLIED 
                nm   NMTOKEN  #IMPLIED 
                nms  NMTOKENS #IMPLIED 
                text CDATA    #IMPLIED 
    >
]><doc id='name' notid='name' text='splat!' enum='b'       ref='name' refs='name name' ent='e1' ents='e1 e2'       nm='123' nms='123 abc' />z+id notid text enum ref refs ent ents nm nmsrU)r	r^�
schemaTyper5rU�	namespacerrrO�splitr��hasattr)r2rrtr:�namesrUr�s       r�testSchemaTypezMinidomTest.testSchemaType�s����
/�0��"�"�"��

�O�O�����Q�V�V�t�^�;��K�K�3�7�7�#:�#:�:�	<�=�C�C�E���D��%�%�d�+�A����A��L�L���F�+�?����s�w�w�'>�'>�>�
@�rc��td�}|j}|jd�}|jd�}|j|j	d�duxr|j
xr
|j
�|j
d�|j|j|j	d��xr|j
xr
|j
�|j
d�|j|j|j	d��xr<|j|j	d��xr|j
xr|j
�|jd�}d|_	|j|�|j|j	d�duxrL|j|j	d��xr*|j
xr|j
xr
|j
�|j|tjjd�|j|j|j	d��xr|j
�y)Nz<doc a1='v' a2='w'/>rxryr^�w�an)r	r^r�r5�getElementByIdr�r�rv�createAttributer�r�rZrrrO)r2rr rxry�a3s      r�testSetIdAttributezMinidomTest.testSetIdAttribute�s����0�1������
�
�
��
%��
�
�
��
%�����S�'�'��,��4� ����K� ����K�	!�	
��������Q�\�\�#�"4�"4�S�"9�:� ��G�G� ����K�	!�	
��������Q�\�\�#�"4�"4�S�"9�:���L�L��!3�!3�C�!8�9���G�G���G�G�	�
�
 �
 ��
&�����	���2�����S�'�'��,��4� ��L�L��!3�!3�C�!8�9� ����K� ��G�G� ����K�		!�	���r�3�7�7�2�2�D�9����Q�\�\�#�"4�"4�S�"9�:���G�G�	rc�@�d}d}td|zdz|zdz�}|j}|j|d�}|j|d�}|j|j	d�duxr|j
xr
|j
�|j
|d�|j|j|j	d��xr|j
xr
|j
�|j
|d�|j|j|j	d��xr<|j|j	d	��xr|j
xr|j
�|j|d�}d|_	|j|�|j|j|j	d	���|j|j
�|j|j
�|j|j
�|j|j	d�du�|j|tjjd
�|j|j|j	d	��xr|j
�y�Nzhttp://xml.python.org/ns1r_z<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>rxryr^r�r�)r	r^r}r5r�r��setIdAttributeNSrv�createAttributeNSr�r�rZrrrO�r2�NS1�NS2rr rxryr�s        r�testSetIdAttributeNSz MinidomTest.testSetIdAttributeNS�sC��)��)���)�+.�/�2)�)�+.�/�25�5�6��
����
�
!�
!�#�t�
,��
�
!�
!�#�t�
,�����S�'�'��,��4� ����K� ����K�	!�	
���3��%����Q�\�\�#�"4�"4�S�"9�:� ��G�G� ����K�	!�	
���3��%����Q�\�\�#�"4�"4�S�"9�:���L�L��!3�!3�C�!8�9���G�G���G�G�	�
�
"�
"�3��
-�����	���2�����Q�\�\�#�"4�"4�S�"9�:�;�������[�!����R�W�W��������[�!����S�'�'��,��4�5����r�3�7�7�2�2�D�9����Q�\�\�#�"4�"4�S�"9�:���G�G�	rc�<�d}d}td|zdz|zdz�}|j}|j|d�}|j|d�}|j|j	d�duxr|j
xr
|j
�|j
|�|j|j|j	d��xr|j
xr
|j
�|j
|�|j|j|j	d��xr<|j|j	d	��xr|j
xr|j
�|j|d�}d|_	|j|�|j|j|j	d	���|j|j
�|j|j
�|j|j
�|j|j	d�du�|j|tjjd
�|j|j|j	d	��xr|j
�yr�)r	r^r}r5r�r��setIdAttributeNodervr�r�r�rZrrrOr�s        r�testSetIdAttributeNodez"MinidomTest.testSetIdAttributeNodes?��)��)���)�+.�/�2)�)�+.�/�25�5�6��
����
�
!�
!�#�t�
,��
�
!�
!�#�t�
,�����S�'�'��,��4� ����K� ����K�	!�	
���R� ����Q�\�\�#�"4�"4�S�"9�:� ��G�G� ����K�	!�	
���R� ����Q�\�\�#�"4�"4�S�"9�:���L�L��!3�!3�C�!8�9���G�G���G�G�	�
�
"�
"�3��
-�����	���2�����Q�\�\�#�"4�"4�S�"9�:�;�������[�!����R�W�W��������[�!����S�'�'��,��4�5����r�3�7�7�2�2�D�9����Q�\�\�#�"4�"4�S�"9�:���G�G�	rc��||fg}|�r;|j�\}}|j|j|j�|jt|j�t|j��|j|j
|j
�|j
|j|��|j
|j|��|jtjk(�r�t|j�t|j�t|j�t|j�|jt|j�t|j��|jt|j�t|j��tt|j��D]�}|jj|�}|jj|�}|j|j|j�|j|j|j�|j|j |j �|j#||f���tt|j��D]�}|jj|�}	|jj|�}
|j|	j$|
j$�|j|	j|
j�|j|	j |
j �|j#|	|
f���|jtj&k7rT|j)|j*j|��|j)|j*j|��tt|j��D]/}|j#|j||j|f��1|r��:yyr0)�poprTrLrlrir�r=rvrr�rrr�r*rUr�r�r r��
DOCUMENT_NODEr1r+)r2rr��stack�n1�n2r��no1�no2r�r�s           r�assert_recursive_equalz"MinidomTest.assert_recursive_equal>s����t��
����Y�Y�[�F�B�����R�[�[�"�+�+�6����S����/��R�]�]�1C�D����R�[�[�"�+�+�6����R�]�]�2�.�/����R�]�]�2�.�/��{�{�d�5�5�5��B�K�K� ��B�K�K� ��B�L�L�!��B�L�L�!�� � ��R�[�[�!1�3�r�{�{�3C�D�� � ��R�\�\�!2�C����4E�F��s�2�<�<�0�1�A��,�,�+�+�A�.�C��,�,�+�+�A�.�C��$�$�S�X�X�s�x�x�8��$�$�S�\�\�3�<�<�@��$�$�S�\�\�3�<�<�@��L�L�#�s��,�2��s�2�;�;�/�0�A����)�)�!�,�B����)�)�!�,�B��$�$�R�_�_�b�o�o�F��$�$�R�[�[�"�+�+�>��$�$�R�[�[�"�+�+�>��L�L�"�b��*�
1��{�{�d�0�0�0����� 0� 0� ;� ;�C� @�A����� 0� 0� ;� ;�D� A�B��3�r�}�}�-�.�����b�m�m�A�.��
�
�a�0@�A�B�/�Arc���tt�}tdtjdz�D]?}tj
||�}tj|�}|j||��Ay)Nrdre)r	�sampler��pickle�HIGHEST_PROTOCOL�dumps�loadsr�)r2r�protor9r�s     r�testPickledDocumentzMinidomTest.testPickledDocumentcsU���&�!���1�f�5�5��9�:�E����S�%�(�A��<�<��?�D��'�'��T�2�;rc�p�tt�}tj|�}|j	||�yr0)r	r��copy�deepcopyr�r�s   r�testDeepcopiedDocumentz"MinidomTest.testDeepcopiedDocumentjs*���&�!���}�}�S�!���#�#�C��.rc��t�}|j|jd��|jt|j
�y)Nzfoo--bar)rr~r�r��
ValueErrorrpr?s  r�(testSerializeCommentNodeWithDoubleHyphenz4MinidomTest.testSerializeCommentNodeWithDoubleHyphenos5��(�*������)�)�*�5�6����*�c�i�i�0rc��td�}t|j��}|j|jtj
jk(�y)Nz$<element xmlns=''>
<foo/>
</element>)r	rpr5rPrrrOr�s   r�testEmptyXMLNSValuezMinidomTest.testEmptyXMLNSValueusB���/�0���3�9�9�;�'�����T�&�&�#�'�'�*A�*A�A�Brc�z�|jttf�5td�ddd�y#1swYyxYw)NzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)r�r�rr	r�s r�!testExceptionOnSpacesInXMLNSValuez-MinidomTest.testExceptionOnSpacesInXMLNSValue{s.��
�
�
�
�J�7�
8��(�
�9�
8�
8�s�1�:c��tt�}|jjd�d}|j	t
jj|j|�t|j�}|j|jd�t|j�}|j||dz
k(�y)N�TITLErre)rrEr^r]r�rrr�rqrlrir1)r2r�	title_tag�num_children_before�num_children_afters     r�testDocRemoveChildzMinidomTest.testDocRemoveChild�s����G�n���'�'�<�<�W�E�a�H�	����3�7�7�.�.�����K�!�#�.�.�1��������q�)�*� ����0�����*�.A�A�.E�E�Frc�T�tt�}|jdd�}d|_y)Nrlrm�crash)rrErpr�)r2rrPs   r�"testProcessingInstructionNameErrorz.MinidomTest.testProcessingInstructionNameError�s&���G�n��
�
,�
,�S�#�
6����rc��d}t|�}tj�}|j|�|j	|j�|�y�N�E<?xml version="1.0" ?><curriculum status="public" company="example"/>)r	�io�StringIO�writexmlrT�getvalue)r2�xml_strr�outputs    r�test_minidom_attribute_orderz(MinidomTest.test_minidom_attribute_order�s?��Y���'�"����������V��������*�G�4rc�^�d}t|�}|j|j�|�yr�)r	rTrp�r2r�rs   r�"test_toxml_with_attributes_orderedz.MinidomTest.test_toxml_with_attributes_ordered�s'��Y���'�"���������g�.rc�^�d}t|�}|j|j�d�y)Nr�zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
�r	rTr;r�s   r�(test_toprettyxml_with_attributes_orderedz4MinidomTest.test_toprettyxml_with_attributes_ordered�s/��Y���'�"��������*�M�	Nrc�^�d}t|�}|j|j�d�y)N�C<?xml version="1.0" ?><root><node><![CDATA[</data>]]></node></root>zH<?xml version="1.0" ?>
<root>
	<node><![CDATA[</data>]]></node>
</root>
r�r�s   r�test_toprettyxml_with_cdataz'MinidomTest.test_toprettyxml_with_cdata�s-��W���'�"��������*�%�	&rc��d}t|�}|j|jd�djd�t|j	��}|j|jd�djd�y)Nr�r8rz</data>)r	r;r]rnr;)r2r��dom1r�s    r�test_cdata_parsingzMinidomTest.test_cdata_parsing�sp��W���7�#�����D�5�5�f�=�a�@�K�K�Y�W��4�+�+�-�.�����D�5�5�f�=�a�@�K�K�Y�WrN)�Test)�rrrr5r;r@rJrMrXrZr`rwr�r�r�r�requires_resourcer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrr!r)r,r.r0r2r7r=rBrErHrQrSrUrWrYr^r`rbrdrfrhrjrlrnrqrsrzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!r#r(r0r3r6r8r;rBrHrKr
rVr\rcrerhrtrvr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr.r.7s���(�B�*�
4�4�6�4��)�V+��"��W���u�%�(�&�(�*=����*�"�)�)�
�
���*	�	���$1�$�L
�
�
�<��)�
�)�
=�"����%�$�:�L�	E�I�
@�2� �!�'��(�)��#��$�%�&�$�&�K�9�'�&�+�+�0�$�'�.�0�3�"�"�/�?�(
���
A�C�2 4�DF�
0�I�
P�
C�@�*�*�M�C�@�+�5�2�-(�^+��2�*�$�$�(�*<�~�B��
�
��.� ���0:�K�Z)�V�"+�HC�/�:@�B�>"�H"�H#C�J3�/�
1�C��G��5�/�
N�&�Xrr.�__main__r0)r�r�r�r�r3r�unittest�xml.dom.minidomrrrrrrr	r
�xml.parsers.expatr�findfilerEr�rr'r,�TestCaser.r�mainr�rr�<module>r�s����
��	����M�M�0�(��'�
�
�:�m�
<��7��G�� �|X�(�#�#�|X�|3�z���H�M�M�O�r