Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 6m41s
167 lines
5.2 KiB
GDScript
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()
|