// ===================================================================================================================== // fennec, a free and open source game engine // Copyright © 2025 - 2026 Medusa Slockbower // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // ===================================================================================================================== #ifndef FENNEC_TEST_RTTI_H #define FENNEC_TEST_RTTI_H #include #include #include #include #include #include "../test.h" namespace fennec::test { struct rtti_test_base { FENNEC_RTTI_CLASS_ENABLE() { } }; struct rtti_test_sub : rtti_test_base { FENNEC_RTTI_CLASS_ENABLE(rtti_test_base) { } }; inline void fennec_test_rtti() { fennec_test_run(string(detail::type_name()), string("int")); fennec_test_run(type::get(), type::get()); fennec_test_spacer(1); fennec_test_run(type::get().name(), string(detail::type_name())); fennec_test_run(type::get().supertypes()[0].name(), string(detail::type_name())); fennec_test_run(type::get().subtypes()[0].name(), string(detail::type_name())); fennec_test_spacer(1); fennec_test_run(type::get().is_complete(), true); fennec_test_run(type::get().is_iterable(), false); fennec_test_run(type::get().is_indexable(), false); fennec_test_run(type::get().is_mappable(), false); fennec_test_spacer(1); fennec_test_run(type::get>().is_complete(), true); fennec_test_run(type::get>().is_iterable(), true); fennec_test_run(type::get>().is_indexable(), true); fennec_test_run(type::get>().is_mappable(), false); fennec_test_spacer(1); fennec_test_run((type::get>().is_complete()), true); fennec_test_run((type::get>().is_iterable()), true); fennec_test_run((type::get>().is_indexable()), true); fennec_test_run((type::get>().is_mappable()), true); fennec_test_run((type::get>().key_type()), type::get()); } } #endif // FENNEC_TEST_RTTI_H