Transfer iterator result ownership

Generated with the assistance of an AI coding tool.
This commit is contained in:
Thomas Krijnen
2026-08-09 04:54:51 +02:00
parent be3c2ee770
commit dcfc22e29e
5 changed files with 77 additions and 18 deletions
@@ -203,6 +203,36 @@ def test_iterator():
assert iterator.initialize()
@pytest.mark.parametrize("num_threads", [1, 2])
def test_iterator_get_transfers_ownership(num_threads):
settings = ifcopenshell.geom.settings()
iterator = ifcopenshell.geom.iterator(settings, fn, num_threads)
assert iterator.initialize()
element = iterator.get()
element_id = element.id
with pytest.raises(RuntimeError, match="already been retrieved"):
iterator.get()
iterator.next()
assert element.id == element_id
@pytest.mark.parametrize("num_threads", [1, 2])
def test_iterator_get_native_transfers_ownership(num_threads):
settings = ifcopenshell.geom.settings()
iterator = ifcopenshell.geom.iterator(settings, fn, num_threads)
assert iterator.initialize()
element = iterator.get_native()
element_id = element.id
with pytest.raises(RuntimeError, match="already been retrieved"):
iterator.get_native()
iterator.next()
assert element.id == element_id
def test_logging():
assert ifcopenshell.logger
logger = ifcopenshell.logger()