| 
									
										
										
										
											2024-03-25 17:32:11 +02:00
										 |  |  | #include "parts.h"
 | 
					
						
							|  |  |  | #include "util.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Test _PyBytes_Resize() */ | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | bytes_resize(PyObject *Py_UNUSED(module), PyObject *args) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     PyObject *obj; | 
					
						
							|  |  |  |     Py_ssize_t newsize; | 
					
						
							|  |  |  |     int new; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!PyArg_ParseTuple(args, "Onp", &obj, &newsize, &new)) | 
					
						
							|  |  |  |         return NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     NULLABLE(obj); | 
					
						
							|  |  |  |     if (new) { | 
					
						
							|  |  |  |         assert(obj != NULL); | 
					
						
							|  |  |  |         assert(PyBytes_CheckExact(obj)); | 
					
						
							|  |  |  |         PyObject *newobj = PyBytes_FromStringAndSize(NULL, PyBytes_Size(obj)); | 
					
						
							|  |  |  |         if (newobj == NULL) { | 
					
						
							|  |  |  |             return NULL; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         memcpy(PyBytes_AsString(newobj), PyBytes_AsString(obj), PyBytes_Size(obj)); | 
					
						
							|  |  |  |         obj = newobj; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         Py_XINCREF(obj); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (_PyBytes_Resize(&obj, newsize) < 0) { | 
					
						
							|  |  |  |         assert(obj == NULL); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         assert(obj != NULL); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return obj; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-30 14:57:33 +02:00
										 |  |  | /* Test PyBytes_Join() */ | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | bytes_join(PyObject *Py_UNUSED(module), PyObject *args) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     PyObject *sep, *iterable; | 
					
						
							|  |  |  |     if (!PyArg_ParseTuple(args, "OO", &sep, &iterable)) { | 
					
						
							|  |  |  |         return NULL; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     NULLABLE(sep); | 
					
						
							|  |  |  |     NULLABLE(iterable); | 
					
						
							|  |  |  |     return PyBytes_Join(sep, iterable); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-25 17:32:11 +02:00
										 |  |  | static PyMethodDef test_methods[] = { | 
					
						
							|  |  |  |     {"bytes_resize", bytes_resize, METH_VARARGS}, | 
					
						
							| 
									
										
										
										
											2024-08-30 14:57:33 +02:00
										 |  |  |     {"bytes_join", bytes_join, METH_VARARGS}, | 
					
						
							| 
									
										
										
										
											2024-03-25 17:32:11 +02:00
										 |  |  |     {NULL}, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | _PyTestCapi_Init_Bytes(PyObject *m) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (PyModule_AddFunctions(m, test_methods) < 0) { | 
					
						
							|  |  |  |         return -1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return 0; | 
					
						
							|  |  |  | } |