(root)/
Python-3.11.7/
Lib/
test/
test_xml_dom_minicompat.py
       1  # Tests for xml.dom.minicompat
       2  
       3  import copy
       4  import pickle
       5  import unittest
       6  
       7  import xml.dom
       8  from xml.dom.minicompat import *
       9  
      10  
      11  class ESC[4;38;5;81mEmptyNodeListTestCase(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      12      """Tests for the EmptyNodeList class."""
      13  
      14      def test_emptynodelist_item(self):
      15          # Test item access on an EmptyNodeList.
      16          node_list = EmptyNodeList()
      17  
      18          self.assertIsNone(node_list.item(0))
      19          self.assertIsNone(node_list.item(-1)) # invalid item
      20  
      21          with self.assertRaises(IndexError):
      22              node_list[0]
      23          with self.assertRaises(IndexError):
      24              node_list[-1]
      25  
      26      def test_emptynodelist_length(self):
      27          node_list = EmptyNodeList()
      28          # Reading
      29          self.assertEqual(node_list.length, 0)
      30          # Writing
      31          with self.assertRaises(xml.dom.NoModificationAllowedErr):
      32              node_list.length = 111
      33  
      34      def test_emptynodelist___add__(self):
      35          node_list = EmptyNodeList() + NodeList()
      36          self.assertEqual(node_list, NodeList())
      37  
      38      def test_emptynodelist___radd__(self):
      39          node_list = [1,2] + EmptyNodeList()
      40          self.assertEqual(node_list, [1,2])
      41  
      42  
      43  class ESC[4;38;5;81mNodeListTestCase(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      44      """Tests for the NodeList class."""
      45  
      46      def test_nodelist_item(self):
      47          # Test items access on a NodeList.
      48          # First, use an empty NodeList.
      49          node_list = NodeList()
      50  
      51          self.assertIsNone(node_list.item(0))
      52          self.assertIsNone(node_list.item(-1))
      53  
      54          with self.assertRaises(IndexError):
      55              node_list[0]
      56          with self.assertRaises(IndexError):
      57              node_list[-1]
      58  
      59          # Now, use a NodeList with items.
      60          node_list.append(111)
      61          node_list.append(999)
      62  
      63          self.assertEqual(node_list.item(0), 111)
      64          self.assertIsNone(node_list.item(-1)) # invalid item
      65  
      66          self.assertEqual(node_list[0], 111)
      67          self.assertEqual(node_list[-1], 999)
      68  
      69      def test_nodelist_length(self):
      70          node_list = NodeList([1, 2])
      71          # Reading
      72          self.assertEqual(node_list.length, 2)
      73          # Writing
      74          with self.assertRaises(xml.dom.NoModificationAllowedErr):
      75              node_list.length = 111
      76  
      77      def test_nodelist___add__(self):
      78          node_list = NodeList([3, 4]) + [1, 2]
      79          self.assertEqual(node_list, NodeList([3, 4, 1, 2]))
      80  
      81      def test_nodelist___radd__(self):
      82          node_list = [1, 2] + NodeList([3, 4])
      83          self.assertEqual(node_list, NodeList([1, 2, 3, 4]))
      84  
      85      def test_nodelist_pickle_roundtrip(self):
      86          # Test pickling and unpickling of a NodeList.
      87  
      88          for proto in range(pickle.HIGHEST_PROTOCOL + 1):
      89              # Empty NodeList.
      90              node_list = NodeList()
      91              pickled = pickle.dumps(node_list, proto)
      92              unpickled = pickle.loads(pickled)
      93              self.assertIsNot(unpickled, node_list)
      94              self.assertEqual(unpickled, node_list)
      95  
      96              # Non-empty NodeList.
      97              node_list.append(1)
      98              node_list.append(2)
      99              pickled = pickle.dumps(node_list, proto)
     100              unpickled = pickle.loads(pickled)
     101              self.assertIsNot(unpickled, node_list)
     102              self.assertEqual(unpickled, node_list)
     103  
     104      def test_nodelist_copy(self):
     105          # Empty NodeList.
     106          node_list = NodeList()
     107          copied = copy.copy(node_list)
     108          self.assertIsNot(copied, node_list)
     109          self.assertEqual(copied, node_list)
     110  
     111          # Non-empty NodeList.
     112          node_list.append([1])
     113          node_list.append([2])
     114          copied = copy.copy(node_list)
     115          self.assertIsNot(copied, node_list)
     116          self.assertEqual(copied, node_list)
     117          for x, y in zip(copied, node_list):
     118              self.assertIs(x, y)
     119  
     120      def test_nodelist_deepcopy(self):
     121          # Empty NodeList.
     122          node_list = NodeList()
     123          copied = copy.deepcopy(node_list)
     124          self.assertIsNot(copied, node_list)
     125          self.assertEqual(copied, node_list)
     126  
     127          # Non-empty NodeList.
     128          node_list.append([1])
     129          node_list.append([2])
     130          copied = copy.deepcopy(node_list)
     131          self.assertIsNot(copied, node_list)
     132          self.assertEqual(copied, node_list)
     133          for x, y in zip(copied, node_list):
     134              self.assertIsNot(x, y)
     135              self.assertEqual(x, y)
     136  
     137  if __name__ == '__main__':
     138      unittest.main()