mirror of
				https://github.com/python/cpython.git
				synced 2025-10-25 02:43:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Tests for xml.dom.minicompat
 | |
| 
 | |
| import copy
 | |
| import pickle
 | |
| import unittest
 | |
| 
 | |
| import xml.dom
 | |
| from xml.dom.minicompat import *
 | |
| 
 | |
| 
 | |
| class EmptyNodeListTestCase(unittest.TestCase):
 | |
|     """Tests for the EmptyNodeList class."""
 | |
| 
 | |
|     def test_emptynodelist_item(self):
 | |
|         # Test item access on an EmptyNodeList.
 | |
|         node_list = EmptyNodeList()
 | |
| 
 | |
|         self.assertIsNone(node_list.item(0))
 | |
|         self.assertIsNone(node_list.item(-1)) # invalid item
 | |
| 
 | |
|         with self.assertRaises(IndexError):
 | |
|             node_list[0]
 | |
|         with self.assertRaises(IndexError):
 | |
|             node_list[-1]
 | |
| 
 | |
|     def test_emptynodelist_length(self):
 | |
|         node_list = EmptyNodeList()
 | |
|         # Reading
 | |
|         self.assertEqual(node_list.length, 0)
 | |
|         # Writing
 | |
|         with self.assertRaises(xml.dom.NoModificationAllowedErr):
 | |
|             node_list.length = 111
 | |
| 
 | |
|     def test_emptynodelist___add__(self):
 | |
|         node_list = EmptyNodeList() + NodeList()
 | |
|         self.assertEqual(node_list, NodeList())
 | |
| 
 | |
|     def test_emptynodelist___radd__(self):
 | |
|         node_list = [1,2] + EmptyNodeList()
 | |
|         self.assertEqual(node_list, [1,2])
 | |
| 
 | |
| 
 | |
| class NodeListTestCase(unittest.TestCase):
 | |
|     """Tests for the NodeList class."""
 | |
| 
 | |
|     def test_nodelist_item(self):
 | |
|         # Test items access on a NodeList.
 | |
|         # First, use an empty NodeList.
 | |
|         node_list = NodeList()
 | |
| 
 | |
|         self.assertIsNone(node_list.item(0))
 | |
|         self.assertIsNone(node_list.item(-1))
 | |
| 
 | |
|         with self.assertRaises(IndexError):
 | |
|             node_list[0]
 | |
|         with self.assertRaises(IndexError):
 | |
|             node_list[-1]
 | |
| 
 | |
|         # Now, use a NodeList with items.
 | |
|         node_list.append(111)
 | |
|         node_list.append(999)
 | |
| 
 | |
|         self.assertEqual(node_list.item(0), 111)
 | |
|         self.assertIsNone(node_list.item(-1)) # invalid item
 | |
| 
 | |
|         self.assertEqual(node_list[0], 111)
 | |
|         self.assertEqual(node_list[-1], 999)
 | |
| 
 | |
|     def test_nodelist_length(self):
 | |
|         node_list = NodeList([1, 2])
 | |
|         # Reading
 | |
|         self.assertEqual(node_list.length, 2)
 | |
|         # Writing
 | |
|         with self.assertRaises(xml.dom.NoModificationAllowedErr):
 | |
|             node_list.length = 111
 | |
| 
 | |
|     def test_nodelist___add__(self):
 | |
|         node_list = NodeList([3, 4]) + [1, 2]
 | |
|         self.assertEqual(node_list, NodeList([3, 4, 1, 2]))
 | |
| 
 | |
|     def test_nodelist___radd__(self):
 | |
|         node_list = [1, 2] + NodeList([3, 4])
 | |
|         self.assertEqual(node_list, NodeList([1, 2, 3, 4]))
 | |
| 
 | |
|     def test_nodelist_pickle_roundtrip(self):
 | |
|         # Test pickling and unpickling of a NodeList.
 | |
| 
 | |
|         for proto in range(pickle.HIGHEST_PROTOCOL + 1):
 | |
|             # Empty NodeList.
 | |
|             node_list = NodeList()
 | |
|             pickled = pickle.dumps(node_list, proto)
 | |
|             unpickled = pickle.loads(pickled)
 | |
|             self.assertIsNot(unpickled, node_list)
 | |
|             self.assertEqual(unpickled, node_list)
 | |
| 
 | |
|             # Non-empty NodeList.
 | |
|             node_list.append(1)
 | |
|             node_list.append(2)
 | |
|             pickled = pickle.dumps(node_list, proto)
 | |
|             unpickled = pickle.loads(pickled)
 | |
|             self.assertIsNot(unpickled, node_list)
 | |
|             self.assertEqual(unpickled, node_list)
 | |
| 
 | |
|     def test_nodelist_copy(self):
 | |
|         # Empty NodeList.
 | |
|         node_list = NodeList()
 | |
|         copied = copy.copy(node_list)
 | |
|         self.assertIsNot(copied, node_list)
 | |
|         self.assertEqual(copied, node_list)
 | |
| 
 | |
|         # Non-empty NodeList.
 | |
|         node_list.append([1])
 | |
|         node_list.append([2])
 | |
|         copied = copy.copy(node_list)
 | |
|         self.assertIsNot(copied, node_list)
 | |
|         self.assertEqual(copied, node_list)
 | |
|         for x, y in zip(copied, node_list):
 | |
|             self.assertIs(x, y)
 | |
| 
 | |
|     def test_nodelist_deepcopy(self):
 | |
|         # Empty NodeList.
 | |
|         node_list = NodeList()
 | |
|         copied = copy.deepcopy(node_list)
 | |
|         self.assertIsNot(copied, node_list)
 | |
|         self.assertEqual(copied, node_list)
 | |
| 
 | |
|         # Non-empty NodeList.
 | |
|         node_list.append([1])
 | |
|         node_list.append([2])
 | |
|         copied = copy.deepcopy(node_list)
 | |
|         self.assertIsNot(copied, node_list)
 | |
|         self.assertEqual(copied, node_list)
 | |
|         for x, y in zip(copied, node_list):
 | |
|             self.assertIsNot(x, y)
 | |
|             self.assertEqual(x, y)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main()
 | 
