extends GutTest var EnemyScene = load("res://Game/Mobs/forkman.tscn") # Path to enemy PackedScene var _enemy_instance = null var _mock_parent = null func before_each(): # Mock parent instead of PathFollow2D _mock_parent = PathFollow2D.new() _mock_parent.name = "PathFollow2D_Mock" add_child(_mock_parent) # Instantiate scene _enemy_instance = EnemyScene.instantiate() _mock_parent.add_child(_enemy_instance) # Initialize child nodes await get_tree().process_frame # Required for complete _ready() execution func after_each(): _enemy_instance.queue_free() _mock_parent.queue_free() # Check for children func test_scene_initialization(): var character_body = _enemy_instance.get_node("CharacterBody2D") var health_bar = _enemy_instance.get_node("ProgressBar") assert_not_null(character_body, "Missing CharacterBody2D") assert_not_null(health_bar, "Missing ProgressBar") # Check damage mechanics func test_shield_damage_reduction(): _enemy_instance.current_shield = 50 _enemy_instance.current_health = 100 _enemy_instance.enemy_hurt(30) assert_eq(_enemy_instance.current_shield, 20, "Incorrect shield value") assert_eq(_enemy_instance.current_health, 100, "Health should remain unchanged with this damage amount") func test_shield_break_and_health_damage(): _enemy_instance.current_shield = 20 _enemy_instance.current_health = 100 _enemy_instance.enemy_hurt(30) assert_eq(_enemy_instance.current_shield, 0, "Shield should be depleted") assert_eq(_enemy_instance.current_health, 90, "Incorrect health value") func test_health_damage_without_shield(): _enemy_instance.current_shield = 0 _enemy_instance.current_health = 80 _enemy_instance.enemy_hurt(25) assert_eq(_enemy_instance.current_shield, 0, "Shield should remain zero") assert_eq(_enemy_instance.current_health, 55, "Incorrect health amount") #Check for animation change func test_hurt_animation_plays_on_damage(): _enemy_instance.enemy_hurt(10) var anim_sprite = _enemy_instance.get_node("CharacterBody2D/AnimatedSprite2D") assert_eq(anim_sprite.animation, "hurt", "Hurt animation must be playing") #Check animation speed change func test_animation_speed_scales_with_speed(): # Sebesség beállítások ellenőrzése _enemy_instance.set_character_data() var anim_sprite = _enemy_instance.get_node("CharacterBody2D/AnimatedSprite2D") var expected_speed = snapped(_enemy_instance.speed / 100.0 , 0.1) assert_eq(snapped(anim_sprite.speed_scale, 0.1), expected_speed, "Animation speed should match movement speed") #check for cholorchange on healthbar func test_health_bar_color_changes_with_shield(): _enemy_instance.current_shield = 50 _enemy_instance.adjust_health_bar() var fill_style = _enemy_instance.get_node("ProgressBar").get_theme_stylebox("fill") assert_eq(fill_style.bg_color, Color(0,0,1), "Must be blue in case of shield") #Check character flip func test_character_flips_based_on_movement_direction(): var initial_scale = _mock_parent.scale.x _mock_parent.position.x += 10 _enemy_instance.move_character(0.1) assert_gt(_mock_parent.scale.x, 0, "Positive scaling when moving to the right") _mock_parent.position.x -= 20 _enemy_instance.move_character(0.1) assert_lt(_mock_parent.scale.x, 0, "Negative scaling when moving left")