summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/core/templates
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/core/templates')
-rw-r--r--addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd36
-rw-r--r--addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd.uid1
-rw-r--r--addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd144
-rw-r--r--addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd.uid1
4 files changed, 182 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd
new file mode 100644
index 0000000..20325ac
--- /dev/null
+++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd
@@ -0,0 +1,36 @@
+class_name GdUnitTestSuiteDefaultTemplate
+extends RefCounted
+
+
+const DEFAULT_TEMP_TS_GD ="""
+ # GdUnit generated TestSuite
+ class_name ${suite_class_name}
+ extends GdUnitTestSuite
+ @warning_ignore('unused_parameter')
+ @warning_ignore('return_value_discarded')
+
+ # TestSuite generated from
+ const __source: String = '${source_resource_path}'
+"""
+
+
+const DEFAULT_TEMP_TS_CS = """
+ // GdUnit generated TestSuite
+
+ using Godot;
+ using GdUnit4;
+
+ namespace ${name_space}
+ {
+ using static Assertions;
+ using static Utils;
+
+ [TestSuite]
+ public class ${suite_class_name}
+ {
+ // TestSuite generated from
+ private const string sourceClazzPath = "${source_resource_path}";
+
+ }
+ }
+"""
diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd.uid b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd.uid
new file mode 100644
index 0000000..af9b576
--- /dev/null
+++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd.uid
@@ -0,0 +1 @@
+uid://d36rdpq1g8nt1
diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd
new file mode 100644
index 0000000..6fc282d
--- /dev/null
+++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd
@@ -0,0 +1,144 @@
+class_name GdUnitTestSuiteTemplate
+extends RefCounted
+
+const TEMPLATE_ID_GD = 1000
+const TEMPLATE_ID_CS = 2000
+
+const SUPPORTED_TAGS_GD = """
+ GdScript Tags are replaced when the test-suite is created.
+
+ # The class name of the test-suite, formed from the source script.
+ ${suite_class_name}
+ # is used to build the test suite class name
+ class_name ${suite_class_name}
+ extends GdUnitTestSuite
+
+
+ # The class name in pascal case, formed from the source script.
+ ${source_class}
+ # can be used to create the class e.g. for source 'MyClass'
+ var my_test_class := ${source_class}.new()
+ # will be result in
+ var my_test_class := MyClass.new()
+
+ # The class as variable name in snake case, formed from the source script.
+ ${source_var}
+ # Can be used to build the variable name e.g. for source 'MyClass'
+ var ${source_var} := ${source_class}.new()
+ # will be result in
+ var my_class := MyClass.new()
+
+ # The full resource path from which the file was created.
+ ${source_resource_path}
+ # Can be used to load the script in your test
+ var my_script := load(${source_resource_path})
+ # will be result in
+ var my_script := load("res://folder/my_class.gd")
+"""
+
+const SUPPORTED_TAGS_CS = """
+ C# Tags are replaced when the test-suite is created.
+
+ // The namespace name of the test-suite
+ ${name_space}
+ namespace ${name_space}
+
+ // The class name of the test-suite, formed from the source class.
+ ${suite_class_name}
+ // is used to build the test suite class name
+ [TestSuite]
+ public class ${suite_class_name}
+
+ // The class name formed from the source class.
+ ${source_class}
+ // can be used to create the class e.g. for source 'MyClass'
+ private string myTestClass = new ${source_class}();
+ // will be result in
+ private string myTestClass = new MyClass();
+
+ // The class as variable name in camelCase, formed from the source class.
+ ${source_var}
+ // Can be used to build the variable name e.g. for source 'MyClass'
+ private object ${source_var} = new ${source_class}();
+ // will be result in
+ private object myClass = new MyClass();
+
+ // The full resource path from which the file was created.
+ ${source_resource_path}
+ // Can be used to load the script in your test
+ private object myScript = GD.Load(${source_resource_path});
+ // will be result in
+ private object myScript = GD.Load("res://folder/MyClass.cs");
+"""
+
+const TAG_TEST_SUITE_CLASS = "${suite_class_name}"
+const TAG_SOURCE_CLASS_NAME = "${source_class}"
+const TAG_SOURCE_CLASS_VARNAME = "${source_var}"
+const TAG_SOURCE_RESOURCE_PATH = "${source_resource_path}"
+
+
+static func default_GD_template() -> String:
+ return GdUnitTestSuiteDefaultTemplate.DEFAULT_TEMP_TS_GD.dedent().trim_prefix("\n")
+
+
+static func default_CS_template() -> String:
+ return GdUnitTestSuiteDefaultTemplate.DEFAULT_TEMP_TS_CS.dedent().trim_prefix("\n")
+
+
+static func build_template(source_path: String) -> String:
+ var clazz_name :String = GdObjects.to_pascal_case(GdObjects.extract_class_name(source_path).value_as_string())
+ var template: String = GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template())
+
+ return template\
+ .replace(TAG_TEST_SUITE_CLASS, clazz_name+"Test")\
+ .replace(TAG_SOURCE_RESOURCE_PATH, source_path)\
+ .replace(TAG_SOURCE_CLASS_NAME, clazz_name)\
+ .replace(TAG_SOURCE_CLASS_VARNAME, GdObjects.to_snake_case(clazz_name))
+
+
+static func default_template(template_id :int) -> String:
+ if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS:
+ push_error("Invalid template '%d' id! Cant load testsuite template" % template_id)
+ return ""
+ if template_id == TEMPLATE_ID_GD:
+ return default_GD_template()
+ return default_CS_template()
+
+
+static func load_template(template_id :int) -> String:
+ if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS:
+ push_error("Invalid template '%d' id! Cant load testsuite template" % template_id)
+ return ""
+ if template_id == TEMPLATE_ID_GD:
+ return GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template())
+ return GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_CS, default_CS_template())
+
+
+static func save_template(template_id :int, template :String) -> void:
+ if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS:
+ push_error("Invalid template '%d' id! Cant load testsuite template" % template_id)
+ return
+ if template_id == TEMPLATE_ID_GD:
+ GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_GD, template.dedent().trim_prefix("\n"))
+ elif template_id == TEMPLATE_ID_CS:
+ GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_CS, template.dedent().trim_prefix("\n"))
+
+
+static func reset_to_default(template_id :int) -> void:
+ if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS:
+ push_error("Invalid template '%d' id! Cant load testsuite template" % template_id)
+ return
+ if template_id == TEMPLATE_ID_GD:
+ GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template())
+ else:
+ GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_CS, default_CS_template())
+
+
+static func load_tags(template_id :int) -> String:
+ if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS:
+ push_error("Invalid template '%d' id! Cant load testsuite template" % template_id)
+ return "Error checked loading tags"
+ if template_id == TEMPLATE_ID_GD:
+ return SUPPORTED_TAGS_GD
+ else:
+ return SUPPORTED_TAGS_CS
diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd.uid b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd.uid
new file mode 100644
index 0000000..e901a3d
--- /dev/null
+++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd.uid
@@ -0,0 +1 @@
+uid://b2v71bhkym4ji