Deref Godot: tests/

This commit is contained in:
Dubhghlas McLaughlin
2024-10-09 10:27:26 -05:00
parent 9a0075c810
commit 78ed9d8a30
13 changed files with 88 additions and 75 deletions

View File

@@ -47,7 +47,7 @@ TEST_CASE("[ConfigFile] Parsing well-formatted files") {
name = "Unnamed Player"
tagline="Waiting
for
Godot"
Redot"
color =Color( 0, 0.5,1, 1) ; Inline comment
position= Vector2(
@@ -68,7 +68,7 @@ antiAliasing = false
String(config_file.get_value("player", "name")) == "Unnamed Player",
"Reading `player/name` should return the expected value.");
CHECK_MESSAGE(
String(config_file.get_value("player", "tagline")) == "Waiting\nfor\nGodot",
String(config_file.get_value("player", "tagline")) == "Waiting\nfor\nRedot",
"Reading `player/tagline` should return the expected value.");
CHECK_MESSAGE(
Color(config_file.get_value("player", "color")).is_equal_approx(Color(0, 0.5, 1)),
@@ -96,7 +96,7 @@ TEST_CASE("[ConfigFile] Parsing malformatted file") {
[player]
name = "Unnamed Player"" ; Extraneous closing quote.
tagline = "Waiting\nfor\nGodot"
tagline = "Waiting\nfor\nRedot"
color = Color(0, 0.5, 1) ; Missing 4th parameter.
position = Vector2(
@@ -118,7 +118,7 @@ antialiasing = false ; Duplicate key.
TEST_CASE("[ConfigFile] Saving file") {
ConfigFile config_file;
config_file.set_value("player", "name", "Unnamed Player");
config_file.set_value("player", "tagline", "Waiting\nfor\nGodot");
config_file.set_value("player", "tagline", "Waiting\nfor\nRedot");
config_file.set_value("player", "color", Color(0, 0.5, 1));
config_file.set_value("player", "position", Vector2(3, 4));
config_file.set_value("graphics", "antialiasing", true);
@@ -140,7 +140,7 @@ TEST_CASE("[ConfigFile] Saving file") {
name="Unnamed Player"
tagline="Waiting
for
Godot"
Redot"
color=Color(0, 0.5, 1, 1)
position=Vector2(3, 4)

View File

@@ -127,11 +127,11 @@ TEST_CASE("[JSON] Parsing arrays") {
TEST_CASE("[JSON] Parsing objects (dictionaries)") {
JSON json;
json.parse(R"({"name": "Godot Engine", "is_free": true, "bugs": null, "apples": {"red": 500, "green": 0, "blue": -20}, "empty_object": {}})");
json.parse(R"({"name": "Redot Engine", "is_free": true, "bugs": null, "apples": {"red": 500, "green": 0, "blue": -20}, "empty_object": {}})");
const Dictionary dictionary = json.get_data();
CHECK_MESSAGE(
dictionary["name"] == "Godot Engine",
dictionary["name"] == "Redot Engine",
"The parsed JSON should contain the expected values.");
CHECK_MESSAGE(
dictionary["is_free"],

View File

@@ -5,7 +5,7 @@
/* GODOT ENGINE */
/* https://godotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2014-present Redot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
@@ -141,13 +141,13 @@ TEST_CASE("[Marshalls] Floating point double precision decoding") {
}
TEST_CASE("[Marshalls] C string encoding") {
char cstring[] = "Godot"; // 5 characters
char cstring[] = "Redot"; // 5 characters
uint8_t data[6];
int actual_size = encode_cstring(cstring, data);
CHECK(actual_size == 6);
CHECK(data[0] == 'G');
CHECK(data[1] == 'o');
CHECK(data[0] == 'R');
CHECK(data[1] == 'e');
CHECK(data[2] == 'd');
CHECK(data[3] == 'o');
CHECK(data[4] == 't');

View File

@@ -68,7 +68,7 @@ TEST_CASE("[PacketPeer][PacketPeerStream] Encode buffer max size") {
}
TEST_CASE("[PacketPeer][PacketPeerStream] Read a variant from peer") {
String godot_rules = "Godot Rules!!!";
String godot_rules = "Redot Rules!!!";
Ref<StreamPeerBuffer> spb;
spb.instantiate();
@@ -95,7 +95,7 @@ TEST_CASE("[PacketPeer][PacketPeerStream] Read a variant from peer fails") {
}
TEST_CASE("[PacketPeer][PacketPeerStream] Put a variant to peer") {
String godot_rules = "Godot Rules!!!";
String godot_rules = "Redot Rules!!!";
Ref<StreamPeerBuffer> spb;
spb.instantiate();
@@ -127,7 +127,7 @@ TEST_CASE("[PacketPeer][PacketPeerStream] Put a variant to peer out of memory fa
}
TEST_CASE("[PacketPeer][PacketPeerStream] Get packet buffer") {
String godot_rules = "Godot Rules!!!";
String godot_rules = "Redot Rules!!!";
Ref<StreamPeerBuffer> spb;
spb.instantiate();
@@ -164,7 +164,7 @@ TEST_CASE("[PacketPeer][PacketPeerStream] Get packet buffer from an empty peer")
}
TEST_CASE("[PacketPeer][PacketPeerStream] Put packet buffer") {
String godot_rules = "Godot Rules!!!";
String godot_rules = "Redot Rules!!!";
Ref<StreamPeerBuffer> spb;
spb.instantiate();

View File

@@ -292,7 +292,7 @@ TEST_CASE("[Quaternion] Product") {
// Test ZYX dynamic-axes since test data is available online.
// Rotate first about X axis, then new Y axis, then new Z axis.
// (Godot uses YXZ Yaw-Pitch-Roll order).
// (Redot uses YXZ Yaw-Pitch-Roll order).
Quaternion q_yp = q_y * q_p;
CHECK(q_yp[0] == doctest::Approx(0.239118));
CHECK(q_yp[1] == doctest::Approx(0.369644));

View File

@@ -2,8 +2,8 @@
/* test_string.h */
/**************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/* REDOT ENGINE */
/* https://redotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
@@ -285,9 +285,9 @@ TEST_CASE("[String] Testing for empty string") {
}
TEST_CASE("[String] Contains") {
String s = "C:\\Godot\\project\\string_test.tscn";
String s = "C:\\Redot\\project\\string_test.tscn";
CHECK(s.contains(":\\"));
CHECK(s.contains("Godot"));
CHECK(s.contains("Redot"));
CHECK(s.contains(String("project\\string_test")));
CHECK(s.contains(String("\\string_test.tscn")));
@@ -298,9 +298,9 @@ TEST_CASE("[String] Contains") {
}
TEST_CASE("[String] Contains case insensitive") {
String s = "C:\\Godot\\project\\string_test.tscn";
CHECK(s.containsn("Godot"));
CHECK(s.containsn("godot"));
String s = "C:\\Redot\\project\\string_test.tscn";
CHECK(s.containsn("Redot"));
CHECK(s.containsn("Redot"));
CHECK(s.containsn(String("Project\\string_test")));
CHECK(s.containsn(String("\\string_Test.tscn")));
@@ -1422,7 +1422,7 @@ TEST_CASE("[String] Checking string is empty when it should be") {
if (!success) {
state = false;
}
String b = "Godot";
String b = "Redot";
success = b[b.size()] == 0;
if (!success) {
state = false;
@@ -1433,7 +1433,7 @@ TEST_CASE("[String] Checking string is empty when it should be") {
state = false;
}
const String d = "Godot";
const String d = "Redot";
success = d[d.size()] == 0;
if (!success) {
state = false;
@@ -1559,7 +1559,7 @@ TEST_CASE("[String] Count and countn functionality") {
s = "TestTestTest";
MULTICHECK_STRING_EQ(s, count, "TestTest", 1);
s = "TestGodotTestGodotTestGodot";
s = "TestRedotTestRedotTestRedot";
MULTICHECK_STRING_EQ(s, count, "Test", 3);
s = "TestTestTestTest";
@@ -1628,12 +1628,12 @@ TEST_CASE("[String] dedent") {
}
TEST_CASE("[String] Path functions") {
static const char *path[8] = { "C:\\Godot\\project\\test.tscn", "/Godot/project/test.xscn", "../Godot/project/test.scn", "Godot\\test.doc", "C:\\test.", "res://test", "user://test", "/.test" };
static const char *base_dir[8] = { "C:\\Godot\\project", "/Godot/project", "../Godot/project", "Godot", "C:\\", "res://", "user://", "/" };
static const char *base_name[8] = { "C:\\Godot\\project\\test", "/Godot/project/test", "../Godot/project/test", "Godot\\test", "C:\\test", "res://test", "user://test", "/" };
static const char *path[8] = { "C:\\Redot\\project\\test.tscn", "/Redot/project/test.xscn", "../Redot/project/test.scn", "Redot\\test.doc", "C:\\test.", "res://test", "user://test", "/.test" };
static const char *base_dir[8] = { "C:\\Redot\\project", "/Redot/project", "../Redot/project", "Redot", "C:\\", "res://", "user://", "/" };
static const char *base_name[8] = { "C:\\Redot\\project\\test", "/Redot/project/test", "../Redot/project/test", "Redot\\test", "C:\\test", "res://test", "user://test", "/" };
static const char *ext[8] = { "tscn", "xscn", "scn", "doc", "", "", "", "test" };
static const char *file[8] = { "test.tscn", "test.xscn", "test.scn", "test.doc", "test.", "test", "test", ".test" };
static const char *simplified[8] = { "C:/Godot/project/test.tscn", "/Godot/project/test.xscn", "../Godot/project/test.scn", "Godot/test.doc", "C:/test.", "res://test", "user://test", "/.test" };
static const char *simplified[8] = { "C:/Redot/project/test.tscn", "/Redot/project/test.xscn", "../Redot/project/test.scn", "Redot/test.doc", "C:/test.", "res://test", "user://test", "/.test" };
static const bool abs[8] = { true, true, false, false, true, true, true, true };
for (int i = 0; i < 8; i++) {
@@ -1666,8 +1666,8 @@ TEST_CASE("[String] hash") {
}
TEST_CASE("[String] uri_encode/unescape") {
String s = "Godot Engine:'docs'";
String t = "Godot%20Engine%3A%27docs%27";
String s = "Redot Engine:'docs'";
String t = "Redot%20Engine%3A%27docs%27";
String x1 = "T%C4%93%C5%A1t";
static const uint8_t u8str[] = { 0x54, 0xC4, 0x93, 0xC5, 0xA1, 0x74, 0x00 };
@@ -1794,20 +1794,32 @@ TEST_CASE("[String] Reverse") {
}
TEST_CASE("[String] SHA1/SHA256/MD5") {
String s = "Godot";
String sha1 = "a1e91f39b9fce6a9998b14bdbe2aa2b39dc2d201";
String s = "Redot";
String sha1 = "fa4e7bc6eda6baf3600e392f46be46f699bd5a8a";
static uint8_t sha1_buf[20] = {
0xA1, 0xE9, 0x1F, 0x39, 0xB9, 0xFC, 0xE6, 0xA9, 0x99, 0x8B, 0x14, 0xBD, 0xBE, 0x2A, 0xA2, 0xB3,
0x9D, 0xC2, 0xD2, 0x01
0xFA, 0x4E, 0x7B, 0xC6,
0xED, 0xA6, 0xBA, 0xF3,
0x60, 0x0E, 0x39, 0x2F,
0x46, 0xBE, 0x46, 0xF6,
0x99, 0xBD, 0x5A, 0x8A
};
String sha256 = "2a02b2443f7985d89d09001086ae3dcfa6eb0f55c6ef170715d42328e16e6cb8";
String sha256 = "5b33770f1e60d19c83ba6be484306fa1fcf5266e6ee8de2f4456483e92327c1a";
static uint8_t sha256_buf[32] = {
0x2A, 0x02, 0xB2, 0x44, 0x3F, 0x79, 0x85, 0xD8, 0x9D, 0x09, 0x00, 0x10, 0x86, 0xAE, 0x3D, 0xCF,
0xA6, 0xEB, 0x0F, 0x55, 0xC6, 0xEF, 0x17, 0x07, 0x15, 0xD4, 0x23, 0x28, 0xE1, 0x6E, 0x6C, 0xB8
0x5B, 0x33, 0x77, 0x0F,
0x1E, 0x60, 0xD1, 0x9C,
0x83, 0xBA, 0x6B, 0xE4,
0x84, 0x30, 0x6F, 0xA1,
0xFC, 0xF5, 0x26, 0x6E,
0x6E, 0xE8, 0xDE, 0x2F,
0x44, 0x56, 0x48, 0x3E,
0x92, 0x32, 0x7C, 0x1A
};
String md5 = "4a336d087aeb0390da10ee2ea7cb87f8";
String md5 = "a417866a47d1710210ed143c47ad5e4d";
static uint8_t md5_buf[16] = {
0x4A, 0x33, 0x6D, 0x08, 0x7A, 0xEB, 0x03, 0x90, 0xDA, 0x10, 0xEE, 0x2E, 0xA7, 0xCB, 0x87, 0xF8
0xA4, 0x17, 0x86, 0x6A,
0x47, 0xD1, 0x71, 0x02,
0x10, 0xED, 0x14, 0x3C,
0x47, 0xAD, 0x5E, 0x4D
};
PackedByteArray buf = s.sha1_buffer();
@@ -2007,19 +2019,20 @@ TEST_CASE("[String][URL] Parse URL") {
CHECK_URL("https://www.example.com:8080/path/to/file.html#fragment", "https://", "www.example.com", 8080, "/path/to/file.html", "fragment", Error::OK);
// Valid URLs.
CHECK_URL("https://godotengine.org", "https://", "godotengine.org", 0, "", "", Error::OK);
CHECK_URL("https://godotengine.org/", "https://", "godotengine.org", 0, "/", "", Error::OK);
CHECK_URL("godotengine.org/", "", "godotengine.org", 0, "/", "", Error::OK);
CHECK_URL("HTTPS://godotengine.org/", "https://", "godotengine.org", 0, "/", "", Error::OK);
CHECK_URL("https://GODOTENGINE.ORG/", "https://", "godotengine.org", 0, "/", "", Error::OK);
CHECK_URL("http://godotengine.org", "http://", "godotengine.org", 0, "", "", Error::OK);
CHECK_URL("https://godotengine.org:8080", "https://", "godotengine.org", 8080, "", "", Error::OK);
CHECK_URL("https://godotengine.org/blog", "https://", "godotengine.org", 0, "/blog", "", Error::OK);
CHECK_URL("https://godotengine.org/blog/", "https://", "godotengine.org", 0, "/blog/", "", Error::OK);
CHECK_URL("https://docs.godotengine.org/en/stable", "https://", "docs.godotengine.org", 0, "/en/stable", "", Error::OK);
CHECK_URL("https://docs.godotengine.org/en/stable/", "https://", "docs.godotengine.org", 0, "/en/stable/", "", Error::OK);
CHECK_URL("https://me:secret@godotengine.org", "https://", "godotengine.org", 0, "", "", Error::OK);
CHECK_URL("https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/ipv6", "https://", "fedc:ba98:7654:3210:fedc:ba98:7654:3210", 0, "/ipv6", "", Error::OK);
CHECK_URL("https://redotengine.org", "https://", "redotengine.org", 0, "", "", Error::OK);
CHECK_URL("https://redotengine.org/", "https://", "redotengine.org", 0, "/", "", Error::OK);
CHECK_URL("redotengine.org/", "", "redotengine.org", 0, "/", "", Error::OK);
CHECK_URL("HTTPS://redotengine.org/", "https://", "redotengine.org", 0, "/", "", Error::OK);
CHECK_URL("https://REDOTENGINE.ORG/", "https://", "redotengine.org", 0, "/", "", Error::OK);
CHECK_URL("http://redotengine.org", "http://", "redotengine.org", 0, "", "", Error::OK);
CHECK_URL("https://redotengine.org:8080", "https://", "redotengine.org", 8080, "", "", Error::OK);
CHECK_URL("https://redotengine.org/blog", "https://", "redotengine.org", 0, "/blog", "", Error::OK);
CHECK_URL("https://redotengine.org/blog/", "https://", "redotengine.org", 0, "/blog/", "", Error::OK);
CHECK_URL("https://docs.redotengine.org/en/stable", "https://", "docs.redotengine.org", 0, "/en/stable", "", Error::OK);
CHECK_URL("https://docs.redotengine.org/en/stable/", "https://", "docs.redotengine.org", 0, "/en/stable/", "", Error::OK);
CHECK_URL("https://me:secret@redotengine.org", "https://", "redotengine.org", 0, "", "", Error::OK);
// TODO: ADD redotengine.org ipv6"
CHECK_URL("https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/ipv6", "https://", "fedc:ba98:7654:3210:fedc:ba98:7654:3210", 0, "/ipv6", "", Error::OK);
// Scheme vs Fragment.
CHECK_URL("google.com/#goto=http://redirect_url/", "", "google.com", 0, "/", "goto=http://redirect_url/", Error::OK);
@@ -2027,18 +2040,18 @@ TEST_CASE("[String][URL] Parse URL") {
// Invalid URLs.
// Invalid Scheme.
CHECK_URL("https_://godotengine.org", "", "https_", 0, "//godotengine.org", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https_://redotengine.org", "", "https_", 0, "//redotengine.org", "", Error::ERR_INVALID_PARAMETER);
// Multiple ports.
CHECK_URL("https://godotengine.org:8080:433", "https://", "", 0, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://redotengine.org:8080:433", "https://", "", 0, "", "", Error::ERR_INVALID_PARAMETER);
// Missing ] on literal IPv6.
CHECK_URL("https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210/ipv6", "https://", "", 0, "/ipv6", "", Error::ERR_INVALID_PARAMETER);
// Missing host.
CHECK_URL("https:///blog", "https://", "", 0, "/blog", "", Error::ERR_INVALID_PARAMETER);
// Invalid ports.
CHECK_URL("https://godotengine.org:notaport", "https://", "godotengine.org", 0, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://godotengine.org:-8080", "https://", "godotengine.org", -8080, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://godotengine.org:88888", "https://", "godotengine.org", 88888, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://redotengine.org:notaport", "https://", "redotengine.org", 0, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://redotengine.org:-8080", "https://", "redotengine.org", -8080, "", "", Error::ERR_INVALID_PARAMETER);
CHECK_URL("https://redotengine.org:88888", "https://", "redotengine.org", 88888, "", "", Error::ERR_INVALID_PARAMETER);
#undef CHECK_URL
}

View File

@@ -441,15 +441,15 @@ TEST_CASE("[List] Swap middle (values check)") {
List<String>::Element *n_str1 = list.push_back("Still");
List<String>::Element *n_str2 = list.push_back("waiting");
List<String>::Element *n_str3 = list.push_back("for");
List<String>::Element *n_str4 = list.push_back("Godot.");
List<String>::Element *n_str4 = list.push_back("Redot.");
CHECK(n_str1->get() == "Still");
CHECK(n_str4->get() == "Godot.");
CHECK(n_str4->get() == "Redot.");
CHECK(list.front()->get() == "Still");
CHECK(list.front()->next()->get() == "waiting");
CHECK(list.back()->prev()->get() == "for");
CHECK(list.back()->get() == "Godot.");
CHECK(list.back()->get() == "Redot.");
list.swap(n_str2, n_str3);
@@ -459,18 +459,18 @@ TEST_CASE("[List] Swap middle (values check)") {
TEST_CASE("[List] Swap front and back (values check)") {
List<Variant> list;
Variant str = "Godot";
Variant str = "Redot";
List<Variant>::Element *n_str = list.push_back(str);
Variant color = Color(0, 0, 1);
List<Variant>::Element *n_color = list.push_back(color);
CHECK(list.front()->get() == "Godot");
CHECK(list.front()->get() == "Redot");
CHECK(list.back()->get() == Color(0, 0, 1));
list.swap(n_str, n_color);
CHECK(list.front()->get() == Color(0, 0, 1));
CHECK(list.back()->get() == "Godot");
CHECK(list.back()->get() == "Redot");
}
TEST_CASE("[List] Swap adjacent back and front (reverse order of elements)") {

View File

@@ -101,7 +101,7 @@ public:
String get_name() const override { return "mock"; }
// You can simulate DisplayServer-events by calling this function.
// The events will be deliverd to Godot's Input-system.
// The events will be deliverd to Redot's Input-system.
// Mouse-events (Button & Motion) will additionally update the DisplayServer's mouse position.
// For Mouse motion events, the `relative`-property is set based on the distance to the previous mouse position.
void simulate_event(Ref<InputEvent> p_event) {

View File

@@ -36,7 +36,7 @@
#include "tests/test_macros.h"
namespace TestSpriteFrames {
const String test_animation_name = "GodotTest";
const String test_animation_name = "RedotTest";
TEST_CASE("[SpriteFrames] Constructor methods") {
const SpriteFrames frames;

View File

@@ -6436,7 +6436,7 @@ TEST_CASE("[SceneTree][TextEdit] versioning") {
CHECK(text_edit->get_saved_version() == 0);
SUBCASE("[TextEdit] versioning selection") {
text_edit->set_text("Godot Engine\nWaiting for Godot\nTest Text for multi carat\nLine 4 Text");
text_edit->set_text("Redot Engine\nWaiting for Redot\nTest Text for multi carat\nLine 4 Text");
text_edit->set_multiple_carets_enabled(true);
text_edit->remove_secondary_carets();

View File

@@ -229,7 +229,7 @@ TEST_CASE("[ShaderPreprocessor] Concatenation") {
TEST_CASE("[ShaderPreprocessor] Nested concatenation") {
// Concatenation ## should not expand adjacent tokens if they are macros,
// but this is currently not implemented in Godot's shader preprocessor.
// but this is currently not implemented in Redot's shader preprocessor.
// To force expanding, an extra macro should be required (B in this case).
String code(

View File

@@ -48,7 +48,7 @@
// The test case is marked as failed, but does not fail the entire test run.
#define TEST_CASE_MAY_FAIL(name) TEST_CASE(name *doctest::may_fail())
// Provide aliases to conform with Godot naming conventions (see error macros).
// Provide aliases to conform with Redot naming conventions (see error macros).
#define TEST_COND(cond, ...) DOCTEST_CHECK_FALSE_MESSAGE(cond, __VA_ARGS__)
#define TEST_FAIL(cond, ...) DOCTEST_FAIL(cond, __VA_ARGS__)
#define TEST_FAIL_COND(cond, ...) DOCTEST_REQUIRE_FALSE_MESSAGE(cond, __VA_ARGS__)
@@ -123,7 +123,7 @@ DOCTEST_STRINGIFY_VARIANT(PackedVector4Array);
// Register test commands to be launched from the command-line.
// For instance: REGISTER_TEST_COMMAND("gdscript-parser" &test_parser_func).
// Example usage: `godot --test gdscript-parser`.
// Example usage: `redot --test gdscript-parser`.
typedef void (*TestFunc)();
extern HashMap<String, TestFunc> *test_commands;

View File

@@ -188,7 +188,7 @@
int test_main(int argc, char *argv[]) {
bool run_tests = true;
// Convert arguments to Godot's command-line.
// Convert arguments to Redot's command-line.
List<String> args;
for (int i = 0; i < argc; i++) {
@@ -227,10 +227,10 @@ int test_main(int argc, char *argv[]) {
}
if (test_args.size() > 0) {
// Convert Godot command line arguments back to standard arguments.
// Convert Redot command line arguments back to standard arguments.
char **doctest_args = new char *[test_args.size()];
for (uint32_t x = 0; x < test_args.size(); x++) {
// Operation to convert Godot string to non wchar string.
// Operation to convert Redot string to non wchar string.
CharString cs = test_args[x].utf8();
const char *str = cs.get_data();
// Allocate the string copy.
@@ -467,4 +467,4 @@ private:
}
};
REGISTER_LISTENER("GodotTestCaseListener", 1, GodotTestCaseListener);
REGISTER_LISTENER("RedotTestCaseListener", 1, GodotTestCaseListener);