diff options
author | sonots <sonots@gmail.com> | 2017-10-24 16:28:12 +0900 |
---|---|---|
committer | sonots <sonots@gmail.com> | 2017-10-31 16:57:23 +0900 |
commit | 4920f701758e36a724eefd5840ab7106c23a51e2 (patch) | |
tree | 6e8f17e894b71e06d6c92d8db3b34df34ce54d95 | |
parent | 3c3829c569855b5d1b918240d5736a186547d36e (diff) | |
download | cython-4920f701758e36a724eefd5840ab7106c23a51e2.tar.gz |
Add tests/run/tss.pyx
-rw-r--r-- | tests/run/tss.pyx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/run/tss.pyx b/tests/run/tss.pyx new file mode 100644 index 000000000..c21b869a6 --- /dev/null +++ b/tests/run/tss.pyx @@ -0,0 +1,51 @@ +# mode: run + +from cpython.pythread cimport * + +def tss_create_delete(): + """ + >>> tss_create_delete() + (True, False) + """ + cdef Py_tss_t tss_key = Py_tss_NEEDS_INIT + cdef bint after_create, after_delete + if PyThread_tss_create(&tss_key) > 0: + # handle key creation failure + pass + after_create = PyThread_tss_is_created(&tss_key) != 0 + PyThread_tss_delete(&tss_key) + after_delete = PyThread_tss_is_created(&tss_key) != 0 + return (after_create, after_delete) + +def tss_alloc_free(): + """ + >>> tss_alloc_free() + (True, False) + """ + cdef Py_tss_t *ptr_key + cdef bint after_alloc, after_free + ptr_key = PyThread_tss_alloc() + if ptr_key == NULL: + # handle key allocation failure + pass + after_alloc = PyThread_tss_is_created(ptr_key) != 0 + PyThread_tss_free(ptr_key) + after_free = PyThread_tss_is_created(ptr_key) != 0 + return (after_alloc, after_free) + +def tss_set_get(): + """ + >>> tss_set_get() + 1 + """ + cdef Py_tss_t tss_key = Py_tss_NEEDS_INIT + cdef int the_value = 1 + cdef int ret_value + if PyThread_tss_create(&tss_key) > 0: + # handle key creation failure + pass + if PyThread_tss_get(&tss_key) == NULL: + PyThread_tss_set(&tss_key, <void *>&the_value) + ret_value = (<int *>PyThread_tss_get(&tss_key))[0] + PyThread_tss_delete(&tss_key) + return ret_value |