Files
game-cards/addons/gut/test/unit/test_autofree.gd
2026-05-29 09:16:10 +08:00

111 lines
2.6 KiB
GDScript

extends GutTest
var AutoFree = load('res://addons/gut/autofree.gd')
var _starting_orphans = 0
func before_all():
_starting_orphans = gut.get_orphan_counter().orphan_count()
func after_all():
assert_eq(gut.get_orphan_counter().orphan_count(), _starting_orphans, 'no new orphans during script')
func test_can_make_one():
assert_not_null(AutoFree.new())
func test_can_add_something():
var af = AutoFree.new()
var to_free = Node2D.new()
af.add_free(to_free)
assert_eq(af.get_free_count(), 1)
to_free.free()
func test_calling_free_all_frees_them():
var af = AutoFree.new()
var to_free1 = Node2D.new()
var to_free2 = Node.new()
af.add_free(to_free1)
af.add_free(to_free2)
af.free_all()
assert_freed(to_free1, 'to free 1')
assert_freed(to_free2, 'to free 2')
assert_eq(af.get_free_count(), 0)
func test_does_not_add_basic_types():
var af = AutoFree.new()
af.add_free(1)
assert_eq(af.get_free_count(), 0)
func test_does_not_add_references():
var af = AutoFree.new()
var r = RefCounted.new()
af.add_free(r)
assert_eq(af.get_free_count(), 0)
func test_add_queue_free():
var af = AutoFree.new()
var n1 = Node.new()
af.add_queue_free(n1)
assert_eq(af.get_queue_free_count(), 1)
n1.free()
func test_add_queue_free_does_not_add_basic_types():
var af = AutoFree.new()
af.add_queue_free(1)
assert_eq(af.get_queue_free_count(), 0)
func test_calling_free_all_queues_free():
var af = AutoFree.new()
var to_free1 = Node2D.new()
var to_free2 = Node.new()
af.add_queue_free(to_free1)
af.add_queue_free(to_free2)
af.free_all()
assert_not_freed(to_free1, 'free1')
assert_not_freed(to_free2, 'free2')
assert_eq(af.get_queue_free_count(), 0)
await wait_seconds(1)
assert_freed(to_free1, 'free1')
assert_freed(to_free2, 'free2')
func test_can_free_things_in_tree():
var af = AutoFree.new()
var n = Node.new()
add_child(n)
af.add_free(n)
af.free_all()
assert_freed(n, 'node')
func test_watch_for_orphans():
var n = autofree(Node.new())
pass_test('trying to make orphans')
func test_watch_for_orphans2():
var n = autoqfree(Node.new())
pass_test('trying to make orphans')
func test_has_instance_id_true_for_free():
var af = AutoFree.new()
var n = Node.new()
af.add_free(n)
assert_true(af.has_instance_id(n.get_instance_id()))
n.free()
func test_has_instance_id_true_for_queue_free():
var af = AutoFree.new()
var n = Node.new()
af.add_queue_free(n)
assert_true(af.has_instance_id(n.get_instance_id()))
n.free()
func test_has_false_after_free_all():
var af = AutoFree.new()
var n = Node.new()
var inst_id = n.get_instance_id()
af.add_free(n)
af.free_all()
assert_false(af.has_instance_id(inst_id))