slint/api/python/tests/test_gc.py
Aurindam Jana 0cfeec1a31
Update Slint Community License (#4994)
Updated the version from 1.1 to 1.2 
Renamed the header to "Slint Royalty-free Desktop, Mobile, and Web Applications License"
Added definition of "Mobile Application" and grant of right
Moved "Limitations" to 3rd section and "License Conditions - Attributions" to 2nd section
Added flexibility to choose between showing "MadeWithSlint" as a dialog/splash screen or on a public webpage
Moved the para on copyright notices to section under "Limitations"
2024-04-15 15:18:55 +02:00

41 lines
1.1 KiB
Python

# Copyright © SixtyFPS GmbH <info@slint.dev>
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.2 OR LicenseRef-Slint-commercial
from slint import slint as native
import weakref
import gc
def test_callback_gc():
compiler = native.ComponentCompiler()
compdef = compiler.build_from_source("""
export component Test {
out property <string> test-value: "Ok";
callback test-callback(string) -> string;
}
""", "")
assert compdef != None
instance = compdef.create()
assert instance != None
class Handler:
def __init__(self, instance):
self.instance = instance
def python_callback(self, input):
return input + instance.get_property("test-value")
handler = Handler(instance)
instance.set_callback(
"test-callback", handler.python_callback)
handler = None
assert instance.invoke("test-callback", "World") == "WorldOk"
wr = weakref.ref(instance)
assert wr() is not None
instance = None
gc.collect()
assert wr() is None