Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_minidom.cpython-311.opt-1.pyc
�

�Ke=���ddlZddlZddlZddlmZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZejdd���Zd	Zdd
�Zd�Zd�ZGd
�dej��Zedkrej��dSdS)�N)�support)�parse�Attr�Node�Document�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�H�t���dd|��S)N�doc)r	�createDocument)�doctypes �;/usr/local/apps/python3/lib/python3.11/test/test_minidom.py�create_doc_without_doctypers ���!�!�0�0��u�g�F�F�F�c��t���ddd��}g|j_g|j_t
jj�ddd��}|jj�	|��t
jj�
dddd��}d|_d|_d|_
|jj�	|��|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�J�G��G����G����w��'�'�
�t�(L�N�N�H����!�!�(�+�+�+�
�W�_�
#�
#�K��$G�$1�3�3�F��F�N��F�O�&�F����� � ��(�(�(��Nrc��t��}t|��}||j�d��_||j�d��_|S�Nr)r&rr�item�
ownerDocumentr)rrs  r�create_doc_with_doctyper+0sQ��%�'�'�G�
$�W�
-�
-�C�-0�G����!���*�.1�G����1���+��Jrc�x�eZdZd�d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�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/�Z0d0�Z1d1�Z2d2�Z3d3�Z4d4�Z5d5�Z6d6�Z7d7�Z8d8�Z9d9�Z:d:�Z;d;�Z<d<�Z=d=�Z>d>�Z?d?�Z@d@�ZAdA�ZBdB�ZCdC�ZDdD�ZEdE�ZFdF�ZGdG�ZHdH�ZIdI�ZJdJ�ZKdK�ZLdL�ZMdM�ZNdN�ZOdO�ZPdP�ZQdQ�ZRdR�ZSdS�ZTdT�ZUdU�ZVdV�ZWdW�ZXdX�ZYdY�ZZdZ�Z[d[�Z\d\�Z]d]�Z^d^�Z_d_�Z`d`�Zada�Zbdb�Zcdc�Zddd�Zede�Zfdf�Zgdg�Zhdh�Zidi�Zjdj�Zkdk�Zldl�Zmdm�Zndn�Zodo�Zpdp�Zqdq�Zrdr�Zsds�Ztdt�Zudu�ZvGdv�dw��Zwdx�Zxdy�Zydz�Zzd{�Z{d|�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�S)��MinidomTest�Testc�2�|�||��dS�N)�
assertTrue)�self�test�testnames   r�confirmzMinidomTest.confirm8s������h�'�'�'�'�'rc�T�|j}|�||kd|�d|����dS)Nzlooking for z, found )�	wholeTextr5)r2�node�s�ts    r�checkWholeTextzMinidomTest.checkWholeText;s4���N�����Q�!�V�V�1�1�1�a�a�@�A�A�A�A�Arc��t��}|�|j��|�tj��dSr0)r�assertFalse�async_�r2rs  r�testDocumentAsyncAttrz!MinidomTest.testDocumentAsyncAttr?s=���j�j�������$�$�$������)�)�)�)�)rc��ttd��5}t|��}|���|�t|t����ddd��dS#1swxYwYdS)N�rb��open�tstfiler�unlinkr5�
isinstancer�r2�filers   r�testParseFromBinaryFilez#MinidomTest.testParseFromBinaryFileDs���
�'�4�
 �
 �	4�D���+�+�C��J�J�L�L�L��L�L��C��2�2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�AA/�/A3�6A3c��ttdd���5}t|��}|���|�t|t����ddd��dS#1swxYwYdS)N�rz
