diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/SConstruct | 1 | ||||
-rw-r--r-- | test/project/main.gd | 10 | ||||
-rw-r--r-- | test/src/example.cpp | 13 | ||||
-rw-r--r-- | test/src/example.h | 11 | ||||
-rw-r--r-- | test/src/register_types.cpp | 1 |
6 files changed, 37 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 42ea6e0..f1c4c0d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -38,6 +38,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # using Visual Studio C++ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /WX") # /GF /MP set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /DTYPED_METHOD_BIND") + set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /utf-8") if(CMAKE_BUILD_TYPE MATCHES Debug) set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /MDd") # /Od /RTC1 /Zi diff --git a/test/SConstruct b/test/SConstruct index 1f1db0f..b949bca 100644 --- a/test/SConstruct +++ b/test/SConstruct @@ -42,4 +42,5 @@ else: source=sources, ) +env.NoCache(library) Default(library) diff --git a/test/project/main.gd b/test/project/main.gd index 386d188..e5a3b95 100644 --- a/test/project/main.gd +++ b/test/project/main.gd @@ -209,6 +209,12 @@ func _ready(): assert_equal(example.test_variant_float_conversion(10.0), 10.0) assert_equal(example.test_variant_float_conversion(10), 10.0) + # Test checking if objects are valid. + var object_of_questionable_validity = Object.new() + assert_equal(example.test_object_is_valid(object_of_questionable_validity), true) + object_of_questionable_validity.free() + assert_equal(example.test_object_is_valid(object_of_questionable_validity), false) + # Test that ptrcalls from GDExtension to the engine are correctly encoding Object and RefCounted. var new_node = Node.new() example.test_add_child(new_node) @@ -279,6 +285,10 @@ func _ready(): assert_equal(library_path, ProjectSettings.globalize_path(library_path)) assert_equal(FileAccess.file_exists(library_path), true) + # Test a class with a unicode name. + var przykład = ExamplePrzykład.new() + assert_equal(przykład.get_the_word(), "słowo to przykład") + exit_with_status() func _on_Example_custom_signal(signal_name, value): diff --git a/test/src/example.cpp b/test/src/example.cpp index 692d004..22739b2 100644 --- a/test/src/example.cpp +++ b/test/src/example.cpp @@ -217,6 +217,7 @@ void Example::_bind_methods() { ClassDB::bind_method(D_METHOD("test_variant_vector2i_conversion", "variant"), &Example::test_variant_vector2i_conversion); ClassDB::bind_method(D_METHOD("test_variant_int_conversion", "variant"), &Example::test_variant_int_conversion); ClassDB::bind_method(D_METHOD("test_variant_float_conversion", "variant"), &Example::test_variant_float_conversion); + ClassDB::bind_method(D_METHOD("test_object_is_valid", "variant"), &Example::test_object_is_valid); ClassDB::bind_method(D_METHOD("test_add_child", "node"), &Example::test_add_child); ClassDB::bind_method(D_METHOD("test_set_tileset", "tilemap", "tileset"), &Example::test_set_tileset); @@ -598,6 +599,10 @@ float Example::test_variant_float_conversion(const Variant &p_variant) const { return p_variant; } +bool Example::test_object_is_valid(const Variant &p_variant) const { + return static_cast<bool>(p_variant.get_validated_object()); +} + void Example::test_add_child(Node *p_node) { add_child(p_node); } @@ -755,3 +760,11 @@ ExampleRuntime::ExampleRuntime() { ExampleRuntime::~ExampleRuntime() { } + +void ExamplePrzykład::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_the_word"), &ExamplePrzykład::get_the_word); +} + +String ExamplePrzykład::get_the_word() const { + return U"słowo to przykład"; +} diff --git a/test/src/example.h b/test/src/example.h index a28deff..a7ae54c 100644 --- a/test/src/example.h +++ b/test/src/example.h @@ -147,6 +147,7 @@ public: Vector2i test_variant_vector2i_conversion(const Variant &p_variant) const; int test_variant_int_conversion(const Variant &p_variant) const; float test_variant_float_conversion(const Variant &p_variant) const; + bool test_object_is_valid(const Variant &p_variant) const; void test_add_child(Node *p_node); void test_set_tileset(TileMap *p_tilemap, const Ref<TileSet> &p_tileset) const; @@ -275,4 +276,14 @@ public: ~ExampleRuntime(); }; +class ExamplePrzykład : public RefCounted { + GDCLASS(ExamplePrzykład, RefCounted); + +protected: + static void _bind_methods(); + +public: + String get_the_word() const; +}; + #endif // EXAMPLE_CLASS_H diff --git a/test/src/register_types.cpp b/test/src/register_types.cpp index 7cfe689..d9290c8 100644 --- a/test/src/register_types.cpp +++ b/test/src/register_types.cpp @@ -30,6 +30,7 @@ void initialize_example_module(ModuleInitializationLevel p_level) { GDREGISTER_CLASS(ExampleBase); GDREGISTER_CLASS(ExampleChild); GDREGISTER_RUNTIME_CLASS(ExampleRuntime); + GDREGISTER_CLASS(ExamplePrzykład); } void uninitialize_example_module(ModuleInitializationLevel p_level) { |