diff --git a/Game/Mobs/enemy.gd b/Game/Mobs/enemy.gd index fc7fb9c..61c2477 100644 --- a/Game/Mobs/enemy.gd +++ b/Game/Mobs/enemy.gd @@ -103,7 +103,7 @@ func adjust_health_bar() -> void: func enemy_hurt(amount) -> void: if current_shield > 0: - if shield > amount: + if current_shield > amount: current_shield -= amount else: amount -= current_shield diff --git a/test/test_enemy.gd b/test/test_enemy.gd index a88e252..671184a 100644 --- a/test/test_enemy.gd +++ b/test/test_enemy.gd @@ -1,53 +1,66 @@ extends GutTest -var Enemy = load("res://Game/Mobs/enemy.gd") # Módosítsd a tényleges útvonalra -var _enemy = null -var _parent_mock = null +var EnemyScene = load("res://Game/Mobs/forkman.tscn") # Ellenenség PackedScene útvonala +var _enemy_instance = null +var _mock_parent = null func before_each(): - # Mock szülő objektum létrehozása - _parent_mock = Node2D.new() - _parent_mock.set_script(load("res://Game/Mobs/enemy.gd")) - _enemy = Enemy.new() - _parent_mock.add_child(_enemy) + # Szülő mockolása PathFollow2D helyett + _mock_parent = PathFollow2D.new() + _mock_parent.name = "PathFollow2D_Mock" + add_child(_mock_parent) - # Gyermek node-ok mockolása - var character_body = CharacterBody2D.new() - character_body.name = "CharacterBody2D" - var animated_sprite = AnimatedSprite2D.new() - animated_sprite.name = "AnimatedSprite2D" - character_body.add_child(animated_sprite) - _enemy.add_child(character_body) - _enemy.add_child(ProgressBar.new()) + # Scene példányosítása + _enemy_instance = EnemyScene.instantiate() + _mock_parent.add_child(_enemy_instance) + + # Gyermek node-ok inicializálása + await get_tree().process_frame # Szükséges a _ready() függvény teljes lefutásához func after_each(): - _enemy.queue_free() - _parent_mock.queue_free() + _enemy_instance.queue_free() + _mock_parent.queue_free() -# 1. TESZT: Karakteradatok helyes beállítása -func test_set_character_data_forkman(): - # 1. Lépés: Beállítjuk a nevet és meghívjuk a függvényt - _enemy.name = "Forkman" - _enemy.set_character_data() - - # 2. Lépés: Ellenőrizzük az értékeket - assert_eq(_enemy.speed, 120, "Sebesség helytelen") - assert_eq(_enemy.health, 100, "Életerő helytelen") - assert_eq(_enemy.shield, 100, "Pajzs helytelen") - assert_eq(_enemy.damage, 2, "Sebzés helytelen") - assert_true(_enemy.name.begins_with("Forkman-"), "Névformátum hibás") -# 2. TESZT: Sebzéskezelés pajzzsal -func test_enemy_hurt_with_shield(): - # 1. Lépés: Kezdeti állapot beállítása - _enemy.name = "Forkman" - _enemy.set_character_data() - _enemy.current_shield = 50 - _enemy.current_health = 100 +func test_scene_initialization(): + # Gyermek elemek ellenőrzése + var character_body = _enemy_instance.get_node("CharacterBody2D") + var health_bar = _enemy_instance.get_node("ProgressBar") + assert_not_null(character_body, "Hiányzó CharacterBody2D") + assert_not_null(health_bar, "Hiányzó ProgressBar") - # 2. Lépés: Sebzés alkalmazása - _enemy.enemy_hurt(30) + +func test_shield_damage_reduction(): + # Kezdeti állapot beállítása + _enemy_instance.current_shield = 50 + _enemy_instance.current_health = 100 - # 3. Lépés: Eredmények ellenőrzése - assert_eq(_enemy.current_shield, 20, "Pajzs nem csökkent megfelelően") - assert_eq(_enemy.current_health, 100, "Életerő változott pajzs mellett") + # Sebzés alkalmazása + _enemy_instance.enemy_hurt(30) + + # Ellenőrzések + assert_eq(_enemy_instance.current_shield, 20, "Pajzs érték helytelen") + assert_eq(_enemy_instance.current_health, 100, "Életerő nem változhat pajzs esetén") + +func test_shield_break_and_health_damage(): + # Kezdeti állapot + _enemy_instance.current_shield = 20 + _enemy_instance.current_health = 100 + + # Nagy sebzés + _enemy_instance.enemy_hurt(30) + + # Ellenőrzések + assert_eq(_enemy_instance.current_shield, 0, "Pajzsnak nullának kell lennie") + assert_eq(_enemy_instance.current_health, 90, "Életerő csökkenés hibás") + +func test_health_damage_without_shield(): + # Pajzs nélküli állapot + _enemy_instance.current_shield = 0 + _enemy_instance.current_health = 80 + + # Sebzés + _enemy_instance.enemy_hurt(25) + + assert_eq(_enemy_instance.current_shield, 0, "Pajzs mértékének csökkenése változatlan") + assert_eq(_enemy_instance.current_health, 55, "Életerő csökkenés hibás pajzs nélkül")