Files
game-cards/addons/gut/scratch/demo_extends_issue.gd
2026-05-29 09:16:10 +08:00

67 lines
1.6 KiB
GDScript

# Script to demo this failing test:
#
# func test_doubled_instances_extend_the_inner_class():
# var inst = doubler.double_inner(INNER_CLASSES_PATH, 'InnerA').new()
# assert_is(inst, InnerClasses.InnerA)
extends SceneTree
const INNER_CLASSES_PATH = 'res://test/resources/doubler_test_objects/inner_classes.gd'
var InnerClasses = load(INNER_CLASSES_PATH)
class ExtendsInnerClassesInnerAWithPath:
extends 'res://test/resources/doubler_test_objects/inner_classes.gd'.InnerA
func make_script(script_source):
var DynScript = GDScript.new()
DynScript.source_code = script_source
DynScript.reload()
return DynScript
# this works
func demo_node2d():
var script_source = '' + \
"extends Node2D\n" + \
"func hello_world():\n" + \
"\tprint('--- hello world ---')"
print(script_source)
var inst = make_script(script_source).new()
if(inst is Node2D):
print('pass - yes it is')
else:
print('fail - unfortunately it is not')
inst.free()
func demo_dyn_inner_class():
print('-- demo_dyn_inner_class')
var script_source = '' + \
"extends '" + INNER_CLASSES_PATH + "'.InnerA\n"
var inst = make_script(script_source).new()
if(inst is InnerClasses):
print('fail - is InnerClasses')
if(inst is InnerClasses.InnerA):
print('pass - is InnerA')
func demo_inner_extends_full_path():
print('-- demo_inner_extends_full_path')
var inst = ExtendsInnerClassesInnerAWithPath.new()
print(inst.get_a())
if(inst is InnerClasses):
print('fail - 2 is InnerClasses')
if(inst is InnerClasses.InnerA):
print('pass - 2 is InnerA')
# Currently not demoing anything wrong.
func _init():
demo_dyn_inner_class()
demo_inner_extends_full_path()
demo_node2d()
quit()