iso-8859-1)r"rCrHs   r�testParseFromTextFilez!MinidomTest.testParseFromTextFileJs���
�'�3��
6�
6�
6�	4�$���+�+�C��J�J�L�L�L��L�L��C��2�2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�AA1�1A5�8A5c��tdddd��}|�|jd��|�|jd��|�|jd��|�|jd��dS)N�qName�namespaceURI�	localName�prefix�r�assertEqual�namerPrRrQ�r2�attrs  r�testAttrModeSetsParamsAsAttrsz)MinidomTest.testAttrModeSetsParamsAsAttrsPs|���G�^�[�(�C�C�������G�,�,�,�����*�N�;�;�;������h�/�/�/�������5�5�5�5�5rc��tdddd��}|�|jd��|�|jd��|�|jd��|�|j|j��dS)NrOrPrRrSrVs  r� testAttrModeSetsNonOptionalAttrsz,MinidomTest.testAttrModeSetsNonOptionalAttrsWs~���G�^�T�8�<�<�������G�,�,�,�����*�N�;�;�;������h�/�/�/��������3�3�3�3�3rc���tt��}|�|�d��|j�d��k��|���dS)N�LI)rrEr5�getElementsByTagName�documentElementrF�r2rs  r�testGetElementsByTagNamez$MinidomTest.testGetElementsByTagName^s`���G�n�n�����S�-�-�d�3�3��#�8�8��>�>�?�	@�	@�	@��
�
�����rc���td��}|j}|jd}|�d��}|�||��|�t
|j��dko�|jjdko|jd|uop|j�d��|uoT|jd|uoE|j�d��|uo)|j	|uo |j
|uo|���dkd��|�d��}|�|d��|�t
|j��dko�|jjdko|jd|uop|j�d��|uoT|jd|uoE|j�d��|uo)|j
|uo |j|uo|���d	kd��|�d
��}|�||��|�t
|j��dko�|jjdko|jd|uop|j�d��|uoT|jd|uoE|j�d��|uo)|j
|uo |j|uo|���dkd��|���dS)
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>)rr^�
childNodes�
createElement�insertBeforer5�len�lengthr)�
firstChild�	lastChild�toxml�previousSibling�nextSiblingrF)r2r�root�elem�nelem�nelem2s      r�testInsertBeforezMinidomTest.testInsertBeforedsn���-�.�.���"����q�!���!�!�)�,�,�����%��&�&�&����S���)�)�Q�.�B��O�*�a�/�B��O�A�&�%�/�B��O�(�(��+�+�u�4�B��O�A�&�$�.�	B�
�O�(�(��+�+�t�3�B��O�u�,�
B��N�d�*�B��J�J�L�L�$A�A�D�		F�		F�		F��!�!�)�,�,�����%��&�&�&����S���)�)�Q�.�L��O�*�a�/�L��O�A�&�$�.�L��O�(�(��+�+�t�3�L��O�A�&�%�/�	L�
�O�(�(��+�+�u�4�L��N�e�+�
L��)�T�1�L��J�J�L�L�$K�K�D�		F�		F�		F��"�"�5�)�)�����&�%�(�(�(����S���)�)�Q�.�	>��O�*�a�/�	>��O�A�&�&�0�	>��O�(�(��+�+�v�5�	>��O�A�&�%�/�		>�
�O�(�(��+�+�u�4�	>��&�%�/�
	>��)�V�3�	>��J�J�L�L�=�>�D�
	F�
	F�
	F�	�
�
�����rc��td��}|�d��}|�d��}|�d��}|�d��}|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�R�|���\}}}}}}|j�|d��|�t	|jj��||||fkd��|���|���|���\}}}}}}|j�||��|�t	|jj��||||fkd��|���|���dS)NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))r�r^rkr5�tuplerirFr�s       r�testInsertBeforeFragmentz$MinidomTest.testInsertBeforeFragment�s ��&*�&F�&F�&H�&H�#��T�2�r�2�t���(�(��t�4�4�4����U�3�.�9�:�:��B��B�'�(�5�	7�	7�	7�	
���
�
�
��
�
����&*�&F�&F�&H�&H�#��T�2�r�2�t���(�(��t�4�4�4����U�3�.�9�:�:��"�b�$�'�(�5�	7�	7�	7�	
���
�
�
��
�
�����rc�h�tt��}|j�|�d����|�|jjdjdk��|�|jjdjdk��|�	��dS)N�Hello���z#comment)
rrEr^r~�
createCommentr5ri�nodeName�datarFr_s  r�testAppendChildzMinidomTest.testAppendChild�s����G�n�n����'�'��(9�(9�'�(B�(B�C�C�C����S�(�3�B�7�@�J�N�O�O�O����S�(�3�B�7�<��G�H�H�H��
�
�����rc�*�|���\}}}}}}|j�|��|�t	|jj��||||fkd��|���|���dS)NzappendChild(<fragment>))r�r^r~r5r�rirFr�s       r�testAppendChildFragmentz#MinidomTest.testAppendChildFragment�s���&*�&F�&F�&H�&H�#��T�2�r�2�t���'�'��-�-�-����U�3�.�9�:�:��B��B�'�(�.�	0�	0�	0�	
���
�
�
��
�
�����rc�R�|���\}}}}}}|j�||��|���|�t|jj��|||fkd��|���|���dS)NzreplaceChild(<fragment>))r�r^�replaceChildrFr5r�rir�s       r�testReplaceChildFragmentz$MinidomTest.testReplaceChildFragment�s���&*�&F�&F�&H�&H�#��T�2�r�2�t���(�(��t�4�4�4����
�
�
����U�3�.�9�:�:�r�2�r�l�J�*�	,�	,�	,����
�
�
��
�
�����rc��t��}|�d��}|�d��}|�tjj|j|��|�|��|�tjj|j||��|�tjj|j	||��|j
}|�tjj|j|��|�tjj|j|��|�|��|�
��dS)Nrc�text)rrjr}�assertRaisesrr�HierarchyRequestErrr~rkr��
attributes�setNamedItem�setNamedItemNSrF)r2rrtr��nodemaps     r�testLegalChildrenzMinidomTest.testLegalChildren�s2���j�j��� � ��+�+���!�!�&�)�)�����#�'�5�s���M�M�M�����������#�'�5�s�7G���	 �	 �	 ����#�'�5�s�7G���	 �	 �	 ��/�����#�'�5�w�7K��	 �	 �	 ����#�'�5�w�7M��	 �	 �	 �	
��������
�
�����rc���t��}|�d��}|j}d|d<|�d��}|�|j|ud��|�|j|ud��|�|jdkd��|�|jdkd��|�	��|�	��dS)	Nrcrgr{rz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
rrjr�r)r5r*�ownerElement�value�	nodeValuerF)r2rrt�attrs�as     r�testNamedNodeMapSetItemz#MinidomTest.testNamedNodeMapSetItem�s����j�j��� � ��+�+�������e���J�J�q�M�M�����Q�_��+�?�	A�	A�	A����Q�^�t�+�>�	@�	@�	@����Q�W��%�7�	9�	9�	9����Q�[�E�)�;�	=�	=�	=����
�
�
��
�
�����rc��tt��}|�|��|�|�d����|�|jdj��|���dS)Nr{r�)rrEr5r~r�rirFr_s  r�testNonZerozMinidomTest.testNonZero�so���G�n�n�����S��������)�)�%�0�0�1�1�1�������+�6�6�7�7�7��
�
�����rc��tt��}|�|j��|���|�|j��dSr0)rrEr1rirFr=r_s  r�
testUnlinkzMinidomTest.testUnlink�sJ���G�n�n�������'�'�'��
�
���������(�(�(�(�(rc���tt��5}|�|j��ddd��n#1swxYwY|�|j��dSr0)rrEr1rir=r_s  r�testContextzMinidomTest.testContext�s���
�7�^�^�	,�s��O�O�C�N�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,������(�(�(�(�(s�<�A�Ac���t��}|�|�d����|�|j��|���dS�N�abc)rr~rjr5r^rFr_s  r�testElementzMinidomTest.testElement�sQ���j�j������)�)�%�0�0�1�1�1����S�(�)�)�)��
�
�����rc��td��}|j}|�dd��|�|���dkd��|�d��}|�|j|ud��|�|j|jud��|���dS)N�<abc/>�spam�jam2�<abc spam="jam2"/>�testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	rr^�setAttributer5rp�getAttributeNoder*r�rF)r2r�elr�s    rr�zMinidomTest.testAAAs����(�#�#��
�
 ��
�����'�'�'����R�X�X�Z�Z�#7�7��C�C�C�����'�'�����Q�_��+�3�	5�	5�	5����Q�^�s�':�:�2�	4�	4�	4��
�
�����rc�
�td��}|j}|�dd��|�dd��|�|���dkd��|���dS)Nr�r��jamr�r��testAAB)rr^r�r5rprF�r2rr�s   rr�zMinidomTest.testAABsr���(�#�#��
�
 ��
�����&�&�&�
�����'�'�'����R�X�X�Z�Z�#7�7��C�C�C��
�
�����rc���t��}|�|�d����}|�dd��|�|�d��dk��|�|jdjdk��|�dd��|�|�d��dk��|�|jdjdk��|�t|j��dk��|�dd��|�|�d��dk��|�|jdjdk��|�t|j��dk��|�	��dS)Nr��def�ghi�jkl�mnord�newval)
rr~rjr�r5�getAttributer�r�rlrF�r2r�childs   r�testAddAttrzMinidomTest.testAddAttrs����j�j������ 1� 1�%� 8� 8�9�9��
���5�%�(�(�(����U�'�'��.�.�%�7�8�8�8����U�%�e�,�2�e�;�<�<�<�
���5�%�(�(�(����U�'�'��.�.�%�7�8�8�8����U�%�e�,�2�e�;�<�<�<����S��)�*�*�a�/�0�0�0�
���5�(�+�+�+����U�'�'��.�.�(�:�;�;�;����U�%�e�,�2�h�>�?�?�?����S��)�*�*�a�/�0�0�0��
�
�����rc���t��}|�|�d����}|�t	|j��dk��|�dd��|�t	|j��dk��|jd=|�t	|j��dk��|���dS)Nr�rr�r�re)rr~rjr5rlr�r�rFr�s   r�testDeleteAttrzMinidomTest.testDeleteAttr-s����j�j������ 1� 1�%� 8� 8�9�9�����S��)�*�*�a�/�0�0�0�
���5�%�(�(�(����S��)�*�*�a�/�0�0�0���U�#����S��)�*�*�a�/�0�0�0��
�
�����rc���t��}|�|�d����}|�dd��|�t|j��dk��|�tj	j
|jd��|�d��|�t|j��dk��|���dS)Nr�r�r�rer{r)
rr~rjr�r5rlr�r�rr�NotFoundErr�removeAttributerFr�s   r�testRemoveAttrzMinidomTest.testRemoveAttr8s����j�j������ 1� 1�%� 8� 8�9�9��
���5�%�(�(�(����S��)�*�*�a�/�0�0�0����#�'�-�u�/D�e�L�L�L�
���e�$�$�$����S��)�*�*�a�/�0�0�0��
�
�����rc�(�t��}|�|�dd����}|�ddd��|�ddd��|�t
jj|jdd��|�	t|j��dk��|�dd��|�	t|j��d	k��|���dS)
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.testRemoveAttrNSCs���j�j������#�#�$;�\�J�J�L�L��
���0�.�0G�	I�	I�	I�
���4�6F��N�N�N����#�'�-�u�/F��*�	,�	,�	,����S��)�*�*�a�/�0�0�0�
��� 7��C�C�C����S��)�*�*�a�/�0�0�0��
�
�����rc�^�t��}|�|�d����}|�dd��|�t|j��dk��|�d��}|�tj
j|jd��|�
||�|����|�t|j��dko|�d��du��t��}|�|�d����}|�d��}|�tj
j|j|��|���dS)Nr{r�r�rer)rr~rjr�r5rlr�r�r�rrr��removeAttributeNode�assertIsrF)r2rr�r8�dom2�child2�node2s       r�testRemoveAttributeNodez#MinidomTest.testRemoveAttributeNodeQsv���j�j������ 1� 1�%� 8� 8�9�9��
���6�5�)�)�)����S��)�*�*�a�/�0�0�0��%�%�f�-�-�����#�'�-�u�/H��	�	�	��
�
�d�E�5�5�d�;�;�<�<�<����S��)�*�*�a�/�;��*�*�6�2�2�d�:�	<�	<�	<��z�z���!�!�$�"4�"4�U�";�";�<�<���'�'��/�/�����#�'�-�v�/I��	�	�	��
�
�����rc���t��}|�|�d����}|�dd��|�|�d����dS)Nr{r�r�)rr~rjr�r5�hasAttributer�s   r�testHasAttributezMinidomTest.testHasAttributecsf���j�j������ 1� 1�%� 8� 8�9�9��
���6�5�)�)�)����U�'�'��/�/�0�0�0�0�0rc�r�td��}|j}|�dd��|�t	|j��dk��|�dd��|�d��|�t	|j��dko^|jdjdkoH|jdjdko2|�	d��dko|�
d��j��d|jd<|�t	|j��dkoV|jdjdko@|jdjdko*|�	d��dko|jdj��|�dd��|�t	|j��dko�|jdjdkos|jdjdko]|�	d��dkoD|jdjdko.|jdjdko|�	d��dk��d	|jd<|�t	|j��dko�|jdjdkos|jdjdko]|�	d��dkoD|jdjd	ko.|jdjd	ko|�	d��d	k��|���dS)
Nr�r�r�re�bam�ham�spam2rd�bam2)
rr^r�r5rlr��setIdAttributer�r�r�r��isIdrFr�s   r�testChangeAttrzMinidomTest.testChangeAttrisD���(�#�#��
�
 ��
�����&�&�&����S���'�'�1�,�-�-�-�
�����&�&�&�	���&�!�!�!����S���'�'�1�,�5��M�&�)�/�5�8�5��M�&�)�3�u�<�5��O�O�F�+�+�u�4�5��'�'��/�/�4�		6�	6�	6�
!&��
�f�����S���'�'�1�,�/��M�&�)�/�5�8�/��M�&�)�3�u�<�/��O�O�F�+�+�u�4�/��M�&�)�.�		0�	0�	0�
	�����'�'�'����S���'�'�1�,�6��M�&�)�/�5�8�6��M�&�)�3�u�<�6��O�O�F�+�+�u�4�6��M�'�*�0�E�9�	6�
�M�'�*�4��=�6��O�O�G�,�,��5�
	7�	7�	7�"(��
�g�����S���'�'�1�,�7��M�&�)�/�5�8�7��M�&�)�3�u�<�7��O�O�F�+�+�u�4�7��M�'�*�0�F�:�	7�
�M�'�*�4��>�7��O�O�G�,�,��6�
	8�	8�	8�	�
�
�����rc��dSr0��r2s r�testGetAttrListzMinidomTest.testGetAttrList�����rc��dSr0r�r�s r�testGetAttrValueszMinidomTest.testGetAttrValues�r�rc��dSr0r�r�s r�testGetAttrLengthzMinidomTest.testGetAttrLength�r�rc���t��}|�|�dd����}|�|�d��d��dS)Nr�r��missing�)rr~r�rTr�r�s   r�testGetAttributezMinidomTest.testGetAttribute�s^���j�j�������� 7��F�F�H�H������+�+�I�6�6��;�;�;�;�;rc���t��}|�|�dd����}|�ddd��|�|�dd��d��|�|�dd��d��|�|�d����}|�|�dd	��d��dS)
Nr�r�r�r��python�otherr�r�r�)rr~r�r�rT�getAttributeNSrj)r2rr�r�s    r�testGetAttributeNSzMinidomTest.testGetAttributeNS�s���j�j������#�#�$;�\�J�J�L�L��
���0�.�0G�	I�	I�	I�����-�-�.A�8�L�L�#�	%�	%�	%�����-�-�.A�7�K�K��	�	�	��"�"�3�#4�#4�U�#;�#;�<�<������.�.�/F�	�R�R��	�	�	�	�	rc��dSr0r�r�s r�testGetAttributeNodez MinidomTest.testGetAttributeNode�����rc�r�d}t|��}|�dd��}|�t|��dkoT|djdkoC|djdko2|djdko!|djdko|djdk��|�	��dS)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�n���*�*�+H�+3�5�5�����S��Z�Z�1�_�:��!�H�)�-J�J�:��!�H�&�(�2�:��!�H�O�y�0�:��!�H�$�(8�8�	:�
�!�H�%�)9�9�	;�	;�	;�	�
�
�����rc�~�|�||��}|�t|��dk��dSr()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�V�td��}|�|dd��|�|dd��|�|dd��td��}|�|dd��|�|dd��|�|d	d
��dS)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)rr	r?s  r�+testGetEmptyNodeListFromElementsByTagNameNSz7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNS�s����(�#�#���B�B��5�{�	D�	D�	D��B�B���g�	�	�	��B�B��5�s�	<�	<�	<��O�P�P���B�B��.��	=�	=�	=��B�B���k�	#�	#�	#��B�B��6��	=�	=�	=�	=�	=rc��t��}|�|�d����}t|��}t	|��}|�||k��|���dSr��rr~rj�repr�strr5rF�r2rr��string1�string2s     r�testElementReprAndStrz!MinidomTest.testElementReprAndStr��h���j�j��
�_�_�S�.�.�u�5�5�
6�
6���r�(�(���b�'�'�����W��'�(�(�(��
�
�����rc��t��}|�|�d����}t|��}t	|��}|�||k��|���dSr�rrs     r�testElementReprAndStrUnicodez(MinidomTest.testElementReprAndStrUnicode�rrc�8�t��}|�|�dd����}t|��}t	|��}|�||k��|�d|v��|���dS)Nzhttp://www.slashdot.orgz	slash:abc)rr~r�rrr5rFrs     r�testElementReprAndStrUnicodeNSz*MinidomTest.testElementReprAndStrUnicodeNS�s����j�j��
�_�_���� 9�;�G�G�I�I���r�(�(���b�'�'�����W��'�(�(�(����[�G�+�,�,�,��
�
�����rc�,�t��}|�|�d����}|�dd��}|�t|��t
|��k��|���dS)Nr�r�)rr~rjr�r5rrrF)r2rr�r8s    r�testAttributeReprzMinidomTest.testAttributeRepr�sq���j�j��
�_�_�S�.�.�u�5�5�
6�
6�����u�e�,�,�����S��Y�Y�$�t�*�*�,�-�-�-��
�
�����rc��dSr0r�r�s r�testTextNodeReprzMinidomTest.testTextNodeRepr�r�rc��d}t|��}|���}|���|�||k��dS)Nz <?xml version="1.0" ?><a b="c"/>)rrprFr5�r2rr�domstrs    r�testWriteXMLzMinidomTest.testWriteXML�sJ��0���#�����������
�
�������S�F�]�#�#�#�#�#rc���d}t|��}|�d���}|���|�||�dd��k��dS)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)�newl�
)r�toprettyxmlrFr5�replacer"s    r�testAltNewlinezMinidomTest.testAltNewline�s_��4���#�������f��-�-���
�
�������V�s�{�{�4��8�8�8�9�9�9�9�9rc�:�d}|�td�����|dz��|�td�����|dz��|�td�����|dz��|�td�����|d	z��|�td
�����|dz��dS)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>
)rTrr()r2�decls  r� test_toprettyxml_with_text_nodesz,MinidomTest.test_toprettyxml_with_text_nodess5��)������Z�0�0�<�<�>�>���,�	.�	.�	.�����%7�8�8�D�D�F�F�� >�>�	@�	@�	@�����%7�8�8�D�D�F�F�� >�>�	@�	@�	@�����%>�?�?�K�K�M�M�� E�E�	G�	G�	G�����%?�@�@�L�L�N�N�� J�J�	L�	L�	L�	L�	Lrc�p�t��}|�d��}|�|�d����|�|�d����|�|��d}|�|���|dz��dS)Nrt�TEXTr,z<elem>
	TEXT
	TEXT
</elem>
)rrjr~r}rTr()r2rrtr.s    r�)test_toprettyxml_with_adjacent_text_nodesz5MinidomTest.test_toprettyxml_with_adjacent_text_nodess����j�j��� � ��(�(������+�+�F�3�3�4�4�4�����+�+�F�3�3�4�4�4��������)��������*�*�� C�C�	E�	E�	E�	E�	Erc�t�dD]�}t|��}t|�����}|�|�d��djd���|�d��djd�������dS)N)r-z<A><B>C</B></A>�Br)rr(rTr]rirp)r2rrr�s    r�/test_toprettyxml_preserves_content_of_text_nodez;MinidomTest.test_toprettyxml_preserves_content_of_text_nodes���2�	I�	I�C��c�"�"�C��s���0�0�1�1�D�����(�(��-�-�a�0�;�A�>�D�D�F�F��)�)�#�.�.�q�1�<�Q�?�E�E�G�G�
I�
I�
I�
I�	I�	Irc��td��}|jj}|�|jdko�|jdko�|jdko|jtj	koj|j
duoa|���oLt|j
��dko4|jduo+|jduo"|jduo|jt"jjk��dS)Nz<e><?mypi 	
 data 	
 ?></e>�mypizdata 	
 r)rr^rnr5�targetr�r��nodeTyper�PROCESSING_INSTRUCTION_NODEr��
hasChildNodesrlrirorQrPrr�EMPTY_NAMESPACE)r2r�pis   r�testProcessingInstructionz%MinidomTest.testProcessingInstruction&s���;�<�<��
�
 �
+�����R�Y�&�(�
?��G�|�+�
?��K�6�)�
?��K�4�#C�C�
?��M�T�)�	
?�
�(�(�*�*�*�
?���
�&�&�!�+�
?��M�T�)�
?��L�D�(�
?��L�D�(�
?��O�s�w�'>�>�
	@�
	@�
	@�
	@�
	@rc��dSr0r�r�s r�testProcessingInstructionReprz)MinidomTest.testProcessingInstructionRepr5r�rc��dSr0r�r�s r�testTextReprzMinidomTest.testTextRepr7r�rc��dSr0r�r�s r�
testWriteTextzMinidomTest.testWriteText9r�rc��dSr0r�r�s r�testDocumentElementzMinidomTest.testDocumentElement;r�rc���td��}|�d��}|�tjj|j|��|���|���dS)Nry�extra)rrjr�rrr�r~rF�r2rrts   r�testTooManyDocumentElementsz'MinidomTest.testTooManyDocumentElements=s_���(�#�#��� � ��)�)�����#�'�5�s���M�M�M����
�
�
��
�
�����rc��dSr0r�r�s r�testCreateElementNSzMinidomTest.testCreateElementNSEr�rc��dSr0r�r�s r�testCreateAttributeNSz!MinidomTest.testCreateAttributeNSGr�rc��dSr0r�r�s r�	testParsezMinidomTest.testParseIr�rc��dSr0r�r�s r�testParseStringzMinidomTest.testParseStringKr�rc��dSr0r�r�s r�testCommentzMinidomTest.testCommentMr�rc��dSr0r�r�s r�testAttrListItemzMinidomTest.testAttrListItemOr�rc��dSr0r�r�s r�testAttrListItemszMinidomTest.testAttrListItemsQr�rc��dSr0r�r�s r�testAttrListItemNSzMinidomTest.testAttrListItemNSSr�rc��dSr0r�r�s r�testAttrListKeyszMinidomTest.testAttrListKeysUr�rc��dSr0r�r�s r�testAttrListKeysNSzMinidomTest.testAttrListKeysNSWr�rc�:�td��}|j}|j}|�d��}|�d��}|�|�|����|�tj	j
|jd��dS)Nz<doc a=''/>r�)rr^r�r��removeNamedItemr5�
isSameNoder�rrr��r2rrr��a1�a2s      r�testRemoveNamedItemzMinidomTest.testRemoveNamedItemYs����-�(�(��������
�
�
��
$�
$��
�
"�
"�3�
'�
'�����R�]�]�2�&�&�'�'�'����#�'�-�u�/D�c�J�J�J�J�Jrc�@�td��}|j}|j}|�dd��}|�dd��}|�|�|����|�tj	j
|jdd��dS)Nz.<doc xmlns:a='http://xml.python.org/' a:b=''/>zhttp://xml.python.org/�b)rr^r��getAttributeNodeNS�removeNamedItemNSr5rar�rrr�rbs      r�testRemoveNamedItemNSz!MinidomTest.testRemoveNamedItemNSbs����J�K�K��������
�
!�
!�":�C�
@�
@��
�
$�
$�%=�s�
C�
C�����R�]�]�2�&�&�'�'�'����#�'�-�u�/F�2�C�	9�	9�	9�	9�	9rc��dSr0r�r�s r�testAttrListValueszMinidomTest.testAttrListValueslr�rc��dSr0r�r�s r�testAttrListLengthzMinidomTest.testAttrListLengthnr�rc��dSr0r�r�s r�testAttrList__getitem__z#MinidomTest.testAttrList__getitem__pr�rc��dSr0r�r�s r�testAttrList__setitem__z#MinidomTest.testAttrList__setitem__rr�rc��dSr0r�r�s r�testSetAttrValueandNodeValuez(MinidomTest.testSetAttrValueandNodeValuetr�rc��dSr0r�r�s r�testParseElementzMinidomTest.testParseElementvr�rc��dSr0r�r�s r�testParseAttributeszMinidomTest.testParseAttributesxr�rc��dSr0r�r�s r�testParseElementNamespacesz&MinidomTest.testParseElementNamespaceszr�rc��dSr0r�r�s r�testParseAttributeNamespacesz(MinidomTest.testParseAttributeNamespaces|r�rc��dSr0r�r�s r�testParseProcessingInstructionsz+MinidomTest.testParseProcessingInstructions~r�rc��dSr0r�r�s r�testChildNodeszMinidomTest.testChildNodes�r�rc��dSr0r�r�s r�testFirstChildzMinidomTest.testFirstChild�r�rc��td��}|j}|�|�����td��}|j}|�|�����dS)Nrbry)rr^r1r;r=)r2rrr��doc2s     r�testHasChildNodeszMinidomTest.testHasChildNodes�sq���-�.�.���!������)�)�+�+�,�,�,��8�$�$���#������+�+�-�-�.�.�.�.�.rc��|j}|j}t|�����}t|�����}|���|���|�||kd��tt
|����D]�}|�|��}	|�|��}
|�|	|
uo?|	j|
jko/|	j	|
j	ko|	j
|
j
ko|	j|
jkd��|�|
j|ud����dS)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)
r��list�keys�sortr5�rangerlr)r�r�rPrQr�)r2�e1�e2r3�attrs1�attrs2�keys1�keys2�ircrds           r�!_testCloneElementCopiesAttributesz-MinidomTest._testCloneElementCopiesAttributes�sE���������V�[�[�]�]�#�#���V�[�[�]�]�#�#��
�
�
����
�
�
�������U�e�^�%O�P�P�P��s�5�z�z�"�"�
	?�
	?�A����Q���B����Q���B��L�L��2��5���B�H�,�5�����4�5���2�?�:�5�����4�K�
M�
M�
M�
�L�L���B�.�=�
?�
?�
?�
?�
	?�
	?rc��td��}|j}|�|��}|�||d|rdpdz��dx|_|_|�dd��|�dd	��||fS)
Nz<doc attr='value'><foo/></doc>�testCloneElement�Deep�Shallow�MODIFIEDrWz	NEW VALUE�added�VALUE)rr^�	cloneNoder�rr�r�)r2�deeprrs�clones     r�_setupCloneElementzMinidomTest._setupCloneElement�s����:�;�;���"�����t�$�$���.�.��%�+�t���/K�)�L�	N�	N�	N�(2�1���t�}����&�+�.�.�.����'�7�+�+�+��E�z�rc��|�d��\}}|�t|j��dko0|jjdko |jduo|���dkd��|���dS)Nrz<doc attr="value"/>�testCloneElementShallow�r�r5rlrirm�
parentNoderprF�r2rr�s   rr�z#MinidomTest.testCloneElementShallow�s����,�,�Q�/�/�
��U����S��)�*�*�a�/�;��$�+�q�0�;��$��,�;��K�K�M�M�%:�:�+�		-�	-�	-�
	�
�
�����rc��|�d��\}}|�t|j��dko0|jjdko |jduo|���dkd��|���dS)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�M�%E�E�(�		*�	*�	*�
	�
�
�����rc�~�td��}|�d��}|�|dud��dS)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!)rr�r5�r2rr�s   r�testCloneDocumentShallowz$MinidomTest.testCloneDocumentShallow�sZ���*�+�+���}�}�Q�������T�T�\�@�	A�	A�	A�	A�	Arc��td��}|�d��}|�|�|��p|�|��d��|�t	|j��t	|j��kd��|�|jjtj	kd��|�|jj
�|��d��|�|j�|j��d��|j��|�|jjtjkd��|�|jj
�|����|�|j�|j����dSdS)	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)
rr�r5rarlrir^r9r�ELEMENT_NODEr*r�DOCUMENT_TYPE_NODEr�s   r�testCloneDocumentDeepz!MinidomTest.testCloneDocumentDeep�s����*�+�+���}�}�Q�������#�.�.��.�.�F�$�/�/�#�2F�2F�G�F�	H�	H�	H����S���(�(�C���,@�,@�@�J�	L�	L�	L����T�)�2�d�6G�G�L�	N�	N�	N����T�)�7�B�B�4�H�H�N�	P�	P�	P�����,�7�7��8L�M�M�M�M�	O�	O�	O��;�"��L�L���.�$�2I�I�M�
O�
O�
O��L�L���3�>�>�t�D�D�E�E�E��L�L�S�[�3�3�D�L�A�A�A�B�B�B�B�B�#�"rc�(�t��}|�d��}|�|du�o|j|jko�|j|jko�|j|jko�|j|jko�t|j��t|j��ko�|j�	t|j����duoot|j
��t|j
��koE|j
�	t|j
����duot|j��dk��tt|j����D]�}|j�	|��}|j�	|��}|�|�
|��o�|�
|��oo|j|jko_|j|jkoO|j|jko?|j|jko/|j|jko|j|jko|j|jk����tt|j
����D]�}|j
�	|��}|j
�	|��}|�|�
|��oE|�
|��o/|j|jko|j|jko|j|jk����dS)Nrer)r&r�r5r�rU�publicId�systemIdrlrr)rrir�ra�notationNamer"r#r!)r2rr�r��se�ce�sn�cns        r�testCloneDocumentTypeDeepOkz'MinidomTest.testCloneDocumentTypeDeepOk�s&��)�+�+���!�!�!�$�$�����U�$�&�	/��N�g�&6�6�	/��J�'�,�.�	/��N�g�&6�6�	/��N�g�&6�6�		/�
���'�'�3�w�/?�+@�+@�@�	/��N�'�'��E�N�(;�(;�<�<��D�
	/����(�(�C��0A�,B�,B�B�	/��O�(�(��U�_�)=�)=�>�>�$�F�	/���(�)�)�Q�.�		0�		0�		0��s�7�+�,�,�-�-�	2�	2�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�0�
2�
2�
2�
2��s�7�,�-�-�.�.�	4�	4�A��"�'�'��*�*�B���%�%�a�(�(�B��L�L�b�m�m�B�/�/�/�3��]�]�2�.�.�.�3���r�{�2�3���r�{�2�3���r�{�2�	
4�
4�
4�
4�	4�	4rc��t��}|j�d��}|�|dud��dS)Nre�testCloneDocumentTypeDeepNotOk�r+rr�r5�r2rr�s   rr�z*MinidomTest.testCloneDocumentTypeDeepNotOksA��%�'�'����%�%�a�(�(�����U�d�]�$D�E�E�E�E�Erc��t��}|�d��}|�|duo�|j|jko�|j|jko�|j|jko�|j|jkot|j��dkog|j�	d��duoKt|j
��dko3|j
�	d��duot|j��dk��dSr()r&r�r5r�rUr�r�rlrr)rri)r2rr�s   r�testCloneDocumentTypeShallowOkz*MinidomTest.testCloneDocumentTypeShallowOk
s��)�+�+���!�!�!�$�$�����U�$�&�	/��N�g�&6�6�	/��J�'�,�.�	/��N�g�&6�6�	/��N�g�&6�6�		/�
���'�'�1�,�	/��N�'�'��*�*�d�2�
	/����(�(�A�-�	/��O�(�(��+�+�t�3�	/���(�)�)�Q�.�		0�		0�		0�		0�		0rc��t��}|j�d��}|�|dud��dS)Nr�!testCloneDocumentTypeShallowNotOkr�r�s   rr�z-MinidomTest.testCloneDocumentTypeShallowNotOksA��%�'�'����%�%�a�(�(�����U�d�]�$G�H�H�H�H�Hrc��td��}td��}|�tjj|j||��dS)Nry)rr�rr�NotSupportedErr�
importNode)r2r��testName�doc1r�s     r�check_import_documentz!MinidomTest.check_import_documentsC���8�$�$���8�$�$�����#�'�1�4�?�D�$�O�O�O�O�Orc�2�|�dd��dS)Nr�testImportDocumentShallow�r�r�s rr�z%MinidomTest.testImportDocumentShallow"����"�"�1�&A�B�B�B�B�Brc�2�|�dd��dS)Nre�testImportDocumentDeepr�r�s rr�z"MinidomTest.testImportDocumentDeep%����"�"�1�&>�?�?�?�?�?rc��t��}t��}|�tjj|j|jd��dSr(�r+rr�rrr�r�r�r2�srcr8s   r�testImportDocumentTypeShallowz)MinidomTest.testImportDocumentTypeShallow(�M��%�'�'��+�-�-�����#�'�1�6�3D��+�q�	*�	*�	*�	*�	*rc��t��}t��}|�tjj|j|jd��dS�Nrer�r�s   r�testImportDocumentTypeDeepz&MinidomTest.testImportDocumentTypeDeep.r�rc�:�td��}|j�d��}|�|d��|�|��}|�|�|����|�|�|����|�|jdu|dz��|�|j�|j��|dz��|�|j	|dz��dS)Nz<doc attr='value'/>rWz: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
rr^r��assertNotEqualr�r5rar�r*�	specified)r2r�r�rrWr�s      r�check_clone_attributez!MinidomTest.check_clone_attribute6s!���/�0�0���"�3�3�F�;�;�����D�$�'�'�'����t�$�$������)�)�$�/�/�/�0�0�0��������/�/�/�0�0�0����U�'�4�/��:�:�	<�	<�	<����U�(�3�3�D�4F�G�G��;�;�	=�	=�	=����U�_��K�K�	M�	M�	M�	M�	Mrc�2�|�dd��dS)Nr�testCloneAttributeShallow�r�r�s rr�z%MinidomTest.testCloneAttributeShallowDr�rc�2�|�dd��dS)Nre�testCloneAttributeDeepr�r�s rr�z"MinidomTest.testCloneAttributeDeepGr�rc��td��}|j}|�|jtj��|�|��}|�|j|jko|j	|j	k��dS)Nz<?target data?><doc/>)
rrnrTr9rr:r�r5r8r�)r2r�r�rr=r�s      r�check_clone_pizMinidomTest.check_clone_piJs���1�2�2��
�^�������d�&F�G�G�G����T�"�"�����U�\�R�Y�.�*��J�"�'�)�	+�	+�	+�	+�	+rc�2�|�dd��dS)Nr�testClonePIShallow�r�r�s rr�zMinidomTest.testClonePIShallowRs�����A�3�4�4�4�4�4rc�2�|�dd��dS)Nre�testClonePIDeepr�r�s rr�zMinidomTest.testClonePIDeepUs�����A�0�1�1�1�1�1rc��tjj�d�����}Gd�d��}|��}|j}|jd}|�dd|��|rd|�d���}|�	|j
jjd	��tjj
j}|jjd}	ngtj|d
d��5|�d���}ddd��n#1swxYwYtjj
j}|jd}	|�	|j|��|�	|jd��|�	|jd��|�|j|��|�|j|	��dS)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�ZdS)�4MinidomTest.check_clone_node_entity.<locals>.Handlerc�L�||_||_||_||_||_dSr0)�	operation�keyr�r��dst�r2r�r�r�r�r�s      r�handlez;MinidomTest.check_clone_node_entity.<locals>.Handler.handlees)��!*������ ��	��������rN)�__name__�
__module__�__qualname__r�r�rr�Handlerr�ds#������
�
�
�
�
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�r�s
          r�check_clone_node_entityz#MinidomTest.check_clone_node_entityXs���7�?�.�.�0�
�E�G�G����	�	�	�	�	�	�	�	��'�)�)���"���!�'�*�����5�&�'�2�2�2��	*��&�&�D�&�1�1�E����U�2�=�G�D�
F�
F�
F���/�=�I��-�(��1�C�C��"�7�O�T�B�B�
5�
5��)�)�t�)�4�4��
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5���/�;�I��.��)�C�����*�I�6�6�6������e�,�,�,������v�.�.�.��
�
�g�k�6�*�*�*��
�
�g�k�3�'�'�'�'�'s�5D�D�Dc�Z�|�d��|�d��dS)NFT)r�r�s r�testCloneNodeEntityzMinidomTest.testCloneNodeEntity�s0���$�$�U�+�+�+��$�$�T�*�*�*�*�*rc��td��}|j}|�|�d����|�|�d����|�t|j��dko|jjdkd��|���|�t|j��dko-|jjdko|j	|j
uo|j	jdkd��|���td��}|j}|�|�d	����|���|�t|j��d
ko|jjd
kd��|���dS)Nry�first�secondrdztestNormalize -- preparationre�firstsecondztestNormalize -- resultr�rz*testNormalize -- single empty node removed)
rr^r~r}r5rlrirm�	normalizernror�rF�r2rrss   r�
testNormalizezMinidomTest.testNormalize�s����(�#�#���"������+�+�G�4�4�5�5�5�����+�+�H�5�5�6�6�6����S���)�)�Q�.�0��O�*�a�/�.�	0�	0�	0�	�
�
�������S���)�)�Q�.�:��O�*�a�/�:��O�t�~�5�:��O�(�M�9�+�		-�	-�	-�
	�
�
�����(�#�#���"������+�+�B�/�/�0�0�0��
�
�������S���)�)�Q�.�0��O�*�a�/�<�	>�	>�	>�	�
�
�����rc�"�td��}|j}|�|�d����|�|�d����|�|�d����|�t
|j��dko|jjdkd��|�	��|�t
|j��dkoo|jjdko_|j
jdkoO|j
|juoA|j
j
|juo.|j
jduo |jj|j
uo
|jj
dud	��|���dS)
Nryr�rr�rfz1testNormalizeCombineAndNextSibling -- preparationrdrz-testNormalizeCombinedAndNextSibling -- result)rr^r~r}rjr5rlrirmrrnr�rorrrqrFrs   r�"testNormalizeCombineAndNextSiblingz.MinidomTest.testNormalizeCombineAndNextSibling�s����(�#�#���"������+�+�G�4�4�5�5�5�����+�+�H�5�5�6�6�6�����*�*�3�/�/�0�0�0����S���)�)�Q�.�0��O�*�a�/�C�	E�	E�	E�	�
�
�������S���)�)�Q�.�7��O�*�a�/�7��O�(�M�9�7��O�4�>�9�7��O�/�4�>�A�	7�
�O�3�t�;�7��N�2�d�o�E�
7��N�.�$�6�A�	C�	C�	C�	�
�
�����rc��td��}|j}|�|�d����|�|�d����|�t|j��dko|jjdkd��|���|�t|j��dkoI|jjdko9|j	j
dko)|j	|juo|j	jduo
|j	j
dud��|���dS)Nryr�r�rdz1testNormalizeDeleteWithPrevSibling -- preparationrez,testNormalizeDeleteWithPrevSibling -- result�rr^r~r}r5rlrirmrrnr�rorrrqrFrs   r�"testNormalizeDeleteWithPrevSiblingz.MinidomTest.testNormalizeDeleteWithPrevSibling�sH���(�#�#���"������+�+�G�4�4�5�5�5�����+�+�B�/�/�0�0�0����S���)�)�Q�.�0��O�*�a�/�C�	E�	E�	E�	�
�
�������S���)�)�Q�.�<��O�*�a�/�<��O�(�G�3�<��O�t�~�5�<��O�/�4�7�	<�
�O�3�t�;�@�
	B�	B�	B�	�
�
�����rc��td��}|j}|�|�d����|�|�d����|�t|j��dko|jjdkd��|���|�t|j��dkoI|jjdko9|j	j
dko)|j	|juo|j	jduo
|j	j
dud��|���dS)Nryr�rrdz1testNormalizeDeleteWithNextSibling -- preparationrez,testNormalizeDeleteWithNextSibling -- resultrrs   r�"testNormalizeDeleteWithNextSiblingz.MinidomTest.testNormalizeDeleteWithNextSibling�sH���(�#�#���"������+�+�B�/�/�0�0�0�����+�+�H�5�5�6�6�6����S���)�)�Q�.�0��O�*�a�/�C�	E�	E�	E�	�
�
�������S���)�)�Q�.�<��O�*�a�/�<��O�(�H�4�<��O�t�~�5�<��O�/�4�7�	<�
�O�3�t�;�@�
	B�	B�	B�	�
�
�����rc��td��}|j}|�|�d����|�|�d����|�|�d����|�t
|j��dko|jjdkd��|�	��|�t
|j��dko_|jjdkoO|j
|juoA|j
j|juo.|j
j
duo |jj
|j
uo
|jjdud��|���dS)Nryr�r�rfz1testNormalizeDeleteWithTwoSiblings -- preparationrdz,testNormalizeDeleteWithTwoSiblings -- result)rr^r~rjr}r5rlrirmrrnrorrrqrFrs   r�)testNormalizeDeleteWithTwoNonTextSiblingsz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblings�s����(�#�#���"������*�*�3�/�/�0�0�0�����+�+�B�/�/�0�0�0�����*�*�3�/�/�0�0�0����S���)�)�Q�.�0��O�*�a�/�C�	E�	E�	E�	�
�
�������S���)�)�Q�.�7��O�*�a�/�7��O�4�>�9�7��O�/�4�>�A�7��O�3�t�;�	7�
�N�2�d�o�E�7��N�.�$�6�@�	B�	B�	B�	�
�
�����rc�v�td��}|j}|�|�d����|�|�d����|�|�d����|�|�d����|�|�d����|�t|j��dko|jjdkd��|���|�t|j��dkoI|jjdko9|j	|j
uo+|j	jdko|j	jduo
|j	j
dud	��|���dS)
Nryr�r�fourth�z,testNormalizeDeleteAndCombine -- preparationre�secondfourthz'testNormalizeDeleteAndCombine -- result)rr^r~r}r5rlrirmrrnror�rqrrrFrs   r�testNormalizeDeleteAndCombinez)MinidomTest.testNormalizeDeleteAndCombine�s����(�#�#���"������+�+�B�/�/�0�0�0�����+�+�H�5�5�6�6�6�����+�+�B�/�/�0�0�0�����+�+�H�5�5�6�6�6�����+�+�B�/�/�0�0�0����S���)�)�Q�.�0��O�*�a�/�>�	@�	@�	@�	�
�
�������S���)�)�Q�.�8��O�*�a�/�8��O�t�~�5�8��O�(�N�:�8��O�3�t�;�	8�
�O�/�4�7�;�
	=�	=�	=�	�
�
�����rc�~
�td��}|j}|jd�|�d����|jd�|�d����|jdjd�|�d����|jd�|�d����|�|�d����|�t
|j��dko�|jjdko�t
|jdj��d	ko�|jdjjd	ko�t
|jdj��dkon|jdjjdkoSt
|jdjdj��d
ko%|jdjdjjd
kd��|���|�t
|j��d
ko�|jjd
ko�t
|jdj��d
ko�|jdjjd
ko�t
|jdj��d
kon|jdjjd
koSt
|jdjdj��dko%|jdjdjjdkd��|�|jdjdj	d
koL|jdjdjdj	dko |jdjdj	dkd��|�|jdjdj
du�o0|jdjdj|jdjduo�|jdjdjduo�|jdjdj
|jdjduo�|jdjdj
duo�|jdjdj|jdjduoS|jdjdjduo4|jdjdj
|jdjdud��|���dS)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)
rr^rir~r}r5rlrmrr�rrrqrFrs   r�testNormalizeRecursionz"MinidomTest.testNormalizeRecursions����#�$�$��"�"������&�&�s�'9�'9�"�'=�'=�>�>�>�����&�&�s�'9�'9�#�'>�'>�?�?�?�����%�a�(�4�4�S�5G�5G��5M�5M�N�N�N�����&�&�s�'9�'9�$�'?�'?�@�@�@�����+�+�B�/�/�0�0�0����S���)�)�Q�.�L��O�*�a�/�L�����*�5�6�6�!�;�L��O�A�&�1�8�A�=�L�����*�5�6�6�!�;�	L�
�O�A�&�1�8�A�=�L�����*�5�a�8�C�D�D��I�
L��O�A�&�1�!�4�?�F�!�K�1�	3�	3�	3�	�
�
�������S���)�)�Q�.�L��O�*�a�/�L�����*�5�6�6�!�;�L��O�A�&�1�8�A�=�L�����*�5�6�6�!�;�	L�
�O�A�&�1�8�A�=�L�����*�5�a�8�C�D�D��I�
L��O�A�&�1�!�4�?�F�!�K�8�	:�	:�	:�	
���T�_�Q�'�2�1�5�:�d�B�D��O�A�&�1�!�4�?��B�G�6�Q�D��O�A�&�1�!�4�9�V�C�8�	:�	:�	:�	
���T�_�Q�'�2�1�5�A�T�I�<��O�A�&�1�!�4�D��?�1�-�8��;�<�<��O�A�&�1�!�4�D��L�<��O�A�&�1�!�4�@��?�1�-�8��;�<�	<��O�A�&�1�!�4�@�D�H�
<��O�A�&�1�!�4�D��?�1�-�8��;�<�<��O�A�&�1�!�4�D��L�<��O�A�&�1�!�4�@��?�1�-�8��;�<�6�	8�	8�	8�	�
�
�����rc���td��}|jjd}|�|jt
j��|���|���dS)Nz<o>text</o>r)	rr^rirTr9r�	TEXT_NODErrF)r2rr�s   r�testBug0777884zMinidomTest.testBug0777884EsZ���-�(�(���"�-�a�0���������7�7�7��������
�
�����rc���td��}|j}d|jd_|���|�|jdjdud��dS)Nz<o><i/>t</o>r�rer�z)Final child's .nextSibling should be None)rr^rir�rr5rr�r2rr8s   r�testBug1433694zMinidomTest.testBug1433694Mso���.�)�)���"��')�����$����������T�_�R�(�4��<�@�	B�	B�	B�	B�	Brc��td��}|j}|j\}}}|�|j|uo,|jduo#|j|uo|j|uo|jduo|j|ud��|���dS)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)rr^rir5rrrqrF)r2rrsr=r��elms      rr"zMinidomTest.testSiblingsUs����8�9�9���"���/���T�3����R�^�t�+�,��"�d�*�,�� �C�'�,��$��*�,���4�'�	,�
�#�t�+�^�	=�	=�	=�	�
�
�����rc�$�td��}|j}|jd}|j\}}|jd}|�|j|uo#|j|uo|j|uo|j|uo|j|ud��|���dS)Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r�testParents)rr^rir5r�rF)r2rrs�elm1�elm2a�elm2b�elm3s       rr%zMinidomTest.testParentscs����A�C�C���"����q�!����������"�����T�_��+�)���4�'�)�� �D�(�)�� �D�(�)���5�(�-�		9�	9�	9�
	�
�
�����rc��td��}|j}|d}|�|d|�d��uo�|�d��duo�|j�d��|jduoZ|j�d��|jduo3|j�d��j�d��dud��|���dS)Nz<doc><e/><e/></doc>rreztest NodeList.item())rrir5r)rF)r2r�children�docelems    r�testNodeListItemzMinidomTest.testNodeListItemrs����/�0�0���>���1�+�����X�a�[�H�M�M�!�$4�$4�4�J��M�M�!�$�$��,�J��&�+�+�A�.�.�'�2D�Q�2G�G�J��&�+�+�A�.�.�'�2D�Q�2G�G�J��&�+�+�A�.�.�9�>�>�q�A�A�T�I�&�	(�	(�	(�	�
�
�����rc���td��}|�|���d��|�|�d��d��|�|�d��d��|�|�d��d��|�|�d	��d
�d	����tjdkrC|�ttd��|�ttd
��n!|�ttd��|�	��dS)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>�rdrhrs<fran�ais></fran�ais>s.<franais>Comment �a va ? Tr�s bien ?</franais>s0<fran�ais>Comment �a va ? Tr�s bien ?</fran�ais>)
rrTrp�encode�pyexpat�version_infor�r
�UnicodeDecodeErrorrFr?s  r�
testEncodingszMinidomTest.testEncodings~s����/�0�0����������B�	D�	D�	D�������7�+�+�L�	N�	N�	N�������=�1�1�J�	L�	L�	L�������:�.�.�J�	L�	L�	L�������8�,�,�
 � &��x� 0� 0�	2�	2�	2���9�,�,����j�+�2�
4�
4�
4����j�+�K�
M�
M�
M�
M�
���0�+�O�
Q�
Q�
Q�	�
�
�����rc���td��}|�|���d��|�|�d���d��|�|�d���d��|�|�d���d��|�|�dd��d	��|���dS)
Nr/r0)�
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>)rrTrprFr?s  r�testStandalonezMinidomTest.testStandalone�s���/�0�0����������B�	D�	D�	D�������d��3�3�B�	D�	D�	D�������d��3�3�E�	G�	G�	G�������e��4�4�D�	F�	F�	F�������7�D�1�1�
'�	(�	(�	(�	�
�
�����rc��eZdZdZd�ZdS)�MinidomTest.UserDataHandlerrc�v�|�||dz|��|�|dd��d|_dSr�)r��calledr�s      rr�z"MinidomTest.UserDataHandler.handle�s=���O�O�C����4�0�0�0��O�O�C��t�,�,�,��D�K�K�KrN)r�r�r�r=r�r�rrr�r;�s(��������	�	�	�	�	rr�c��t��}|�d��}|�|�d��du��|�ddd��|�|�d��du��|�ddd��|�ddd��|�|�d��dk��|�|�d��dk��|�ddd��|�|�d��du��|�|�d��dk��|���}|�dd|��|�d��}|�|jo/|�d��duo|�d��dk��|���|���|���dS)Nrr{�rg�
re)	rrjr5�getUserDatar�r�r�r=rF)r2r�nr��cs     r�testUserDatazMinidomTest.testUserData�s����j�j�����c�"�"�����Q�]�]�5�)�)�T�1�2�2�2�	�
�
�e�T�4�(�(�(����Q�]�]�5�)�)�T�1�2�2�2�	�
�
�e�R��$�$�$�	�
�
�e�R��$�$�$����Q�]�]�5�)�)�R�/�0�0�0����Q�]�]�5�)�)�R�/�0�0�0�	�
�
�e�T�4�(�(�(����Q�]�]�5�)�)�T�1�2�2�2����Q�]�]�5�)�)�R�/�0�0�0��&�&�(�(��	�
�
�e�R��)�)�)�
�K�K��N�N�����W�^�/��M�M�%�(�(�D�0�/��M�M�%�(�(�B�.�	0�	0�	0�	
���
�
�
�	���
�
�
��
�
�����rc��|�tjj|j|dd��td��}|�tjj|j|tjjd��dS)N�http://xml.python.org/nsz	xmlns:fooryr{)r�rr�NamespaceErr�
renameNoder�WrongDocumentErrr<)r2rr8r�s    r� checkRenameNodeSharedConstraintsz,MinidomTest.checkRenameNodeSharedConstraints�su�����#�'�.����4�k�	C�	C�	C��8�$�$�����#�'�2�D�O�T��'�1�5�	:�	:�	:�	:�	:rc�
�td��}|j}|j}|jd}|�|tjjd��}|�|jdko�|j	dko�|j
duo�|jtjjko�|jduo�|j
dko�|�d��duov|�d���|��oN|d�|��o3|j�|��o|j�|����|�|dd��}|�|jdko�|j	dko�|j
dko�|jdko�|jduo�|j
dko�|�d��duo�|�d��duo�|�d���|��o^|�dd���|��o5|d�|��o|d�|����|�|dd	��}|�|jd	k�o|j	d	k�o|j
d
k�o|jdko�|jdko�|j
dko�|�d��duo�|�d��duo�|�d��duo�|�dd��duo�|�d	���|��o^|�dd
���|��o5|d	�|��o|d�|����|�|tjjd
��}|�|jd
ko�|j	d
ko�|j
duo�|jtjjko�|jduo�|j
dko�|�d��duo�|�d��duo�|�d��duoq|�d	��duoZ|�dd��duoB|�d
���|��o|d
�|����|�tjj|j|dd��|�||��|���dS)Nz<doc a='v'/>r�rg�vrFrC)rFrC�http://xml.python.org/ns2zp:dr�p)rMrr�xmlns)rr^r�rHrrr<r5rUr�rQrPrRr�r�rar*r�rhr�rGrJrF)r2rrt�attrmaprWs     r�testRenameAttributezMinidomTest.testRenameAttribute�s���.�)�)���"���/����s�#���~�~�d�C�G�$;�S�A�A�����T�Y�#�%�
7��M�S�(�
7��N�d�*�
7��%���)@�@�
7��K�4�'�	
7�
�J�#�%�
7��)�)�#�.�.�$�6�
7��)�)�#�.�.�9�9�$�?�?�
7��C�L�+�+�D�1�1�
7��&�1�1�#�6�6�
7��%�0�0��6�6�
	8�
	8�
	8��~�~�d�$>��D�D�����T�Y�#�%�P��M�S�(�P��N�c�)�P��%�)C�C�P��K�4�'�	P�
�J�#�%�P��)�)�#�.�.�$�6�
P��)�)�#�.�.�$�6�P��)�)�#�.�.�9�9�$�?�?�P��+�+�.��5�5�5?�Z��5E�5E�P��C�L�+�+�D�1�1�P��=�>�I�I�$�O�O�	Q�	Q�	Q��~�~�d�$?��G�G�����T�Y�%�'�Q��M�U�*�Q��N�c�)�Q��%�)D�D�Q��K�3�&�	Q�
�J�#�%�Q��)�)�#�.�.�$�6�
Q��)�)�#�.�.�$�6�Q��)�)�#�.�.�$�6�Q��+�+�.��5�5�8<�=�Q��)�)�%�0�0�;�;�D�A�A�Q��+�+�/��6�6�6@�j��6F�6F�Q��E�N�-�-�d�3�3�Q��>�?�J�J�4�P�P�	R�	R�	R�$�~�~�d�C�G�$;�S�A�A�����T�Y�#�%�
2��M�S�(�
2��N�d�*�
2��%���)@�@�
2��K�4�'�	
2�
�J�#�%�
2��)�)�#�.�.�$�6�

2��)�)�#�.�.�$�6�
2��)�)�#�.�.�$�6�
2��)�)�%�0�0�D�8�
2��+�+�.��5�5�8<�=�
2��)�)�#�.�.�9�9�$�?�?�
2��C�L�+�+�D�1�1�
	3�
	3�
	3�	
���#�'�.����4�g�	?�	?�	?��-�-�c�4�8�8�8��
�
�����rc���td��}|j}|�|tjjd��}|�|jdkoP|jdkoE|j	duo<|j
tjjko"|jduo|j�
|����|�|dd��}|�|jdkoC|jdko8|j	dko-|j
dko"|jduo|j�
|����|�|dd��}|�|jdkoE|jdko:|j	dko/|j
dko$|jdko|j�
|����|�|tjjd	��}|�|jd	koP|jd	koE|j	duo<|j
tjjko"|jduo|j�
|����|�||��|���dS)
Nryr�rFrgrMzp:crCrNr)rr^rHrrr<r5rr�rQrPrRr*rarJrFrIs   r�testRenameElementzMinidomTest.testRenameElements����(�#�#���"���~�~�d�C�G�$;�S�A�A�����T�\�S�(�7��M�S�(�7��N�d�*�7��%���)@�@�7��K�4�'�	7�
�&�1�1�#�6�6�	8�	8�	8��~�~�d�$>��D�D�����T�\�S�(�7��M�S�(�7��N�c�)�7��%�)C�C�7��K�4�'�	7�
�&�1�1�#�6�6�	8�	8�	8��~�~�d�$?��G�G�����T�\�U�*�7��M�U�*�7��N�c�)�7��%�)D�D�7��K�3�&�	7�
�&�1�1�#�6�6�	8�	8�	8��~�~�d�C�G�$;�S�A�A�����T�\�S�(�7��M�S�(�7��N�d�*�7��%���)@�@�7��K�4�'�	7�
�&�1�1�#�6�6�	8�	8�	8�	
�-�-�c�4�8�8�8��
�
�����rc�^�tjj����tjjdd��}|�d��}|�tjj|j	|tjjd��|�
��dS)Nr�commentr{)rrrr	rr<r�r�r�rHrFrs   r�testRenameOtherzMinidomTest.testRenameOtherHs����g�o�2�2�4�4�C�C��G�#�S�$�0�0��� � ��+�+�����#�'�1�3�>�4��'�1�5�	:�	:�	:��
�
�����rc��td��}|j}|jd}|�|jt
j��|�|d��|�|�	d����|�|d��|�
|�d��|��|�|d��|�d��}|�|��|�	d	��}|�|��|�|d��|�|d	��|�
d
��}|�||��|}|�|d��|�|d	��|�dd��}|�||��|}|�|d��|�|d	��|�|��|�|d
��|�|d
��dS)Nz<doc>a</doc>rr�rg�abrC�cabrUrr�y�z�cabd)rr^rirTr9rrr;r~r}rk�createCDATASectionr�rjr��createProcessingInstruction�removeChild)r2rrtr��splitter�text2rs       r�
testWholeTextzMinidomTest.testWholeTextRs=���.�)�)���"����q�!���������7�7�7����D�#�&�&�&�����+�+�C�0�0�1�1�1����D�$�'�'�'����#�0�0��5�5�t�<�<�<����D�%�(�(�(��$�$�Y�/�/������"�"�"��"�"�3�'�'������������D�%�(�(�(����E�3�'�'�'����c�"�"�����!�X�&�&�&������D�%�(�(�(����E�3�'�'�'��+�+�C��5�5�����!�X�&�&�&������D�%�(�(�(����E�3�'�'�'�����"�"�"����D�&�)�)�)����E�6�*�*�*�*�*rc���td��}|j}|j}|�|j|ud��|�||��|�|j|ud��dS)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())rr^rnr5r�r�)r2rrtrs    r�testPatch1094164zMinidomTest.testPatch1094164vss���+�,�,���"���O�����Q�\�T�)�+B�C�C�C����!�Q�������Q�\�T�)�+A�B�B�B�B�Brc���d�}|��\}}}}}|�d��}|�|d��|�|d��|�t|j��dk��|��\}}}}}|�d��}|�|d��|�|d��|�t|j��dk��|��\}}}}}|�d��}|�|d��|�|duot|j��dk��dS)	Nc�
�td��}|j}|j}|j}|j}|�|�d��|��|�|�d��|��|||||fS)Nz<doc>a<e/>d</doc>rgrC)rr^rnrorrrkr}r])rrt�text1rar`s     r�setupz/MinidomTest.testReplaceWholeText.<locals>.setup�s����1�2�2�C��&�D��O�E��N�E��(�H����c�0�0��5�5�x�@�@�@����c�4�4�S�9�9�5�A�A�A���e�X�u�4�4rznew contentrrfrYrr�rd)�replaceWholeTextr;r5rlri)r2rhrrtrgr`rar�s        r�testReplaceWholeTextz MinidomTest.testReplaceWholeTexts{��	5�	5�	5�-2�E�G�G�)��T�5�(�E��%�%�m�4�4�����D�-�0�0�0����E�3�'�'�'����S���)�)�Q�.�/�/�/�,1�E�G�G�)��T�5�(�E��%�%�m�4�4�����D�-�0�0�0����E�5�)�)�)����S���)�)�Q�.�/�/�/�,1�E�G�G�)��T�5�(�E��%�%�b�)�)�����E�3�'�'�'����T�T�\�.����(�(�A�-�	/�	/�	/�	/�	/rc��td��}|j}|j}|�|jduo|jtjjk��d�	��}|D][}|�
|��}|j}|�t|d��o|jtjjk���\dS)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)rr^�
schemaTyper5rU�	namespacerrr<�splitr��hasattr)r2rrtr:�namesrUr�s       r�testSchemaTypezMinidomTest.testSchemaType�s����
/�0�0��"�"��

�O�����Q�V�t�^�;��K�3�7�#:�:�	<�	<�	<�=�C�C�E�E���	@�	@�D��%�%�d�+�+�A���A��L�L���F�+�+�?���s�w�'>�>�
@�
@�
@�
@�	@�	@rc���td��}|j}|�d��}|�d��}|�|�d��duo|jo|j��|�d��|�|�|�d����o|jo|j��|�d��|�|�|�d����o5|�|�d����o
|jo|j��|�d��}d|_	|�
|��|�|�d��duo>|�|�d����o|jo|jo|j��|�|tj
jd��|�|�|�d����o|j��dS)Nz<doc a1='v' a2='w'/>rcrdrL�w�an)rr^r�r5�getElementByIdr�r�ra�createAttributer��setAttributeNoderHrrr<)r2rrrcrd�a3s      r�testSetIdAttributezMinidomTest.testSetIdAttribute�se���0�1�1�����
�
�
��
%�
%��
�
�
��
%�
%�����S�'�'��,�,��4� ���K� ���K�	!�	!�	!�	
����������Q�\�\�#�"4�"4�S�"9�"9�:�:� ��G� ���K�	!�	!�	!�	
����������Q�\�\�#�"4�"4�S�"9�"9�:�:���L�L��!3�!3�C�!8�!8�9�9���G���G�	�	�	�
�
 �
 ��
&�
&�����	���2�������S�'�'��,�,��4� ��L�L��!3�!3�C�!8�!8�9�9� ���K� ��G� ���K�		!�	!�	!�	���r�3�7�2�D�9�9�9����Q�\�\�#�"4�"4�S�"9�"9�:�:���G�	�	�	�	�	rc��d}d}td|zdz|zdz��}|j}|�|d��}|�|d��}|�|�d��duo|jo|j��|�|d��|�|�|�d����o|jo|j��|�|d��|�|�|�d����o5|�|�d	����o
|jo|j��|�|d��}d|_	|�
|��|�|�|�d	������|�|j��|�|j��|�|j��|�|�d��du��|�|tj
jd
��|�|�|�d	����o|j��dS�Nzhttp://xml.python.org/ns1rMz<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>rcrdrLrsrt)rr^rhr5rur��setIdAttributeNSra�createAttributeNSr�rwrHrrr<�r2�NS1�NS2rrrcrdrxs        r�testSetIdAttributeNSz MinidomTest.testSetIdAttributeNS�s���)��)���)�+.�/�2)�)�+.�/�25�5�6�6��
���
�
!�
!�#�t�
,�
,��
�
!�
!�#�t�
,�
,�����S�'�'��,�,��4� ���K� ���K�	!�	!�	!�	
���3��%�%�%����Q�\�\�#�"4�"4�S�"9�"9�:�:� ��G� ���K�	!�	!�	!�	
���3��%�%�%����Q�\�\�#�"4�"4�S�"9�"9�:�:���L�L��!3�!3�C�!8�!8�9�9���G���G�	�	�	�
�
"�
"�3��
-�
-�����	���2�������Q�\�\�#�"4�"4�S�"9�"9�:�:�;�;�;������[�!�!�!����R�W���������[�!�!�!����S�'�'��,�,��4�5�5�5����r�3�7�2�D�9�9�9����Q�\�\�#�"4�"4�S�"9�"9�:�:���G�	�	�	�	�	rc��d}d}td|zdz|zdz��}|j}|�|d��}|�|d��}|�|�d��duo|jo|j��|�|��|�|�|�d����o|jo|j��|�|��|�|�|�d����o5|�|�d	����o
|jo|j��|�|d��}d|_	|�
|��|�|�|�d	������|�|j��|�|j��|�|j��|�|�d��du��|�|tj
jd
��|�|�|�d	����o|j��dSr{)rr^rhr5rur��setIdAttributeNoderar}r�rwrHrrr<r~s        r�testSetIdAttributeNodez"MinidomTest.testSetIdAttributeNodes���)��)���)�+.�/�2)�)�+.�/�25�5�6�6��
���
�
!�
!�#�t�
,�
,��
�
!�
!�#�t�
,�
,�����S�'�'��,�,��4� ���K� ���K�	!�	!�	!�	
���R� � � ����Q�\�\�#�"4�"4�S�"9�"9�:�:� ��G� ���K�	!�	!�	!�	
���R� � � ����Q�\�\�#�"4�"4�S�"9�"9�:�:���L�L��!3�!3�C�!8�!8�9�9���G���G�	�	�	�
�
"�
"�3��
-�
-�����	���2�������Q�\�\�#�"4�"4�S�"9�"9�:�:�;�;�;������[�!�!�!����R�W���������[�!�!�!����S�'�'��,�,��4�5�5�5����r�3�7�2�D�9�9�9����Q�\�\�#�"4�"4�S�"9�"9�:�:���G�	�	�	�	�	rc�R�||fg}|�r|���\}}|�|j|j��|�t|j��t|j����|�|j|j��|�|�|����|�|�|����|jtj	k�rbt|j
��t|j
��t|j��t|j��|�t|j
��t|j
����|�t|j��t|j����tt|j����D]�}|j�
|��}|j�
|��}|�|j|j��|�|j|j��|�|j|j��|�||f����tt|j
����D]�}|j
�
|��}	|j
�
|��}
|�|	j|
j��|�|	j|
j��|�|	j|
j��|�|	|
f����|jtjkrZ|�|j�|����|�|j�|����tt|j����D]/}|�|j||j|f���0|��dSdSr0)�poprTr9rlrir�r=rarr�rrr�r)rUr�r�rr��
DOCUMENT_NODEr1r*)r2rr��stack�n1�n2r��no1�no2r�r�s           r�assert_recursive_equalz"MinidomTest.assert_recursive_equal$s����t��
���!	C��Y�Y�[�[�F�B�����R�[�"�+�6�6�6����S���/�/��R�]�1C�1C�D�D�D����R�[�"�+�6�6�6����R�]�]�2�.�.�/�/�/����R�]�]�2�.�.�/�/�/��{�d�5�5�5��B�K� � � ��B�K� � � ��B�L�!�!�!��B�L�!�!�!�� � ��R�[�!1�!1�3�r�{�3C�3C�D�D�D�� � ��R�\�!2�!2�C���4E�4E�F�F�F��s�2�<�0�0�1�1�-�-�A��,�+�+�A�.�.�C��,�+�+�A�.�.�C��$�$�S�X�s�x�8�8�8��$�$�S�\�3�<�@�@�@��$�$�S�\�3�<�@�@�@��L�L�#�s��,�,�,�,��s�2�;�/�/�0�0�+�+�A���)�)�!�,�,�B���)�)�!�,�,�B��$�$�R�_�b�o�F�F�F��$�$�R�[�"�+�>�>�>��$�$�R�[�"�+�>�>�>��L�L�"�b��*�*�*�*��{�d�0�0�0����� 0� ;� ;�C� @� @�A�A�A����� 0� ;� ;�D� A� A�B�B�B��3�r�}�-�-�.�.�
C�
C�����b�m�A�.��
�a�0@�A�B�B�B�B�C�!	C�!	C�!	C�!	C�!	Crc���tt��}tdtjdz��D]A}tj||��}tj|��}|�||���BdS)Nrdre)r�sampler��pickle�HIGHEST_PROTOCOL�dumps�loadsr�)r2r�protor9r�s     r�testPickledDocumentzMinidomTest.testPickledDocumentIsq���&�!�!���1�f�5��9�:�:�	3�	3�E���S�%�(�(�A��<��?�?�D��'�'��T�2�2�2�2�	3�	3rc��tt��}tj|��}|�||��dSr0)rr��copy�deepcopyr�r�s   r�testDeepcopiedDocumentz"MinidomTest.testDeepcopiedDocumentPs:���&�!�!���}�S�!�!���#�#�C��.�.�.�.�.rc��t��}|�|�d����|�t|j��dS)Nzfoo--bar)rr~r�r��
ValueErrorrpr?s  r�(testSerializeCommentNodeWithDoubleHyphenz4MinidomTest.testSerializeCommentNodeWithDoubleHyphenUsK��(�*�*������)�)�*�5�5�6�6�6����*�c�i�0�0�0�0�0rc��td��}t|�����}|�|jtjjk��dS)Nz$<element xmlns=''>
<foo/>
</element>)rrpr5rPrrr<r�s   r�testEmptyXMLNSValuezMinidomTest.testEmptyXMLNSValue[sP���/�0�0���3�9�9�;�;�'�'�����T�&�#�'�*A�A�B�B�B�B�Brc���tjdkr|�td��}n|�td��}|5td��ddd��dS#1swxYwYdS)Nr1zsyntax errorzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)r3r4�assertRaisesRegexr
r�r)r2�contexts  r�!testExceptionOnSpacesInXMLNSValuez-MinidomTest.testExceptionOnSpacesInXMLNSValueas�����9�,�,��,�,�Z��H�H�G�G��,�,�Z�9M�N�N�G�
�	a�	a��_�`�`�`�	a�	a�	a�	a�	a�	a�	a�	a�	a�	a�	a�	a����	a�	a�	a�	a�	a�	as�
A'�'A+�.A+c��tt��}|j�d��d}|�t
jj|j|��t|j
��}|�|j
d��t|j
��}|�||dz
k��dS)N�TITLErre)rrEr^r]r�rrr�r_rlrir1)r2r�	title_tag�num_children_before�num_children_afters     r�testDocRemoveChildzMinidomTest.testDocRemoveChildjs����G�n�n���'�<�<�W�E�E�a�H�	����3�7�.����K�K�K�!�#�.�1�1�������q�)�*�*�*� ���0�0�����*�.A�A�.E�E�F�F�F�F�Frc�h�tt��}|�dd��}d|_dS)NrZr[�crash)rrEr^r�)r2rr=s   r�"testProcessingInstructionNameErrorz.MinidomTest.testProcessingInstructionNameErrorss/���G�n�n��
�
,�
,�S�#�
6�
6������rc���d}t|��}tj��}|�|��|�|���|��dS�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_orderzsW��Y���'�"�"����������V����������*�*�G�4�4�4�4�4rc�x�d}t|��}|�|���|��dSr�)rrTrp�r2r�rs   r�"test_toxml_with_attributes_orderedz.MinidomTest.test_toxml_with_attributes_ordered�s8��Y���'�"�"����������g�.�.�.�.�.rc�x�d}t|��}|�|���d��dS)Nr�zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
�rrTr(r�s   r�(test_toprettyxml_with_attributes_orderedz4MinidomTest.test_toprettyxml_with_attributes_ordered�sM��Y���'�"�"��������*�*�M�	N�	N�	N�	N�	Nrc�x�d}t|��}|�|���d��dS)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�sG��W���'�"�"��������*�*�%�	&�	&�	&�	&�	&rc�:�d}t|��}|�|�d��djd��t|�����}|�|�d��djd��dS)Nr�r8rz</data>)rr;r]rnr()r2r��dom1r�s    r�test_cdata_parsingzMinidomTest.test_cdata_parsing�s���W���7�#�#�����D�5�5�f�=�=�a�@�K�Y�W�W�W��4�+�+�-�-�.�.�����D�5�5�f�=�=�a�@�K�Y�W�W�W�W�WrN)r.)�r�r�r�r5r;r@rJrMrXrZr`rwr�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�rr	rrrrrr r$r*r/r2r5r>r@rBrDrFrJrLrNrPrRrTrVrXrZr\r^rerjrlrnrprrrtrvrxrzr|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�rrr	rr
rrrr r"r%r-r6r9r�rDrJrQrSrVrbrdrjrqryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr-r-7sB������(�(�(�(�B�B�B�*�*�*�
4�4�4�4�4�4�6�6�6�4�4�4����)�)�)�V+�+�+����"������������*���"���)�)�)�)�)�)�
���
�
�
�������*	�	�	�	�	�	�������$1�1�1�$�$�$�L
�
�
�
�
�
�
�
�
�<�<�<����)�(�(�
�
�
�)�)�)�
=�=�=�"������������%�$�$�$�$�$�:�:�:�L�L�L�	E�	E�	E�I�I�I�
@�
@�
@�2�1�1� � � �!�!�!�'�'�'����(�'�'�)�)�)����#�#�#����$�$�$�%�%�%�&�&�&�$�$�$�&�&�&�K�K�K�9�9�9�'�&�&�&�&�&�+�+�+�+�+�+�0�0�0�$�$�$�'�'�'�.�.�.�0�0�0�3�3�3�"�"�"�"�"�"�/�/�/�?�?�?�(
�
�
�������
A�
A�
A�C�C�C�2 4� 4� 4�DF�F�F�
0�0�0�I�I�I�
P�P�P�
C�C�C�@�@�@�*�*�*�*�*�*�M�M�M�C�C�C�@�@�@�+�+�+�5�5�5�2�2�2�-(�-(�-(�^+�+�+����2���*���$���$���(���*<�<�<�~���B�B�B����
�
�
�
�
�
����6��� �����������0:�:�:�K�K�K�Z)�)�)�V���"+�"+�"+�HC�C�C�/�/�/�:@�@�@�B���>"�"�"�H"�"�"�H#C�#C�#C�J3�3�3�/�/�/�
1�1�1�C�C�C�a�a�a�G�G�G����5�5�5�/�/�/�
N�N�N�&�&�&�X�X�X�X�Xrr-�__main__r0)r�r�r�r3r�unittestr3�xml.dom.minidomrrrrrrr	�xml.parsers.expatr
�findfilerEr�rr&r+�TestCaser-r��mainr�rr�<module>r�sZ������
�
�
�
�	�	�	�	�������������������D�D�D�D�D�D�D�D�D�D�D�D�D�D�0�0�0�0�0�0�(�(�(�(�(�(��'�
�:�m�
<�
<�
<��7��G�G�G�G���� ���dX�dX�dX�dX�dX�(�#�dX�dX�dX�L3�z����H�M�O�O�O�O�O��r