summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/project/main.gd4
-rw-r--r--test/src/example.cpp37
-rw-r--r--test/src/example.h2
3 files changed, 43 insertions, 0 deletions
diff --git a/test/project/main.gd b/test/project/main.gd
index f51ef3b..d5b8d94 100644
--- a/test/project/main.gd
+++ b/test/project/main.gd
@@ -184,6 +184,10 @@ func _ready():
assert_equal(example.test_bitfield(0), 0)
assert_equal(example.test_bitfield(Example.FLAG_ONE | Example.FLAG_TWO), 3)
+ # Test variant iterator.
+ assert_equal(example.test_variant_iterator([10, 20, 30]), [15, 25, 35])
+ assert_equal(example.test_variant_iterator(null), "iter_init: not valid")
+
# RPCs.
assert_equal(example.return_last_rpc_arg(), 0)
example.test_rpc(42)
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);