gdlint fixes
Some checks failed
GDScript Auto-Formatting / Auto-Format GDScript Code (pull_request) Failing after 12s
GDScript Linting / GDScript Code Quality Check (pull_request) Failing after 11s

This commit is contained in:
2025-09-27 21:45:55 +04:00
parent 35bdd44649
commit 60279542e1
10 changed files with 477 additions and 477 deletions

View File

@@ -4,7 +4,7 @@ extends SceneTree
##
## Tests scene transitions, input validation, and gameplay modes.
const TestHelper = preload("res://tests/helpers/TestHelper.gd")
const TestHelperClass = preload("res://tests/helpers/TestHelper.gd")
var game_manager: Node
var original_scene: Node
@@ -23,13 +23,13 @@ func _initialize():
func run_tests():
TestHelper.print_test_header("GameManager")
TestHelperClass.print_test_header("GameManager")
# Get reference to GameManager
game_manager = root.get_node("GameManager")
if not game_manager:
TestHelper.assert_true(false, "GameManager autoload not found")
TestHelper.print_test_footer("GameManager")
TestHelperClass.assert_true(false, "GameManager autoload not found")
TestHelperClass.print_test_footer("GameManager")
return
# Store original scene reference
@@ -49,14 +49,14 @@ func run_tests():
# Cleanup
cleanup_tests()
TestHelper.print_test_footer("GameManager")
TestHelperClass.print_test_footer("GameManager")
func test_basic_functionality():
TestHelper.print_step("Basic Functionality")
TestHelperClass.print_step("Basic Functionality")
# Test that GameManager has expected properties
TestHelper.assert_has_properties(
TestHelperClass.assert_has_properties(
game_manager, ["pending_gameplay_mode", "is_changing_scene"], "GameManager properties"
)
@@ -70,83 +70,83 @@ func test_basic_functionality():
"save_game",
"exit_to_main_menu"
]
TestHelper.assert_has_methods(game_manager, expected_methods, "GameManager methods")
TestHelperClass.assert_has_methods(game_manager, expected_methods, "GameManager methods")
# Test initial state
TestHelper.assert_equal(
TestHelperClass.assert_equal(
"match3", game_manager.pending_gameplay_mode, "Default pending gameplay mode"
)
TestHelper.assert_false(game_manager.is_changing_scene, "Initial scene change flag")
TestHelperClass.assert_false(game_manager.is_changing_scene, "Initial scene change flag")
func test_scene_constants():
TestHelper.print_step("Scene Path Constants")
TestHelperClass.print_step("Scene Path Constants")
# Test that scene path constants are defined and valid
TestHelper.assert_true("GAME_SCENE_PATH" in game_manager, "GAME_SCENE_PATH constant exists")
TestHelper.assert_true("MAIN_SCENE_PATH" in game_manager, "MAIN_SCENE_PATH constant exists")
TestHelperClass.assert_true("GAME_SCENE_PATH" in game_manager, "GAME_SCENE_PATH constant exists")
TestHelperClass.assert_true("MAIN_SCENE_PATH" in game_manager, "MAIN_SCENE_PATH constant exists")
# Test path format validation
var game_path = game_manager.GAME_SCENE_PATH
var main_path = game_manager.MAIN_SCENE_PATH
TestHelper.assert_true(game_path.begins_with("res://"), "Game scene path uses res:// protocol")
TestHelper.assert_true(game_path.ends_with(".tscn"), "Game scene path has .tscn extension")
TestHelper.assert_true(main_path.begins_with("res://"), "Main scene path uses res:// protocol")
TestHelper.assert_true(main_path.ends_with(".tscn"), "Main scene path has .tscn extension")
TestHelperClass.assert_true(game_path.begins_with("res://"), "Game scene path uses res:// protocol")
TestHelperClass.assert_true(game_path.ends_with(".tscn"), "Game scene path has .tscn extension")
TestHelperClass.assert_true(main_path.begins_with("res://"), "Main scene path uses res:// protocol")
TestHelperClass.assert_true(main_path.ends_with(".tscn"), "Main scene path has .tscn extension")
# Test that scene files exist
TestHelper.assert_true(ResourceLoader.exists(game_path), "Game scene file exists at path")
TestHelper.assert_true(ResourceLoader.exists(main_path), "Main scene file exists at path")
TestHelperClass.assert_true(ResourceLoader.exists(game_path), "Game scene file exists at path")
TestHelperClass.assert_true(ResourceLoader.exists(main_path), "Main scene file exists at path")
func test_input_validation():
TestHelper.print_step("Input Validation")
TestHelperClass.print_step("Input Validation")
# Store original state
var original_changing = game_manager.is_changing_scene
var _original_changing = game_manager.is_changing_scene
var original_mode = game_manager.pending_gameplay_mode
# Test empty string validation
game_manager.start_game_with_mode("")
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Empty string mode rejected"
)
TestHelper.assert_false(
TestHelperClass.assert_false(
game_manager.is_changing_scene, "Scene change flag unchanged after empty mode"
)
# Test null validation - GameManager expects String, so this tests the type safety
# Note: In Godot 4.4, passing null to String parameter causes script error as expected
# The function properly validates empty strings instead
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Mode preserved after empty string test"
)
TestHelper.assert_false(
TestHelperClass.assert_false(
game_manager.is_changing_scene, "Scene change flag unchanged after validation tests"
)
# Test invalid mode validation
game_manager.start_game_with_mode("invalid_mode")
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Invalid mode rejected"
)
TestHelper.assert_false(
TestHelperClass.assert_false(
game_manager.is_changing_scene, "Scene change flag unchanged after invalid mode"
)
# Test case sensitivity
game_manager.start_game_with_mode("MATCH3")
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Case-sensitive mode validation"
)
TestHelper.assert_false(
TestHelperClass.assert_false(
game_manager.is_changing_scene, "Scene change flag unchanged after wrong case"
)
func test_race_condition_protection():
TestHelper.print_step("Race Condition Protection")
TestHelperClass.print_step("Race Condition Protection")
# Store original state
var original_mode = game_manager.pending_gameplay_mode
@@ -156,14 +156,14 @@ func test_race_condition_protection():
game_manager.start_game_with_mode("match3")
# Verify second request was rejected
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Concurrent scene change blocked"
)
TestHelper.assert_true(game_manager.is_changing_scene, "Scene change flag preserved")
TestHelperClass.assert_true(game_manager.is_changing_scene, "Scene change flag preserved")
# Test exit to main menu during scene change
game_manager.exit_to_main_menu()
TestHelper.assert_true(
TestHelperClass.assert_true(
game_manager.is_changing_scene, "Exit request blocked during scene change"
)
@@ -172,28 +172,28 @@ func test_race_condition_protection():
func test_gameplay_mode_validation():
TestHelper.print_step("Gameplay Mode Validation")
TestHelperClass.print_step("Gameplay Mode Validation")
# Test valid modes
var valid_modes = ["match3", "clickomania"]
for mode in valid_modes:
var original_changing = game_manager.is_changing_scene
var _original_changing = game_manager.is_changing_scene
# We'll test the validation logic without actually changing scenes
# by checking if the function would accept the mode
# Create a temporary mock to test validation
var test_mode_valid = mode in ["match3", "clickomania"]
TestHelper.assert_true(test_mode_valid, "Valid mode accepted: " + mode)
TestHelperClass.assert_true(test_mode_valid, "Valid mode accepted: " + mode)
# Test whitelist enforcement
var invalid_modes = ["puzzle", "arcade", "adventure", "rpg", "action"]
for mode in invalid_modes:
var test_mode_invalid = not (mode in ["match3", "clickomania"])
TestHelper.assert_true(test_mode_invalid, "Invalid mode rejected: " + mode)
TestHelperClass.assert_true(test_mode_invalid, "Invalid mode rejected: " + mode)
func test_scene_transition_safety():
TestHelper.print_step("Scene Transition Safety")
TestHelperClass.print_step("Scene Transition Safety")
# Test scene loading validation (without actually changing scenes)
var game_scene_path = game_manager.GAME_SCENE_PATH
@@ -201,19 +201,19 @@ func test_scene_transition_safety():
# Test scene resource loading
var game_scene = load(game_scene_path)
TestHelper.assert_not_null(game_scene, "Game scene resource loads successfully")
TestHelper.assert_true(game_scene is PackedScene, "Game scene is PackedScene type")
TestHelperClass.assert_not_null(game_scene, "Game scene resource loads successfully")
TestHelperClass.assert_true(game_scene is PackedScene, "Game scene is PackedScene type")
var main_scene = load(main_scene_path)
TestHelper.assert_not_null(main_scene, "Main scene resource loads successfully")
TestHelper.assert_true(main_scene is PackedScene, "Main scene is PackedScene type")
TestHelperClass.assert_not_null(main_scene, "Main scene resource loads successfully")
TestHelperClass.assert_true(main_scene is PackedScene, "Main scene is PackedScene type")
# Test that current scene exists
TestHelper.assert_not_null(current_scene, "Current scene exists")
TestHelperClass.assert_not_null(current_scene, "Current scene exists")
func test_error_handling():
TestHelper.print_step("Error Handling")
TestHelperClass.print_step("Error Handling")
# Store original state
var original_changing = game_manager.is_changing_scene
@@ -225,26 +225,26 @@ func test_error_handling():
# Verify state preservation after invalid inputs
game_manager.start_game_with_mode("")
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_changing, game_manager.is_changing_scene, "State preserved after empty mode error"
)
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Mode preserved after empty mode error"
)
game_manager.start_game_with_mode("invalid")
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_changing,
game_manager.is_changing_scene,
"State preserved after invalid mode error"
)
TestHelper.assert_equal(
TestHelperClass.assert_equal(
original_mode, game_manager.pending_gameplay_mode, "Mode preserved after invalid mode error"
)
func test_scene_method_validation():
TestHelper.print_step("Scene Method Validation")
TestHelperClass.print_step("Scene Method Validation")
# Test that GameManager properly checks for required methods
# We'll create a mock scene to test method validation
@@ -255,16 +255,16 @@ func test_scene_method_validation():
var has_set_global_score = mock_scene.has_method("set_global_score")
var has_get_global_score = mock_scene.has_method("get_global_score")
TestHelper.assert_false(has_set_gameplay_mode, "Mock scene lacks set_gameplay_mode method")
TestHelper.assert_false(has_set_global_score, "Mock scene lacks set_global_score method")
TestHelper.assert_false(has_get_global_score, "Mock scene lacks get_global_score method")
TestHelperClass.assert_false(has_set_gameplay_mode, "Mock scene lacks set_gameplay_mode method")
TestHelperClass.assert_false(has_set_global_score, "Mock scene lacks set_global_score method")
TestHelperClass.assert_false(has_get_global_score, "Mock scene lacks get_global_score method")
# Clean up mock scene
mock_scene.queue_free()
func test_pending_mode_management():
TestHelper.print_step("Pending Mode Management")
TestHelperClass.print_step("Pending Mode Management")
# Store original mode
var original_mode = game_manager.pending_gameplay_mode
@@ -275,7 +275,7 @@ func test_pending_mode_management():
if test_mode in ["match3", "clickomania"]:
# This simulates what would happen in start_game_with_mode
game_manager.pending_gameplay_mode = test_mode
TestHelper.assert_equal(
TestHelperClass.assert_equal(
test_mode, game_manager.pending_gameplay_mode, "Pending mode set correctly"
)
@@ -285,7 +285,7 @@ func test_pending_mode_management():
# Attempt invalid operation (this should not change pending mode)
# The actual start_game_with_mode with invalid input won't change pending_gameplay_mode
TestHelper.assert_equal(
TestHelperClass.assert_equal(
preserved_mode,
game_manager.pending_gameplay_mode,
"Mode preserved during invalid operations"
@@ -296,7 +296,7 @@ func test_pending_mode_management():
func cleanup_tests():
TestHelper.print_step("Cleanup")
TestHelperClass.print_step("Cleanup")
# Reset GameManager state
game_manager.is_changing_scene = false
@@ -308,4 +308,4 @@ func cleanup_tests():
# Note: Can't actually delete from res:// in tests, just track for manual cleanup
pass
TestHelper.assert_true(true, "Test cleanup completed")
TestHelperClass.assert_true(true, "Test cleanup completed")