summaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-09-24 17:11:50 +0200
committerBastiaan Olij <mux213@gmail.com>2021-09-27 23:08:12 +1000
commit59d38a4119471cd68db70ece12d5dd43f4b6e026 (patch)
treecc01db88d7625df0a0cd5246887fa8171d2a8913 /test/src
parent42dd64f22fc0cddaec4d2ba57640fa3adaae8823 (diff)
downloadredot-cpp-59d38a4119471cd68db70ece12d5dd43f4b6e026.tar.gz
Add test for extended object creation/deletion.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/example.cpp13
-rw-r--r--test/src/example.h12
-rw-r--r--test/src/register_types.cpp1
3 files changed, 26 insertions, 0 deletions
diff --git a/test/src/example.cpp b/test/src/example.cpp
index 43ad8b3..e3ed316 100644
--- a/test/src/example.cpp
+++ b/test/src/example.cpp
@@ -38,12 +38,21 @@
using namespace godot;
+ExampleRef::ExampleRef() {
+ UtilityFunctions::print("ExampleRef created.");
+}
+
+ExampleRef::~ExampleRef() {
+ UtilityFunctions::print("ExampleRef destroyed.");
+}
+
void Example::_bind_methods() {
// Methods.
ClassDB::bind_method(D_METHOD("simple_func"), &Example::simple_func);
ClassDB::bind_method(D_METHOD("simple_const_func"), &Example::simple_const_func);
ClassDB::bind_method(D_METHOD("return_something"), &Example::return_something);
ClassDB::bind_method(D_METHOD("return_something_const"), &Example::return_something_const);
+ ClassDB::bind_method(D_METHOD("return_extended_ref"), &Example::return_extended_ref);
{
MethodInfo mi;
@@ -94,6 +103,10 @@ Viewport *Example::return_something_const() const {
return nullptr;
}
+ExampleRef *Example::return_extended_ref() const {
+ return memnew(ExampleRef());
+}
+
Variant Example::varargs_func(const Variant **args, GDNativeInt arg_count, GDNativeCallError &error) {
UtilityFunctions::print("Varargs called with ", String::num(arg_count), " arguments");
return arg_count;
diff --git a/test/src/example.h b/test/src/example.h
index 6db6f9b..e72051b 100644
--- a/test/src/example.h
+++ b/test/src/example.h
@@ -39,6 +39,17 @@
using namespace godot;
+class ExampleRef : public RefCounted {
+ GDCLASS(ExampleRef, RefCounted);
+
+protected:
+ static void _bind_methods() {}
+
+public:
+ ExampleRef();
+ ~ExampleRef();
+};
+
class Example : public Control {
GDCLASS(Example, Control);
@@ -64,6 +75,7 @@ public:
void simple_const_func() const;
String return_something(const String &base);
Viewport *return_something_const() const;
+ ExampleRef *return_extended_ref() const;
Variant varargs_func(const Variant **args, GDNativeInt arg_count, GDNativeCallError &error);
void emit_custom_signal(const String &name, int value);
diff --git a/test/src/register_types.cpp b/test/src/register_types.cpp
index 35f2693..52e5b57 100644
--- a/test/src/register_types.cpp
+++ b/test/src/register_types.cpp
@@ -41,6 +41,7 @@
using namespace godot;
void register_example_types() {
+ ClassDB::register_class<ExampleRef>();
ClassDB::register_class<Example>();
}