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

55 lines
1.9 KiB
GDScript

extends GutInternalTester
var DynmaicGdScript = load("res://addons/gut/dynamic_gdscript.gd")
var _dyn_gd = null
var _created_instance_count = 0
func before_each():
_dyn_gd = DynmaicGdScript.new()
_dyn_gd.default_script_name_no_extension = 'test_create_script_from_source'
# makes sure we don't repeat resources paths in tests
_dyn_gd.default_script_resource_path = str('res://addons/tests/', _created_instance_count, '/')
_created_instance_count += 1
func test_can_create_a_script_from_source():
var DynScript = _dyn_gd.create_script_from_source('var a = 1')
assert_not_null(DynScript)
func test_can_create_instance_of_script_from_source():
var DynScript = _dyn_gd.create_script_from_source('var a = 1')
var i = DynScript.new()
assert_eq(i.a, 1)
func test_resource_path_is_in_addons_directory():
var DynScript = _dyn_gd.create_script_from_source('var a = 1')
assert_string_starts_with(DynScript.resource_path, 'res://addons/')
func test_each_script_gets_a_unique_resource_path():
var DynScript1 = _dyn_gd.create_script_from_source('var a = 1')
var DynScript2 = _dyn_gd.create_script_from_source('var a = 1')
var DynScript3 = _dyn_gd.create_script_from_source('var a = 1')
assert_ne(DynScript1.resource_path, DynScript2.resource_path, '1 - 2')
assert_ne(DynScript2.resource_path, DynScript3.resource_path, '2 - 3')
assert_ne(DynScript1.resource_path, DynScript3.resource_path, '1 - 3')
func test_when_override_path_specified_it_is_used_for_resource_path():
var DynScript = _dyn_gd.create_script_from_source('var a = 1', 'res://foo/bar.gd')
assert_eq(DynScript.resource_path, 'res://foo/bar.gd')
func test_when_script_source_invalid_the_error_code_is_returned():
if(EngineDebugger.is_active()):
pending("Test skipped, disable debug to run test")
return
var DynScript = _dyn_gd.create_script_from_source("asdf\n\n\nasdfasfd\n\nasdf")
assert_engine_error("unexpected identifier")
assert_eq(typeof(DynScript), TYPE_INT)