87 lines
3.3 KiB
GDScript
87 lines
3.3 KiB
GDScript
## A tuple implementation for GdUnit4 test assertions and value extraction.
|
|
## @tutorial(GdUnit4 Array Assertions): https://mikeschulze.github.io/gdUnit4/latest/testing/assert-array/#extractv
|
|
## @tutorial(GdUnit4 Testing Framework): https://mikeschulze.github.io/gdUnit4/
|
|
## [br]
|
|
## The GdUnitTuple class is a utility container designed specifically for the GdUnit4
|
|
## testing framework. It enables advanced assertion operations, particularly when
|
|
## extracting and comparing multiple values from complex test results.
|
|
## [br]
|
|
## [b]Primary Use Cases in Testing:[/b] [br]
|
|
## - Extracting multiple properties from test objects with [method extractv]## [br]
|
|
## - Grouping related assertion values for comparison## [br]
|
|
## - Returning multiple values from test helper methods## [br]
|
|
## - Organizing expected vs actual value pairs in assertions## [br]
|
|
## [br]
|
|
## [b]Example Usage in Tests:[/b]
|
|
## [codeblock]
|
|
## func test_player_stats_after_level_up():
|
|
## var player = Player.new()
|
|
## player.level_up()
|
|
##
|
|
## # Extract multiple properties using tuple
|
|
## assert_array([player]) \
|
|
## .extractv(extr("name"), extr("level"), extr("hp")) \
|
|
## .contains(tuple("Hero", 2, 150))
|
|
##
|
|
## func test_enemy_spawn_positions():
|
|
## var enemies: Array = spawn_enemies(3)
|
|
##
|
|
## # Verify multiple enemies have correct position data
|
|
## assert_array(enemies) \
|
|
## .extractv(extr("position.x"), extr("position.y")) \
|
|
## .contains_exactly([
|
|
## tuple(100, 200),
|
|
## tuple(150, 200),
|
|
## tuple(200, 200)
|
|
## ])
|
|
## [/codeblock]
|
|
## [br]
|
|
## [b]Integration with GdUnit4 Assertions:[/b] [br]
|
|
## Tuples work seamlessly with array assertion methods like: [br]
|
|
## - [code]contains()[/code] - Check if extracted values contain specific tuples [br]
|
|
## - [code]contains_exactly()[/code] - Verify exact tuple matches [br]
|
|
## - [code]is_equal()[/code] - Compare tuple equality [br]
|
|
## [br]
|
|
## [b]Note:[/b] This class is part of the GdUnit4 testing framework's internal
|
|
## utilities and is primarily intended for use within test assertions rather
|
|
## than production code.
|
|
class_name GdUnitTuple
|
|
extends RefCounted
|
|
|
|
var _values: Array = []
|
|
|
|
|
|
## Initializes a new GdUnitTuple with test values.
|
|
## [br]
|
|
## Creates a tuple to hold multiple values extracted from test objects
|
|
## or expected values for assertions. Commonly used with the [code]tuple()[/code]
|
|
## helper function in GdUnit4 tests.
|
|
## [br]
|
|
## [b]Parameters:[/b]
|
|
## - [code]...args[/code]: Variable number of values to store.
|
|
func _init(...args: Array) -> void:
|
|
_values = args
|
|
|
|
|
|
## Returns the tuple's values as an array for assertion comparisons.
|
|
## [br]
|
|
## Provides access to the stored test values. Used internally by GdUnit4's
|
|
## assertion system when comparing tuples in test validations.
|
|
## [br]
|
|
## [b]Returns:[/b]
|
|
## An [Array] containing all values stored in the tuple.
|
|
func values() -> Array:
|
|
return _values
|
|
|
|
|
|
## Returns a string representation for test output and debugging.
|
|
## [br]
|
|
## Formats the tuple for display in test results, error messages, and debug logs.
|
|
## This method is automatically called by GdUnit4 when displaying assertion
|
|
## failures involving tuples.
|
|
## [br]
|
|
## [b]Returns:[/b]
|
|
## A [String] in the format "tuple([value1, value2, ...])"
|
|
func _to_string() -> String:
|
|
return "tuple(%s)" % str(_values)
|