Files
MovementTests/addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd
Minimata bdce8b969c
Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 6m41s
reinstalling GDUnit from assetlib
2026-01-26 09:05:55 +01:00

167 lines
5.2 KiB
GDScript

extends GdUnitObjectAssert
var _base: GdUnitAssertImpl
func _init(current: Variant) -> void:
_base = GdUnitAssertImpl.new(current)
# save the actual assert instance on the current thread context
GdUnitThreadManager.get_current_context().set_assert(self)
if (current != null
and (GdUnitAssertions.validate_value_type(current, TYPE_BOOL)
or GdUnitAssertions.validate_value_type(current, TYPE_INT)
or GdUnitAssertions.validate_value_type(current, TYPE_FLOAT)
or GdUnitAssertions.validate_value_type(current, TYPE_STRING))):
@warning_ignore("return_value_discarded")
report_error("GdUnitObjectAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current))
func _notification(event: int) -> void:
if event == NOTIFICATION_PREDELETE:
if _base != null:
_base.notification(event)
_base = null
func current_value() -> Variant:
return _base.current_value()
func report_success() -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.report_success()
return self
func report_error(error: String) -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.report_error(error)
return self
func failure_message() -> String:
return _base.failure_message()
func override_failure_message(message: String) -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.override_failure_message(message)
return self
func append_failure_message(message: String) -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.append_failure_message(message)
return self
func is_equal(expected: Variant) -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.is_equal(expected)
return self
func is_not_equal(expected: Variant) -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.is_not_equal(expected)
return self
func is_null() -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.is_null()
return self
func is_not_null() -> GdUnitObjectAssert:
@warning_ignore("return_value_discarded")
_base.is_not_null()
return self
@warning_ignore("shadowed_global_identifier")
func is_same(expected: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if not is_same(current, expected):
return report_error(GdAssertMessages.error_is_same(current, expected))
return report_success()
func is_not_same(expected: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if is_same(current, expected):
return report_error(GdAssertMessages.error_not_same(current, expected))
return report_success()
func is_instanceof(type: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if current == null or not is_instance_of(current, type):
var result_expected := GdObjects.extract_class_name(type)
var result_current := GdObjects.extract_class_name(current)
return report_error(GdAssertMessages.error_is_instanceof(result_current, result_expected))
return report_success()
func is_not_instanceof(type: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if is_instance_of(current, type):
var result := GdObjects.extract_class_name(type)
if result.is_success():
return report_error("Expected not be a instance of <%s>" % str(result.value()))
push_error("Internal ERROR: %s" % result.error_message())
return self
return report_success()
## Checks whether the current object inherits from the specified type.
func is_inheriting(type: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if not is_instance_of(current, TYPE_OBJECT):
return report_error("Expected '%s' to inherit from at least Object." % str(current))
var result := _inherits(current, type)
if result.is_success():
return report_success()
return report_error(result.error_message())
## Checks whether the current object does NOT inherit from the specified type.
func is_not_inheriting(type: Variant) -> GdUnitObjectAssert:
var current: Variant = current_value()
if not is_instance_of(current, TYPE_OBJECT):
return report_error("Expected '%s' to inherit from at least Object." % str(current))
var result := _inherits(current, type)
if result.is_success():
return report_error("Expected type to not inherit from <%s>" % _extract_class_type(type))
return report_success()
func _inherits(current: Variant, type: Variant) -> GdUnitResult:
var type_as_string := _extract_class_type(type)
if type_as_string == "Object":
return GdUnitResult.success("")
var obj: Object = current
for p in obj.get_property_list():
var clazz_name :String = p["name"]
if p["usage"] == PROPERTY_USAGE_CATEGORY and clazz_name == p["hint_string"] and clazz_name == type_as_string:
return GdUnitResult.success("")
var script: Script = obj.get_script()
if script != null:
while script != null:
var result := GdObjects.extract_class_name(script)
if result.is_success() and result.value() == type_as_string:
return GdUnitResult.success("")
script = script.get_base_script()
return GdUnitResult.error("Expected type to inherit from <%s>" % type_as_string)
func _extract_class_type(type: Variant) -> String:
if type is String:
return type
var result := GdObjects.extract_class_name(type)
if result.is_error():
return ""
return result.value()