summaryrefslogtreecommitdiff
path: root/addons/escoria-core/testing/esc_object_manager_test.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/escoria-core/testing/esc_object_manager_test.gd')
-rw-r--r--addons/escoria-core/testing/esc_object_manager_test.gd79
1 files changed, 79 insertions, 0 deletions
diff --git a/addons/escoria-core/testing/esc_object_manager_test.gd b/addons/escoria-core/testing/esc_object_manager_test.gd
new file mode 100644
index 0000000..52f79b3
--- /dev/null
+++ b/addons/escoria-core/testing/esc_object_manager_test.gd
@@ -0,0 +1,79 @@
+# GdUnit generated TestSuite
+class_name ESCObjectManagerTest
+extends GdUnitTestSuite
+
+
+func test_reset_game_state_clears_persisted_room_object_state() -> void:
+ var object_manager := ESCObjectManager.new()
+ var room := ESCRoom.new()
+ room.global_id = "test_room"
+ object_manager.set_current_room(room)
+
+ var first_item := ESCItem.new()
+ first_item.global_id = "test_item"
+ var first_object := ESCObject.new(first_item.global_id, first_item)
+ object_manager.register_object(first_object, room, false, false)
+ first_object.set_state("opened")
+
+ var room_key := ESCRoomObjectsKey.new()
+ room_key.room_global_id = room.global_id
+ room_key.room_instance_id = room.get_instance_id()
+ object_manager.unregister_object(first_object, room_key)
+ assert_bool(object_manager.has(first_item.global_id, room)).is_true()
+
+ object_manager.reset_game_state()
+ assert_bool(object_manager.has(first_item.global_id, room)).is_false()
+
+ var second_item := ESCItem.new()
+ second_item.global_id = "test_item"
+ var second_object := ESCObject.new(second_item.global_id, second_item)
+ object_manager.set_current_room(room)
+ object_manager.register_object(second_object, room, false, false)
+
+ assert_str(object_manager.get_object(second_item.global_id, room).state).is_equal(
+ ESCObject.STATE_DEFAULT
+ )
+
+ first_item.free()
+ second_item.free()
+ room.free()
+
+
+func test_reset_game_state_preserves_reserved_objects() -> void:
+ var object_manager := ESCObjectManager.new()
+ var music_node := Node.new()
+
+ object_manager.register_object(
+ ESCObject.new(ESCObjectManager.MUSIC, music_node),
+ null,
+ true,
+ false
+ )
+
+ object_manager.reset_game_state()
+
+ assert_bool(object_manager.has(ESCObjectManager.MUSIC)).is_true()
+ assert_object(object_manager.get_object(ESCObjectManager.MUSIC).node).is_same(music_node)
+
+ music_node.free()
+
+
+func test_reset_game_state_clears_saved_terrain_state() -> void:
+ var object_manager := ESCObjectManager.new()
+ var room := ESCRoom.new()
+ room.global_id = "test_room"
+ var navigation_region := NavigationRegion2D.new()
+
+ object_manager.set_current_room(room)
+ object_manager.register_terrain(
+ ESCObject.new("test_terrain", navigation_region),
+ room
+ )
+ assert_int(object_manager.room_terrains.size()).is_equal(1)
+
+ object_manager.reset_game_state()
+
+ assert_int(object_manager.room_terrains.size()).is_equal(0)
+
+ navigation_region.free()
+ room.free()