summaryrefslogtreecommitdiff
path: root/addons/escoria-core/_test
diff options
context:
space:
mode:
Diffstat (limited to 'addons/escoria-core/_test')
-rw-r--r--addons/escoria-core/_test/deprecated/test_esc_compiler.gd300
-rw-r--r--addons/escoria-core/_test/deprecated/test_esc_compiler.gd.uid1
-rw-r--r--addons/escoria-core/_test/deprecated/test_esc_compiler.tscn43
-rw-r--r--addons/escoria-core/_test/test_migrations.gd20
-rw-r--r--addons/escoria-core/_test/test_migrations.gd.uid1
-rw-r--r--addons/escoria-core/_test/test_migrations.tscn25
-rw-r--r--addons/escoria-core/_test/testversions/1.0.1.gd5
-rw-r--r--addons/escoria-core/_test/testversions/1.0.1.gd.uid1
-rw-r--r--addons/escoria-core/_test/testversions/1.1.0.gd5
-rw-r--r--addons/escoria-core/_test/testversions/1.1.0.gd.uid1
10 files changed, 402 insertions, 0 deletions
diff --git a/addons/escoria-core/_test/deprecated/test_esc_compiler.gd b/addons/escoria-core/_test/deprecated/test_esc_compiler.gd
new file mode 100644
index 0000000..28bf439
--- /dev/null
+++ b/addons/escoria-core/_test/deprecated/test_esc_compiler.gd
@@ -0,0 +1,300 @@
+extends Control
+
+
+func _test_basic() -> bool:
+ var esc = """
+:test
+# first group
+>
+ say player "Test"
+ # Second group
+ > [test]
+ say player "Test2 BLANK"
+ say player "Test3" [test2]
+ # Third group
+ >
+
+ say player "Test4"
+# Fourth group
+>
+ say player "Test5"
+ say player "Test 6"
+ say player TEST:"Test 7"
+ """
+ var script = escoria.esc_compiler.compile(esc)
+
+ var subject = script
+ assert(subject is ESCScript)
+
+ subject = script.events.keys()
+ assert(subject.size() == 1)
+ assert(subject[0] == "test")
+
+ subject = script.events["test"].statements
+ assert(subject.size() == 2)
+
+ subject = script.events["test"].statements[0]
+ assert(subject is ESCGroup)
+ assert(subject.statements.size() == 4)
+
+ subject = script.events["test"].statements[0].statements[0]
+ assert(subject is ESCCommand)
+ assert(subject.name == "say")
+ assert(subject.parameters.size() == 2)
+ assert(subject.parameters[0] == "player")
+ assert(subject.parameters[1] == '"Test"')
+
+ subject = script.events["test"].statements[0].statements[1]
+ assert(subject is ESCGroup)
+ assert(subject.conditions.size() == 1)
+ assert(subject.conditions[0] is ESCCondition)
+ assert(subject.conditions[0].flag == "test")
+
+ subject = script.events["test"].statements[0].statements[1].statements[0]
+ assert(subject is ESCCommand)
+ assert(subject.name == "say")
+ assert(subject.parameters.size() == 2)
+ assert(subject.parameters[0] == "player")
+ assert(subject.parameters[1] == '"Test2 BLANK"')
+
+ subject = script.events["test"].statements[0].statements[2]
+ assert(subject is ESCCommand)
+ assert(subject.name == "say")
+ assert(subject.parameters.size() == 2)
+ assert(subject.parameters[0] == "player")
+ assert(subject.parameters[1] == '"Test3"')
+ assert(subject.conditions.size() == 1)
+ assert(subject.conditions[0].flag == "test2")
+
+ subject = script.events["test"].statements[0].statements[3]
+ assert(subject is ESCGroup)
+ assert(subject.statements.size() == 1)
+
+ subject = script.events["test"].statements[1]
+ assert(subject is ESCGroup)
+ assert(subject.statements.size() == 3)
+
+ subject = script.events["test"].statements[1].statements[1]
+ assert(subject is ESCCommand)
+ assert(subject.name == "say")
+ assert(subject.parameters[1] == '"Test 6"')
+
+ subject = script.events["test"].statements[1].statements[2]
+ assert(subject is ESCCommand)
+ assert(subject.name == "say")
+ assert(subject.parameters[1] == "TEST:\"Test 7\"")
+
+ return true
+
+
+func _test_conditions() -> bool:
+ var esc = """
+:test
+say player "Test" [flag]
+say player "Test" [flag1,flag2]
+say player "Test" [!flag]
+say player "Test" [i/flag]
+say player "Test" [i/flag,flag]
+say player "Test" [i/flag,flag,!flag2]
+say player "Test" [eq flag 3]
+say player "Test" [eq flag 3,gt flag 5]
+say player "Test" [!eq flag 3]
+ """
+ var script = escoria.esc_compiler.compile(esc)
+
+ var subject = script.events["test"].statements[0]
+ assert(subject is ESCCommand)
+ assert(subject.conditions.size() == 1)
+
+ subject = script.events["test"].statements[0].conditions[0]
+ assert(subject.flag == "flag")
+ assert(not subject.negated)
+ assert(not subject.inventory)
+ assert(subject.comparison == ESCCondition.COMPARISON_NONE)
+
+ subject = script.events["test"].statements[1].conditions
+ assert(subject.size() == 2)
+ assert(subject[0].flag == "flag1")
+ assert(subject[1].flag == "flag2")
+
+ subject = script.events["test"].statements[2].conditions
+ assert(subject.size() == 1)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].negated)
+
+ subject = script.events["test"].statements[3].conditions
+ assert(subject.size() == 1)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].inventory)
+
+ subject = script.events["test"].statements[4].conditions
+ assert(subject.size() == 2)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].inventory)
+ assert(subject[1].flag == "flag")
+ assert(not subject[1].inventory)
+
+ subject = script.events["test"].statements[5].conditions
+ assert(subject.size() == 3)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].inventory)
+ assert(subject[1].flag == "flag")
+ assert(not subject[1].inventory)
+ assert(subject[2].flag == "flag2")
+ assert(not subject[2].inventory)
+ assert(subject[2].negated)
+
+ subject = script.events["test"].statements[6].conditions
+ assert(subject.size() == 1)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].comparison == ESCCondition.COMPARISON_EQ)
+ assert(subject[0].comparison_value == 3)
+
+ subject = script.events["test"].statements[7].conditions
+ assert(subject.size() == 2)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].comparison == ESCCondition.COMPARISON_EQ)
+ assert(subject[0].comparison_value == 3)
+ assert(subject[1].flag == "flag")
+ assert(subject[1].comparison == ESCCondition.COMPARISON_GT)
+ assert(subject[1].comparison_value == 5)
+
+ subject = script.events["test"].statements[8].conditions
+ assert(subject.size() == 1)
+ assert(subject[0].flag == "flag")
+ assert(subject[0].comparison == ESCCondition.COMPARISON_EQ)
+ assert(subject[0].comparison_value == 3)
+ assert(subject[0].negated)
+
+ return true
+
+
+func _test_event_flags() -> bool:
+ var esc = """
+:test | TK
+:test2 | TK NO_TT
+:test3 | TK NO_TT NO_UI
+ """
+ var script = escoria.esc_compiler.compile(esc)
+
+ var subject = script.events
+ assert(subject.keys().size() == 3)
+ assert("test" in subject.keys())
+ assert("test2" in subject.keys())
+ assert("test3" in subject.keys())
+
+ subject = script.events["test"]
+ assert(subject.name == "test")
+ assert(subject.flags & ESCEvent.FLAGS.TK != 0)
+ assert(subject.flags & ESCEvent.FLAGS.NO_TT == 0)
+
+ subject = script.events["test2"]
+ assert(subject.name == "test2")
+ assert(subject.flags & ESCEvent.FLAGS.TK != 0)
+ assert(subject.flags & ESCEvent.FLAGS.NO_TT != 0)
+
+ subject = script.events["test3"]
+ assert(subject.name == "test3")
+ assert(subject.flags & ESCEvent.FLAGS.TK != 0)
+ assert(subject.flags & ESCEvent.FLAGS.NO_TT != 0)
+ assert(subject.flags & ESCEvent.FLAGS.NO_UI != 0)
+
+ return true
+
+
+func _test_dialog() -> bool:
+ var esc = """
+:test
+?
+ - "Option 1"
+ say player "test"
+ say player "testb"
+ say player "testb?"
+ - "Option 2" [flag]
+ say player "test2"
+ ?
+ - "Suboption 1"
+ say player "test21"
+ - "Suboption 2"
+ say player "test22"
+ !
+ - "Option 3"
+ >
+ say player "test3"
+ - TEST:"Option 4"
+ say player "test4"
+!
+ """
+ var script = escoria.esc_compiler.compile(esc)
+
+ var subject = script.events["test"].statements
+ assert(subject.size() == 1)
+
+ assert(subject[0] is ESCDialog)
+ assert(subject[0].options.size() == 4)
+
+ subject = script.events["test"].statements[0].options[0]
+ assert(subject is ESCDialogOption)
+ assert(subject.option == "Option 1")
+
+ subject = script.events["test"].statements[0].options[0].statements
+ assert(subject.size() == 3)
+ assert(subject[0] is ESCCommand)
+ assert(subject[0].name == "say")
+ assert(subject[0].parameters.size() == 2)
+ assert(subject[1] is ESCCommand)
+ assert(subject[1].name == "say")
+ assert(subject[1].parameters.size() == 2)
+ assert(subject[1].parameters[1] == '"testb"')
+ assert(subject[2] is ESCCommand)
+ assert(subject[2].name == "say")
+ assert(subject[2].parameters.size() == 2)
+ assert(subject[2].parameters[1] == '"testb?"')
+
+ subject = script.events["test"].statements[0].options[1]
+ assert(subject is ESCDialogOption)
+ assert(subject.option == "Option 2")
+ assert(subject.conditions.size() == 1)
+ assert(subject.conditions[0].flag == "flag")
+
+ subject = script.events["test"].statements[0].options[1].statements
+ assert(subject.size() == 2)
+ assert(subject[0] is ESCCommand)
+ assert(subject[0].name == "say")
+ assert(subject[0].parameters.size() == 2)
+
+ assert(subject[1] is ESCDialog)
+ assert(subject[1].options.size() == 2)
+
+ subject = script.events["test"].statements[0].options[2]
+ assert(subject is ESCDialogOption)
+ assert(subject.option == "Option 3")
+
+ subject = script.events["test"].statements[0].options[2].statements
+ assert(subject.size() == 1)
+ assert(subject[0] is ESCGroup)
+ assert(subject[0].statements.size() == 1)
+ assert(subject[0].statements[0] is ESCCommand)
+ assert(subject[0].statements[0].parameters.size() == 2)
+
+ subject = script.events["test"].statements[0].options[3]
+ assert(subject is ESCDialogOption)
+ assert(subject.option == "TEST")
+
+ return true
+
+
+func _on_BasicFunctionality_pressed():
+ $VBoxContainer/VBoxContainer/BasicFunctionality.button_pressed = self._test_basic()
+
+
+func _on_Conditions_pressed():
+ $VBoxContainer/VBoxContainer/Conditions.button_pressed = self._test_conditions()
+
+
+func _on_EventFlags_pressed():
+ $VBoxContainer/VBoxContainer/EventFlags.button_pressed = self._test_event_flags()
+
+
+func _on_Dialog_pressed():
+ $VBoxContainer/VBoxContainer/Dialog.button_pressed = self._test_dialog()
diff --git a/addons/escoria-core/_test/deprecated/test_esc_compiler.gd.uid b/addons/escoria-core/_test/deprecated/test_esc_compiler.gd.uid
new file mode 100644
index 0000000..407abb1
--- /dev/null
+++ b/addons/escoria-core/_test/deprecated/test_esc_compiler.gd.uid
@@ -0,0 +1 @@
+uid://cjhr78sjyfnb3
diff --git a/addons/escoria-core/_test/deprecated/test_esc_compiler.tscn b/addons/escoria-core/_test/deprecated/test_esc_compiler.tscn
new file mode 100644
index 0000000..9d7a934
--- /dev/null
+++ b/addons/escoria-core/_test/deprecated/test_esc_compiler.tscn
@@ -0,0 +1,43 @@
+[gd_scene load_steps=2 format=3 uid="uid://btv33yamt7164"]
+
+[ext_resource type="Script" uid="uid://cjhr78sjyfnb3" path="res://addons/escoria-core/_test/deprecated/test_esc_compiler.gd" id="1"]
+
+[node name="Testsuite" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_right = 1.0
+offset_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer"]
+layout_mode = 2
+
+[node name="BasicFunctionality" type="CheckButton" parent="VBoxContainer/VBoxContainer"]
+layout_mode = 2
+text = "Basic Functionality"
+
+[node name="Conditions" type="CheckButton" parent="VBoxContainer/VBoxContainer"]
+layout_mode = 2
+text = "Check conditions"
+
+[node name="EventFlags" type="CheckButton" parent="VBoxContainer/VBoxContainer"]
+layout_mode = 2
+text = "Check event flags"
+
+[node name="Dialog" type="CheckButton" parent="VBoxContainer/VBoxContainer"]
+layout_mode = 2
+text = "Check dialogs"
+
+[connection signal="pressed" from="VBoxContainer/VBoxContainer/BasicFunctionality" to="." method="_on_BasicFunctionality_pressed"]
+[connection signal="pressed" from="VBoxContainer/VBoxContainer/Conditions" to="." method="_on_Conditions_pressed"]
+[connection signal="pressed" from="VBoxContainer/VBoxContainer/EventFlags" to="." method="_on_EventFlags_pressed"]
+[connection signal="pressed" from="VBoxContainer/VBoxContainer/Dialog" to="." method="_on_Dialog_pressed"]
diff --git a/addons/escoria-core/_test/test_migrations.gd b/addons/escoria-core/_test/test_migrations.gd
new file mode 100644
index 0000000..19ecb45
--- /dev/null
+++ b/addons/escoria-core/_test/test_migrations.gd
@@ -0,0 +1,20 @@
+extends Control
+
+
+
+func _on_CheckESCMigrationManager_pressed() -> bool:
+ var savegame: ESCSaveGame = ESCSaveGame.new()
+
+ savegame.globals["test"] = "testa"
+
+ var migration_manager: ESCMigrationManager = ESCMigrationManager.new()
+ savegame = migration_manager.migrate(
+ savegame,
+ "1.0.0",
+ "2.0.0",
+ "res://addons/escoria-core/_test/testversions"
+ )
+
+ assert(savegame.globals["test"] == "testc")
+
+ return true
diff --git a/addons/escoria-core/_test/test_migrations.gd.uid b/addons/escoria-core/_test/test_migrations.gd.uid
new file mode 100644
index 0000000..79fdadc
--- /dev/null
+++ b/addons/escoria-core/_test/test_migrations.gd.uid
@@ -0,0 +1 @@
+uid://b7x4hqeh2dtgi
diff --git a/addons/escoria-core/_test/test_migrations.tscn b/addons/escoria-core/_test/test_migrations.tscn
new file mode 100644
index 0000000..252dd79
--- /dev/null
+++ b/addons/escoria-core/_test/test_migrations.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=2 format=3 uid="uid://ck1ew8vbwietx"]
+
+[ext_resource type="Script" uid="uid://b7x4hqeh2dtgi" path="res://addons/escoria-core/_test/test_migrations.gd" id="1"]
+
+[node name="Control" type="Control"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1")
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="CheckESCMigrationManager" type="CheckButton" parent="VBoxContainer"]
+offset_right = 1280.0
+offset_bottom = 40.0
+text = "Check ESCMigrationManager"
+
+[connection signal="pressed" from="VBoxContainer/CheckESCMigrationManager" to="." method="_on_CheckESCMigrationManager_pressed"]
diff --git a/addons/escoria-core/_test/testversions/1.0.1.gd b/addons/escoria-core/_test/testversions/1.0.1.gd
new file mode 100644
index 0000000..a1cf8b8
--- /dev/null
+++ b/addons/escoria-core/_test/testversions/1.0.1.gd
@@ -0,0 +1,5 @@
+extends ESCMigration
+
+func migrate():
+ self._savegame.globals["test"] = "testb"
+
diff --git a/addons/escoria-core/_test/testversions/1.0.1.gd.uid b/addons/escoria-core/_test/testversions/1.0.1.gd.uid
new file mode 100644
index 0000000..ffbdb4c
--- /dev/null
+++ b/addons/escoria-core/_test/testversions/1.0.1.gd.uid
@@ -0,0 +1 @@
+uid://0fnh1m2wcuad
diff --git a/addons/escoria-core/_test/testversions/1.1.0.gd b/addons/escoria-core/_test/testversions/1.1.0.gd
new file mode 100644
index 0000000..7840490
--- /dev/null
+++ b/addons/escoria-core/_test/testversions/1.1.0.gd
@@ -0,0 +1,5 @@
+extends ESCMigration
+
+func migrate():
+ self._savegame.globals["test"] = "testc"
+
diff --git a/addons/escoria-core/_test/testversions/1.1.0.gd.uid b/addons/escoria-core/_test/testversions/1.1.0.gd.uid
new file mode 100644
index 0000000..b8b91b5
--- /dev/null
+++ b/addons/escoria-core/_test/testversions/1.1.0.gd.uid
@@ -0,0 +1 @@
+uid://gdobd31uc5ot