summaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2023-10-20 10:22:08 -0500
committerDavid Snopek <dsnopek@gmail.com>2023-10-20 12:58:00 -0500
commitd733663e8bd9940b55da76bd04f1ec8896414c11 (patch)
treeab51a573ce4996105db21118d03b497554035927 /test/src
parent0a6a19e33bb75d9f6f23adf16b4e695d009b0fc6 (diff)
downloadredot-cpp-d733663e8bd9940b55da76bd04f1ec8896414c11.tar.gz
Add an automated test using a Variant iterator
Diffstat (limited to 'test/src')
-rw-r--r--test/src/example.cpp37
-rw-r--r--test/src/example.h2
2 files changed, 39 insertions, 0 deletions
diff --git a/test/src/example.cpp b/test/src/example.cpp
index 759cc4f..c82bfba 100644
--- a/test/src/example.cpp
+++ b/test/src/example.cpp
@@ -171,6 +171,8 @@ void Example::_bind_methods() {
ClassDB::bind_method(D_METHOD("test_bitfield", "flags"), &Example::test_bitfield);
+ ClassDB::bind_method(D_METHOD("test_variant_iterator", "input"), &Example::test_variant_iterator);
+
ClassDB::bind_method(D_METHOD("test_rpc", "value"), &Example::test_rpc);
ClassDB::bind_method(D_METHOD("test_send_rpc", "value"), &Example::test_send_rpc);
ClassDB::bind_method(D_METHOD("return_last_rpc_arg"), &Example::return_last_rpc_arg);
@@ -484,6 +486,41 @@ BitField<Example::Flags> Example::test_bitfield(BitField<Flags> flags) {
return flags;
}
+Variant Example::test_variant_iterator(const Variant &p_input) {
+ Array output;
+
+ Variant iter;
+
+ bool is_init_valid = true;
+ if (!p_input.iter_init(iter, is_init_valid)) {
+ if (!is_init_valid) {
+ return "iter_init: not valid";
+ }
+ return output;
+ }
+
+ bool is_iter_next_valid = true;
+ bool is_iter_get_valid = true;
+ do {
+ if (!is_iter_next_valid) {
+ return "iter_next: not valid";
+ }
+
+ Variant value = p_input.iter_get(iter, is_iter_get_valid);
+ if (!is_iter_get_valid) {
+ return "iter_get: not valid";
+ }
+ output.push_back(((int)value) + 5);
+
+ } while (p_input.iter_next(iter, is_iter_next_valid));
+
+ if (!is_iter_next_valid) {
+ return "iter_next: not valid";
+ }
+
+ return output;
+}
+
void Example::test_rpc(int p_value) {
last_rpc_arg = p_value;
}
diff --git a/test/src/example.h b/test/src/example.h
index 4dfda23..929d8bb 100644
--- a/test/src/example.h
+++ b/test/src/example.h
@@ -152,6 +152,8 @@ public:
BitField<Flags> test_bitfield(BitField<Flags> flags);
+ Variant test_variant_iterator(const Variant &p_input);
+
// RPC
void test_rpc(int p_value);
void test_send_rpc(int p_value);