From d733663e8bd9940b55da76bd04f1ec8896414c11 Mon Sep 17 00:00:00 2001 From: David Snopek Date: Fri, 20 Oct 2023 10:22:08 -0500 Subject: Add an automated test using a Variant iterator --- test/src/example.cpp | 37 +++++++++++++++++++++++++++++++++++++ test/src/example.h | 2 ++ 2 files changed, 39 insertions(+) (limited to 'test/src') 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::test_bitfield(BitField 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 test_bitfield(BitField flags); + Variant test_variant_iterator(const Variant &p_input); + // RPC void test_rpc(int p_value); void test_send_rpc(int p_value); -- cgit v1.2.3