summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_free_threading/test_slots.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_free_threading/test_slots.py')
-rw-r--r--Lib/test/test_free_threading/test_slots.py244
1 files changed, 244 insertions, 0 deletions
diff --git a/Lib/test/test_free_threading/test_slots.py b/Lib/test/test_free_threading/test_slots.py
index 758f74f..a3b9f4b 100644
--- a/Lib/test/test_free_threading/test_slots.py
+++ b/Lib/test/test_free_threading/test_slots.py
@@ -1,3 +1,4 @@
+import _testcapi
import threading
from test.support import threading_helper
from unittest import TestCase
@@ -41,3 +42,246 @@ class TestSlots(TestCase):
assert 0 <= eggs <= iters
run_in_threads([writer, reader, reader, reader])
+
+ def test_T_BOOL(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ # different code paths for True and False
+ spam_old.T_BOOL = True
+ spam_new.T_BOOL = True
+ spam_old.T_BOOL = False
+ spam_new.T_BOOL = False
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_BOOL
+ spam_new.T_BOOL
+
+ run_in_threads([writer, reader])
+
+ def test_T_BYTE(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_BYTE = 0
+ spam_new.T_BYTE = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_BYTE
+ spam_new.T_BYTE
+
+ run_in_threads([writer, reader])
+
+ def test_T_UBYTE(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_UBYTE = 0
+ spam_new.T_UBYTE = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_UBYTE
+ spam_new.T_UBYTE
+
+ run_in_threads([writer, reader])
+
+ def test_T_SHORT(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_SHORT = 0
+ spam_new.T_SHORT = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_SHORT
+ spam_new.T_SHORT
+
+ run_in_threads([writer, reader])
+
+ def test_T_USHORT(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_USHORT = 0
+ spam_new.T_USHORT = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_USHORT
+ spam_new.T_USHORT
+
+ run_in_threads([writer, reader])
+
+ def test_T_INT(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_INT = 0
+ spam_new.T_INT = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_INT
+ spam_new.T_INT
+
+ run_in_threads([writer, reader])
+
+ def test_T_UINT(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_UINT = 0
+ spam_new.T_UINT = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_UINT
+ spam_new.T_UINT
+
+ run_in_threads([writer, reader])
+
+ def test_T_LONG(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_LONG = 0
+ spam_new.T_LONG = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_LONG
+ spam_new.T_LONG
+
+ run_in_threads([writer, reader])
+
+ def test_T_ULONG(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_ULONG = 0
+ spam_new.T_ULONG = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_ULONG
+ spam_new.T_ULONG
+
+ run_in_threads([writer, reader])
+
+ def test_T_PYSSIZET(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_PYSSIZET = 0
+ spam_new.T_PYSSIZET = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_PYSSIZET
+ spam_new.T_PYSSIZET
+
+ run_in_threads([writer, reader])
+
+ def test_T_FLOAT(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_FLOAT = 0.0
+ spam_new.T_FLOAT = 0.0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_FLOAT
+ spam_new.T_FLOAT
+
+ run_in_threads([writer, reader])
+
+ def test_T_DOUBLE(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_DOUBLE = 0.0
+ spam_new.T_DOUBLE = 0.0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_DOUBLE
+ spam_new.T_DOUBLE
+
+ run_in_threads([writer, reader])
+
+ def test_T_LONGLONG(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_LONGLONG = 0
+ spam_new.T_LONGLONG = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_LONGLONG
+ spam_new.T_LONGLONG
+
+ run_in_threads([writer, reader])
+
+ def test_T_ULONGLONG(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_ULONGLONG = 0
+ spam_new.T_ULONGLONG = 0
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_ULONGLONG
+ spam_new.T_ULONGLONG
+
+ run_in_threads([writer, reader])
+
+ def test_T_CHAR(self):
+ spam_old = _testcapi._test_structmembersType_OldAPI()
+ spam_new = _testcapi._test_structmembersType_NewAPI()
+
+ def writer():
+ for _ in range(1_000):
+ spam_old.T_CHAR = "c"
+ spam_new.T_CHAR = "c"
+
+ def reader():
+ for _ in range(1_000):
+ spam_old.T_CHAR
+ spam_new.T_CHAR
+
+ run_in_threads([writer, reader])