mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	 f66c857572
			
		
	
	
		f66c857572
		
			
		
	
	
	
	
		
			
			- [x] ``Py_buffer`` struct - [x] ``PyBuffer_*()`` API functions - [x] ``PyBUF_*`` constants - [x] ``Py_bf_getbuffer`` and ``Py_bf_releasebuffer`` type slots - [x] ``PyMemoryView_FromBuffer()`` API - [x] tests for limited API - [x] ``make regen-limited-abi`` - [x] documentation update - [ ] export ``PyPickleBuffer*()`` API ???
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| from test.support import import_helper
 | |
| import types
 | |
| 
 | |
| xxlimited = import_helper.import_module('xxlimited')
 | |
| xxlimited_35 = import_helper.import_module('xxlimited_35')
 | |
| 
 | |
| 
 | |
| class CommonTests:
 | |
|     module: types.ModuleType
 | |
| 
 | |
|     def test_xxo_new(self):
 | |
|         xxo = self.module.Xxo()
 | |
| 
 | |
|     def test_xxo_attributes(self):
 | |
|         xxo = self.module.Xxo()
 | |
|         with self.assertRaises(AttributeError):
 | |
|             xxo.foo
 | |
|         with self.assertRaises(AttributeError):
 | |
|             del xxo.foo
 | |
| 
 | |
|         xxo.foo = 1234
 | |
|         self.assertEqual(xxo.foo, 1234)
 | |
| 
 | |
|         del xxo.foo
 | |
|         with self.assertRaises(AttributeError):
 | |
|             xxo.foo
 | |
| 
 | |
|     def test_foo(self):
 | |
|         # the foo function adds 2 numbers
 | |
|         self.assertEqual(self.module.foo(1, 2), 3)
 | |
| 
 | |
|     def test_str(self):
 | |
|         self.assertTrue(issubclass(self.module.Str, str))
 | |
|         self.assertIsNot(self.module.Str, str)
 | |
| 
 | |
|         custom_string = self.module.Str("abcd")
 | |
|         self.assertEqual(custom_string, "abcd")
 | |
|         self.assertEqual(custom_string.upper(), "ABCD")
 | |
| 
 | |
|     def test_new(self):
 | |
|         xxo = self.module.new()
 | |
|         self.assertEqual(xxo.demo("abc"), "abc")
 | |
| 
 | |
| 
 | |
| class TestXXLimited(CommonTests, unittest.TestCase):
 | |
|     module = xxlimited
 | |
| 
 | |
|     def test_xxo_demo(self):
 | |
|         xxo = self.module.Xxo()
 | |
|         other = self.module.Xxo()
 | |
|         self.assertEqual(xxo.demo("abc"), "abc")
 | |
|         self.assertEqual(xxo.demo(xxo), xxo)
 | |
|         self.assertEqual(xxo.demo(other), other)
 | |
|         self.assertEqual(xxo.demo(0), None)
 | |
| 
 | |
|     def test_error(self):
 | |
|         with self.assertRaises(self.module.Error):
 | |
|             raise self.module.Error
 | |
| 
 | |
|     def test_buffer(self):
 | |
|         xxo = self.module.Xxo()
 | |
|         self.assertEqual(xxo.x_exports, 0)
 | |
|         b1 = memoryview(xxo)
 | |
|         self.assertEqual(xxo.x_exports, 1)
 | |
|         b2 = memoryview(xxo)
 | |
|         self.assertEqual(xxo.x_exports, 2)
 | |
|         b1[0] = 1
 | |
|         self.assertEqual(b1[0], 1)
 | |
|         self.assertEqual(b2[0], 1)
 | |
| 
 | |
| 
 | |
| class TestXXLimited35(CommonTests, unittest.TestCase):
 | |
|     module = xxlimited_35
 | |
| 
 | |
|     def test_xxo_demo(self):
 | |
|         xxo = self.module.Xxo()
 | |
|         other = self.module.Xxo()
 | |
|         self.assertEqual(xxo.demo("abc"), "abc")
 | |
|         self.assertEqual(xxo.demo(0), None)
 | |
| 
 | |
|     def test_roj(self):
 | |
|         # the roj function always fails
 | |
|         with self.assertRaises(SystemError):
 | |
|             self.module.roj(0)
 | |
| 
 | |
|     def test_null(self):
 | |
|         null1 = self.module.Null()
 | |
|         null2 = self.module.Null()
 | |
|         self.assertNotEqual(null1, null2)
 |