more lint and formatting
Some checks failed
Continuous Integration / Code Formatting (push) Successful in 33s
Continuous Integration / Code Quality Check (push) Successful in 29s
Continuous Integration / Test Execution (push) Failing after 16s
Continuous Integration / CI Summary (push) Failing after 4s

This commit is contained in:
2025-10-01 15:04:40 +04:00
parent 538459f323
commit 3b8da89ad5
31 changed files with 2112 additions and 691 deletions

View File

@@ -62,7 +62,9 @@ func setup_test_environment():
if tile_scene:
tile_instance = tile_scene.instantiate()
test_viewport.add_child(tile_instance)
TestHelperClass.assert_not_null(tile_instance, "Tile instance created successfully")
TestHelperClass.assert_not_null(
tile_instance, "Tile instance created successfully"
)
# Wait for initialization
await process_frame
@@ -73,7 +75,9 @@ func test_basic_functionality():
TestHelperClass.print_step("Basic Functionality")
if not tile_instance:
TestHelperClass.assert_true(false, "Tile instance not available for testing")
TestHelperClass.assert_true(
false, "Tile instance not available for testing"
)
return
# Test that Tile has expected properties
@@ -86,7 +90,9 @@ func test_basic_functionality():
"active_gem_types"
]
for prop in expected_properties:
TestHelperClass.assert_true(prop in tile_instance, "Tile has property: " + prop)
TestHelperClass.assert_true(
prop in tile_instance, "Tile has property: " + prop
)
# Test that Tile has expected methods
var expected_methods = [
@@ -96,19 +102,28 @@ func test_basic_functionality():
"remove_gem_type",
"force_reset_visual_state"
]
TestHelperClass.assert_has_methods(tile_instance, expected_methods, "Tile component methods")
TestHelperClass.assert_has_methods(
tile_instance, expected_methods, "Tile component methods"
)
# Test signals
TestHelperClass.assert_true(
tile_instance.has_signal("tile_selected"), "Tile has tile_selected signal"
tile_instance.has_signal("tile_selected"),
"Tile has tile_selected signal"
)
# Test sprite reference
TestHelperClass.assert_not_null(tile_instance.sprite, "Sprite node is available")
TestHelperClass.assert_true(tile_instance.sprite is Sprite2D, "Sprite is Sprite2D type")
TestHelperClass.assert_not_null(
tile_instance.sprite, "Sprite node is available"
)
TestHelperClass.assert_true(
tile_instance.sprite is Sprite2D, "Sprite is Sprite2D type"
)
# Test group membership
TestHelperClass.assert_true(tile_instance.is_in_group("tiles"), "Tile is in 'tiles' group")
TestHelperClass.assert_true(
tile_instance.is_in_group("tiles"), "Tile is in 'tiles' group"
)
func test_tile_constants():
@@ -118,22 +133,33 @@ func test_tile_constants():
return
# Test TILE_SIZE constant
TestHelperClass.assert_equal(48, tile_instance.TILE_SIZE, "TILE_SIZE constant is correct")
TestHelperClass.assert_equal(
48, tile_instance.TILE_SIZE, "TILE_SIZE constant is correct"
)
# Test all_gem_textures array
TestHelperClass.assert_not_null(tile_instance.all_gem_textures, "All gem textures array exists")
TestHelperClass.assert_not_null(
tile_instance.all_gem_textures, "All gem textures array exists"
)
TestHelperClass.assert_true(
tile_instance.all_gem_textures is Array, "All gem textures is Array type"
tile_instance.all_gem_textures is Array,
"All gem textures is Array type"
)
TestHelperClass.assert_equal(
8, tile_instance.all_gem_textures.size(), "All gem textures has expected count"
8,
tile_instance.all_gem_textures.size(),
"All gem textures has expected count"
)
# Test that all gem textures are valid
for i in range(tile_instance.all_gem_textures.size()):
var texture = tile_instance.all_gem_textures[i]
TestHelperClass.assert_not_null(texture, "Gem texture %d is not null" % i)
TestHelperClass.assert_true(texture is Texture2D, "Gem texture %d is Texture2D type" % i)
TestHelperClass.assert_not_null(
texture, "Gem texture %d is not null" % i
)
TestHelperClass.assert_true(
texture is Texture2D, "Gem texture %d is Texture2D type" % i
)
func test_texture_management():
@@ -147,10 +173,12 @@ func test_texture_management():
tile_instance.active_gem_types, "Active gem types is initialized"
)
TestHelperClass.assert_true(
tile_instance.active_gem_types is Array, "Active gem types is Array type"
tile_instance.active_gem_types is Array,
"Active gem types is Array type"
)
TestHelperClass.assert_true(
tile_instance.active_gem_types.size() > 0, "Active gem types has content"
tile_instance.active_gem_types.size() > 0,
"Active gem types has content"
)
# Test texture assignment for valid tile types
@@ -164,7 +192,8 @@ func test_texture_management():
if tile_instance.sprite:
TestHelperClass.assert_not_null(
tile_instance.sprite.texture, "Sprite texture assigned for type %d" % i
tile_instance.sprite.texture,
"Sprite texture assigned for type %d" % i
)
# Restore original type
@@ -184,42 +213,60 @@ func test_gem_type_management():
var test_gems = [0, 1, 2]
tile_instance.set_active_gem_types(test_gems)
TestHelperClass.assert_equal(
3, tile_instance.get_active_gem_count(), "Active gem count set correctly"
3,
tile_instance.get_active_gem_count(),
"Active gem count set correctly"
)
# Test add_gem_type
var add_result = tile_instance.add_gem_type(3)
TestHelperClass.assert_true(add_result, "Valid gem type added successfully")
TestHelperClass.assert_equal(
4, tile_instance.get_active_gem_count(), "Gem count increased after addition"
4,
tile_instance.get_active_gem_count(),
"Gem count increased after addition"
)
# Test adding duplicate gem type
var duplicate_result = tile_instance.add_gem_type(3)
TestHelperClass.assert_false(duplicate_result, "Duplicate gem type addition rejected")
TestHelperClass.assert_false(
duplicate_result, "Duplicate gem type addition rejected"
)
TestHelperClass.assert_equal(
4, tile_instance.get_active_gem_count(), "Gem count unchanged after duplicate"
4,
tile_instance.get_active_gem_count(),
"Gem count unchanged after duplicate"
)
# Test add_gem_type with invalid index
var invalid_add = tile_instance.add_gem_type(99)
TestHelperClass.assert_false(invalid_add, "Invalid gem index addition rejected")
TestHelperClass.assert_false(
invalid_add, "Invalid gem index addition rejected"
)
# Test remove_gem_type
var remove_result = tile_instance.remove_gem_type(3)
TestHelperClass.assert_true(remove_result, "Valid gem type removed successfully")
TestHelperClass.assert_true(
remove_result, "Valid gem type removed successfully"
)
TestHelperClass.assert_equal(
3, tile_instance.get_active_gem_count(), "Gem count decreased after removal"
3,
tile_instance.get_active_gem_count(),
"Gem count decreased after removal"
)
# Test removing non-existent gem type
var nonexistent_remove = tile_instance.remove_gem_type(99)
TestHelperClass.assert_false(nonexistent_remove, "Non-existent gem type removal rejected")
TestHelperClass.assert_false(
nonexistent_remove, "Non-existent gem type removal rejected"
)
# Test minimum gem types protection
tile_instance.set_active_gem_types([0, 1]) # Set to minimum
var protected_remove = tile_instance.remove_gem_type(0)
TestHelperClass.assert_false(protected_remove, "Minimum gem types protection active")
TestHelperClass.assert_false(
protected_remove, "Minimum gem types protection active"
)
TestHelperClass.assert_equal(
2, tile_instance.get_active_gem_count(), "Minimum gem count preserved"
)
@@ -240,7 +287,9 @@ func test_visual_feedback_system():
# Test selection visual feedback
tile_instance.is_selected = true
TestHelperClass.assert_true(tile_instance.is_selected, "Selection state set correctly")
TestHelperClass.assert_true(
tile_instance.is_selected, "Selection state set correctly"
)
# Wait for potential animation
await process_frame
@@ -256,21 +305,29 @@ func test_visual_feedback_system():
# Test highlight visual feedback
tile_instance.is_selected = false
tile_instance.is_highlighted = true
TestHelperClass.assert_true(tile_instance.is_highlighted, "Highlight state set correctly")
TestHelperClass.assert_true(
tile_instance.is_highlighted, "Highlight state set correctly"
)
# Wait for potential animation
await process_frame
# Test normal state
tile_instance.is_highlighted = false
TestHelperClass.assert_false(tile_instance.is_highlighted, "Normal state restored")
TestHelperClass.assert_false(
tile_instance.is_highlighted, "Normal state restored"
)
# Test force reset
tile_instance.is_selected = true
tile_instance.is_highlighted = true
tile_instance.force_reset_visual_state()
TestHelperClass.assert_false(tile_instance.is_selected, "Force reset clears selection")
TestHelperClass.assert_false(tile_instance.is_highlighted, "Force reset clears highlight")
TestHelperClass.assert_false(
tile_instance.is_selected, "Force reset clears selection"
)
TestHelperClass.assert_false(
tile_instance.is_highlighted, "Force reset clears highlight"
)
# Restore original state
tile_instance.is_selected = original_selected
@@ -284,12 +341,16 @@ func test_state_management():
return
# Test initial state
TestHelperClass.assert_true(tile_instance.tile_type >= 0, "Initial tile type is non-negative")
TestHelperClass.assert_true(
tile_instance.grid_position is Vector2i, "Grid position is Vector2i type"
tile_instance.tile_type >= 0, "Initial tile type is non-negative"
)
TestHelperClass.assert_true(
tile_instance.original_scale is Vector2, "Original scale is Vector2 type"
tile_instance.grid_position is Vector2i,
"Grid position is Vector2i type"
)
TestHelperClass.assert_true(
tile_instance.original_scale is Vector2,
"Original scale is Vector2 type"
)
# Test tile type bounds checking
@@ -324,20 +385,23 @@ func test_input_validation():
tile_instance.set_active_gem_types([])
# Should fall back to defaults or maintain previous state
TestHelperClass.assert_true(
tile_instance.get_active_gem_count() > 0, "Empty gem array handled gracefully"
tile_instance.get_active_gem_count() > 0,
"Empty gem array handled gracefully"
)
# Test null gem types array
tile_instance.set_active_gem_types(null)
TestHelperClass.assert_true(
tile_instance.get_active_gem_count() > 0, "Null gem array handled gracefully"
tile_instance.get_active_gem_count() > 0,
"Null gem array handled gracefully"
)
# Test invalid gem indices in array
tile_instance.set_active_gem_types([0, 1, 99, 2]) # 99 is invalid
# Should use fallback or filter invalid indices
TestHelperClass.assert_true(
tile_instance.get_active_gem_count() > 0, "Invalid gem indices handled gracefully"
tile_instance.get_active_gem_count() > 0,
"Invalid gem indices handled gracefully"
)
# Test negative gem indices
@@ -345,7 +409,9 @@ func test_input_validation():
TestHelperClass.assert_false(negative_add, "Negative gem index rejected")
# Test out-of-bounds gem indices
var oob_add = tile_instance.add_gem_type(tile_instance.all_gem_textures.size())
var oob_add = tile_instance.add_gem_type(
tile_instance.all_gem_textures.size()
)
TestHelperClass.assert_false(oob_add, "Out-of-bounds gem index rejected")
# Restore original state
@@ -359,9 +425,15 @@ func test_scaling_and_sizing():
return
# Test original scale calculation
TestHelperClass.assert_not_null(tile_instance.original_scale, "Original scale is calculated")
TestHelperClass.assert_true(tile_instance.original_scale.x > 0, "Original scale X is positive")
TestHelperClass.assert_true(tile_instance.original_scale.y > 0, "Original scale Y is positive")
TestHelperClass.assert_not_null(
tile_instance.original_scale, "Original scale is calculated"
)
TestHelperClass.assert_true(
tile_instance.original_scale.x > 0, "Original scale X is positive"
)
TestHelperClass.assert_true(
tile_instance.original_scale.y > 0, "Original scale Y is positive"
)
# Test that tile size is respected
if tile_instance.sprite and tile_instance.sprite.texture:
@@ -369,11 +441,14 @@ func test_scaling_and_sizing():
var scaled_size = texture_size * tile_instance.original_scale
var max_dimension = max(scaled_size.x, scaled_size.y)
TestHelperClass.assert_true(
max_dimension <= tile_instance.TILE_SIZE + 1, "Scaled tile fits within TILE_SIZE"
max_dimension <= tile_instance.TILE_SIZE + 1,
"Scaled tile fits within TILE_SIZE"
)
# Test scale animation for visual feedback
var original_scale = tile_instance.sprite.scale if tile_instance.sprite else Vector2.ONE
var original_scale = (
tile_instance.sprite.scale if tile_instance.sprite else Vector2.ONE
)
# Test selection scaling
tile_instance.is_selected = true
@@ -383,7 +458,8 @@ func test_scaling_and_sizing():
if tile_instance.sprite:
var selected_scale = tile_instance.sprite.scale
TestHelperClass.assert_true(
selected_scale.x >= original_scale.x, "Selected tile scale is larger or equal"
selected_scale.x >= original_scale.x,
"Selected tile scale is larger or equal"
)
# Reset to normal
@@ -420,7 +496,8 @@ func test_memory_safety():
# Test gem types array integrity
TestHelperClass.assert_true(
tile_instance.active_gem_types is Array, "Active gem types maintains Array type"
tile_instance.active_gem_types is Array,
"Active gem types maintains Array type"
)
# Test that gem indices are within bounds
@@ -444,12 +521,16 @@ func test_error_handling():
# Test that tile type setting handles null sprite gracefully
tile_instance.tile_type = 0 # Use public property instead
TestHelperClass.assert_true(true, "Tile type setting handles null sprite gracefully")
TestHelperClass.assert_true(
true, "Tile type setting handles null sprite gracefully"
)
# Test that scaling handles null sprite gracefully
# Force redraw to trigger scaling logic
tile_instance.queue_redraw()
TestHelperClass.assert_true(true, "Sprite scaling handles null sprite gracefully")
TestHelperClass.assert_true(
true, "Sprite scaling handles null sprite gracefully"
)
# Restore sprite
tile_instance.sprite = backup_sprite
@@ -473,7 +554,10 @@ func test_error_handling():
tile_instance.set_active_gem_types(large_gem_types)
# Should fall back to safe defaults
TestHelperClass.assert_true(
tile_instance.get_active_gem_count() <= tile_instance.all_gem_textures.size(),
(
tile_instance.get_active_gem_count()
<= tile_instance.all_gem_textures.size()
),
"Large gem array handled safely"
)