Don't right-align escaped newlines, e.g. for #define. This has previously led to long diffs in the commit history.
This commit is contained in:
parent
f4f0679a2d
commit
c5df0cb82b
144 changed files with 4519 additions and 4519 deletions
|
|
@ -255,109 +255,109 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
#define DEFINE_DUPLICATE_GUINEA_PIG(m_class_name, m_property_usage) \
|
||||
class m_class_name : public Resource { \
|
||||
GDCLASS(m_class_name, Resource) \
|
||||
\
|
||||
DuplicateGuineaPigData data; \
|
||||
\
|
||||
public: \
|
||||
void set_obj(Object *p_obj) { \
|
||||
data.obj = p_obj; \
|
||||
} \
|
||||
Object *get_obj() const { \
|
||||
return data.obj; \
|
||||
} \
|
||||
\
|
||||
void set_arr(const Array &p_arr) { \
|
||||
data.arr = p_arr; \
|
||||
} \
|
||||
Array get_arr() const { \
|
||||
return data.arr; \
|
||||
} \
|
||||
\
|
||||
void set_dict(const Dictionary &p_dict) { \
|
||||
data.dict = p_dict; \
|
||||
} \
|
||||
Dictionary get_dict() const { \
|
||||
return data.dict; \
|
||||
} \
|
||||
\
|
||||
void set_packed(const Variant &p_packed) { \
|
||||
data.packed = p_packed; \
|
||||
} \
|
||||
Variant get_packed() const { \
|
||||
return data.packed; \
|
||||
} \
|
||||
\
|
||||
void set_subres(const Ref<Resource> &p_subres) { \
|
||||
data.subres = p_subres; \
|
||||
} \
|
||||
Ref<Resource> get_subres() const { \
|
||||
return data.subres; \
|
||||
} \
|
||||
\
|
||||
void set_subres_sl(const Ref<Resource> &p_subres) { \
|
||||
data.subres_sl = p_subres; \
|
||||
} \
|
||||
Ref<Resource> get_subres_sl() const { \
|
||||
return data.subres_sl; \
|
||||
} \
|
||||
\
|
||||
void set_defaults() { \
|
||||
data.set_defaults(); \
|
||||
} \
|
||||
\
|
||||
Object *get_data() { \
|
||||
return &data; \
|
||||
} \
|
||||
\
|
||||
void verify_duplication(const Ref<Resource> &p_orig, int p_test_mode, int p_deep_mode) const { \
|
||||
const DuplicateGuineaPigData *orig_data = Object::cast_to<DuplicateGuineaPigData>(p_orig->call("get_data")); \
|
||||
data.verify_duplication(orig_data, m_property_usage, (TestDuplicateMode)p_test_mode, (ResourceDeepDuplicateMode)p_deep_mode); \
|
||||
} \
|
||||
\
|
||||
protected: \
|
||||
static void _bind_methods() { \
|
||||
ClassDB::bind_method(D_METHOD("set_obj", "obj"), &m_class_name::set_obj); \
|
||||
ClassDB::bind_method(D_METHOD("get_obj"), &m_class_name::get_obj); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_arr", "arr"), &m_class_name::set_arr); \
|
||||
ClassDB::bind_method(D_METHOD("get_arr"), &m_class_name::get_arr); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_dict", "dict"), &m_class_name::set_dict); \
|
||||
ClassDB::bind_method(D_METHOD("get_dict"), &m_class_name::get_dict); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_packed", "packed"), &m_class_name::set_packed); \
|
||||
ClassDB::bind_method(D_METHOD("get_packed"), &m_class_name::get_packed); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_subres", "subres"), &m_class_name::set_subres); \
|
||||
ClassDB::bind_method(D_METHOD("get_subres"), &m_class_name::get_subres); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_subres_sl", "subres"), &m_class_name::set_subres_sl); \
|
||||
ClassDB::bind_method(D_METHOD("get_subres_sl"), &m_class_name::get_subres_sl); \
|
||||
\
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "obj", PROPERTY_HINT_NONE, "", m_property_usage), "set_obj", "get_obj"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "arr", PROPERTY_HINT_NONE, "", m_property_usage), "set_arr", "get_arr"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "dict", PROPERTY_HINT_NONE, "", m_property_usage), "set_dict", "get_dict"); \
|
||||
#define DEFINE_DUPLICATE_GUINEA_PIG(m_class_name, m_property_usage) \
|
||||
class m_class_name : public Resource { \
|
||||
GDCLASS(m_class_name, Resource) \
|
||||
\
|
||||
DuplicateGuineaPigData data; \
|
||||
\
|
||||
public: \
|
||||
void set_obj(Object *p_obj) { \
|
||||
data.obj = p_obj; \
|
||||
} \
|
||||
Object *get_obj() const { \
|
||||
return data.obj; \
|
||||
} \
|
||||
\
|
||||
void set_arr(const Array &p_arr) { \
|
||||
data.arr = p_arr; \
|
||||
} \
|
||||
Array get_arr() const { \
|
||||
return data.arr; \
|
||||
} \
|
||||
\
|
||||
void set_dict(const Dictionary &p_dict) { \
|
||||
data.dict = p_dict; \
|
||||
} \
|
||||
Dictionary get_dict() const { \
|
||||
return data.dict; \
|
||||
} \
|
||||
\
|
||||
void set_packed(const Variant &p_packed) { \
|
||||
data.packed = p_packed; \
|
||||
} \
|
||||
Variant get_packed() const { \
|
||||
return data.packed; \
|
||||
} \
|
||||
\
|
||||
void set_subres(const Ref<Resource> &p_subres) { \
|
||||
data.subres = p_subres; \
|
||||
} \
|
||||
Ref<Resource> get_subres() const { \
|
||||
return data.subres; \
|
||||
} \
|
||||
\
|
||||
void set_subres_sl(const Ref<Resource> &p_subres) { \
|
||||
data.subres_sl = p_subres; \
|
||||
} \
|
||||
Ref<Resource> get_subres_sl() const { \
|
||||
return data.subres_sl; \
|
||||
} \
|
||||
\
|
||||
void set_defaults() { \
|
||||
data.set_defaults(); \
|
||||
} \
|
||||
\
|
||||
Object *get_data() { \
|
||||
return &data; \
|
||||
} \
|
||||
\
|
||||
void verify_duplication(const Ref<Resource> &p_orig, int p_test_mode, int p_deep_mode) const { \
|
||||
const DuplicateGuineaPigData *orig_data = Object::cast_to<DuplicateGuineaPigData>(p_orig->call("get_data")); \
|
||||
data.verify_duplication(orig_data, m_property_usage, (TestDuplicateMode)p_test_mode, (ResourceDeepDuplicateMode)p_deep_mode); \
|
||||
} \
|
||||
\
|
||||
protected: \
|
||||
static void _bind_methods() { \
|
||||
ClassDB::bind_method(D_METHOD("set_obj", "obj"), &m_class_name::set_obj); \
|
||||
ClassDB::bind_method(D_METHOD("get_obj"), &m_class_name::get_obj); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_arr", "arr"), &m_class_name::set_arr); \
|
||||
ClassDB::bind_method(D_METHOD("get_arr"), &m_class_name::get_arr); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_dict", "dict"), &m_class_name::set_dict); \
|
||||
ClassDB::bind_method(D_METHOD("get_dict"), &m_class_name::get_dict); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_packed", "packed"), &m_class_name::set_packed); \
|
||||
ClassDB::bind_method(D_METHOD("get_packed"), &m_class_name::get_packed); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_subres", "subres"), &m_class_name::set_subres); \
|
||||
ClassDB::bind_method(D_METHOD("get_subres"), &m_class_name::get_subres); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_subres_sl", "subres"), &m_class_name::set_subres_sl); \
|
||||
ClassDB::bind_method(D_METHOD("get_subres_sl"), &m_class_name::get_subres_sl); \
|
||||
\
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "obj", PROPERTY_HINT_NONE, "", m_property_usage), "set_obj", "get_obj"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "arr", PROPERTY_HINT_NONE, "", m_property_usage), "set_arr", "get_arr"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "dict", PROPERTY_HINT_NONE, "", m_property_usage), "set_dict", "get_dict"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "packed", PROPERTY_HINT_NONE, "", m_property_usage), "set_packed", "get_packed"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "subres", PROPERTY_HINT_NONE, "", m_property_usage), "set_subres", "get_subres"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "subres_sl", PROPERTY_HINT_NONE, "", m_property_usage), "set_subres_sl", "get_subres_sl"); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_defaults"), &m_class_name::set_defaults); \
|
||||
ClassDB::bind_method(D_METHOD("get_data"), &m_class_name::get_data); \
|
||||
ClassDB::bind_method(D_METHOD("verify_duplication", "orig", "test_mode", "deep_mode"), &m_class_name::verify_duplication); \
|
||||
} \
|
||||
\
|
||||
public: \
|
||||
static m_class_name *register_and_instantiate() { \
|
||||
static bool registered = false; \
|
||||
if (!registered) { \
|
||||
GDREGISTER_CLASS(m_class_name); \
|
||||
registered = true; \
|
||||
} \
|
||||
return memnew(m_class_name); \
|
||||
} \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "subres", PROPERTY_HINT_NONE, "", m_property_usage), "set_subres", "get_subres"); \
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "subres_sl", PROPERTY_HINT_NONE, "", m_property_usage), "set_subres_sl", "get_subres_sl"); \
|
||||
\
|
||||
ClassDB::bind_method(D_METHOD("set_defaults"), &m_class_name::set_defaults); \
|
||||
ClassDB::bind_method(D_METHOD("get_data"), &m_class_name::get_data); \
|
||||
ClassDB::bind_method(D_METHOD("verify_duplication", "orig", "test_mode", "deep_mode"), &m_class_name::verify_duplication); \
|
||||
} \
|
||||
\
|
||||
public: \
|
||||
static m_class_name *register_and_instantiate() { \
|
||||
static bool registered = false; \
|
||||
if (!registered) { \
|
||||
GDREGISTER_CLASS(m_class_name); \
|
||||
registered = true; \
|
||||
} \
|
||||
return memnew(m_class_name); \
|
||||
} \
|
||||
};
|
||||
|
||||
DEFINE_DUPLICATE_GUINEA_PIG(DuplicateGuineaPig_None, PROPERTY_USAGE_NONE)
|
||||
|
|
|
|||
|
|
@ -1622,9 +1622,9 @@ TEST_CASE("[String] Checking string is empty when it should be") {
|
|||
}
|
||||
|
||||
TEST_CASE("[String] lstrip and rstrip") {
|
||||
#define STRIP_TEST(x) \
|
||||
{ \
|
||||
bool success = x; \
|
||||
#define STRIP_TEST(x) \
|
||||
{ \
|
||||
bool success = x; \
|
||||
state = state && success; \
|
||||
}
|
||||
|
||||
|
|
@ -2183,17 +2183,17 @@ TEST_CASE("[String] Variant ptr indexed set") {
|
|||
|
||||
TEST_CASE("[String][URL] Parse URL") {
|
||||
#define CHECK_URL(m_url_to_parse, m_expected_schema, m_expected_host, m_expected_port, m_expected_path, m_expected_fragment, m_expected_error) \
|
||||
if (true) { \
|
||||
int port; \
|
||||
String url(m_url_to_parse), schema, host, path, fragment; \
|
||||
\
|
||||
CHECK_EQ(url.parse_url(schema, host, port, path, fragment), m_expected_error); \
|
||||
CHECK_EQ(schema, m_expected_schema); \
|
||||
CHECK_EQ(host, m_expected_host); \
|
||||
CHECK_EQ(path, m_expected_path); \
|
||||
CHECK_EQ(fragment, m_expected_fragment); \
|
||||
CHECK_EQ(port, m_expected_port); \
|
||||
} else \
|
||||
if (true) { \
|
||||
int port; \
|
||||
String url(m_url_to_parse), schema, host, path, fragment; \
|
||||
\
|
||||
CHECK_EQ(url.parse_url(schema, host, port, path, fragment), m_expected_error); \
|
||||
CHECK_EQ(schema, m_expected_schema); \
|
||||
CHECK_EQ(host, m_expected_host); \
|
||||
CHECK_EQ(path, m_expected_path); \
|
||||
CHECK_EQ(fragment, m_expected_fragment); \
|
||||
CHECK_EQ(port, m_expected_port); \
|
||||
} else \
|
||||
((void)0)
|
||||
|
||||
// All elements.
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@
|
|||
|
||||
namespace TestSplitContainer {
|
||||
|
||||
#define CHECK_RECTS(m_rects, m_child_rects) \
|
||||
CHECK(m_rects.size() == m_child_rects.size()); \
|
||||
for (int i = 0; i < (int)m_child_rects.size(); i++) { \
|
||||
#define CHECK_RECTS(m_rects, m_child_rects) \
|
||||
CHECK(m_rects.size() == m_child_rects.size()); \
|
||||
for (int i = 0; i < (int)m_child_rects.size(); i++) { \
|
||||
CHECK_MESSAGE(m_child_rects[i] == m_rects[i], vformat("Child %s is the wrong size. Child rect: %s, expected: %s.", i, m_child_rects[i], m_rects[i])); \
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,22 +65,22 @@
|
|||
// Stringify all `Variant` compatible types for doctest output by default.
|
||||
// https://github.com/onqtam/doctest/blob/master/doc/markdown/stringification.md
|
||||
|
||||
#define DOCTEST_STRINGIFY_VARIANT(m_type) \
|
||||
template <> \
|
||||
struct doctest::StringMaker<m_type> { \
|
||||
#define DOCTEST_STRINGIFY_VARIANT(m_type) \
|
||||
template <> \
|
||||
struct doctest::StringMaker<m_type> { \
|
||||
static doctest::String convert(const m_type &p_val) { \
|
||||
const Variant val = p_val; \
|
||||
const Variant val = p_val; \
|
||||
return val.operator ::String().utf8().get_data(); \
|
||||
} \
|
||||
} \
|
||||
};
|
||||
|
||||
#define DOCTEST_STRINGIFY_VARIANT_POINTER(m_type) \
|
||||
template <> \
|
||||
struct doctest::StringMaker<m_type> { \
|
||||
#define DOCTEST_STRINGIFY_VARIANT_POINTER(m_type) \
|
||||
template <> \
|
||||
struct doctest::StringMaker<m_type> { \
|
||||
static doctest::String convert(const m_type *p_val) { \
|
||||
const Variant val = p_val; \
|
||||
const Variant val = p_val; \
|
||||
return val.operator ::String().utf8().get_data(); \
|
||||
} \
|
||||
} \
|
||||
};
|
||||
|
||||
DOCTEST_STRINGIFY_VARIANT(Variant);
|
||||
|
|
@ -131,7 +131,7 @@ typedef void (*TestFunc)();
|
|||
extern HashMap<String, TestFunc> *test_commands;
|
||||
int register_test_command(String p_command, TestFunc p_function);
|
||||
|
||||
#define REGISTER_TEST_COMMAND(m_command, m_function) \
|
||||
#define REGISTER_TEST_COMMAND(m_command, m_function) \
|
||||
DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
|
||||
register_test_command(m_command, m_function))
|
||||
|
||||
|
|
@ -147,98 +147,98 @@ int register_test_command(String p_command, TestFunc p_function);
|
|||
|
||||
#define _SEND_DISPLAYSERVER_EVENT(m_event) ((DisplayServerMock *)(DisplayServer::get_singleton()))->simulate_event(m_event);
|
||||
|
||||
#define SEND_GUI_ACTION(m_action) \
|
||||
{ \
|
||||
#define SEND_GUI_ACTION(m_action) \
|
||||
{ \
|
||||
const List<Ref<InputEvent>> *events = InputMap::get_singleton()->action_get_events(m_action); \
|
||||
const List<Ref<InputEvent>>::Element *first_event = events->front(); \
|
||||
Ref<InputEventKey> event = first_event->get()->duplicate(); \
|
||||
event->set_pressed(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
const List<Ref<InputEvent>>::Element *first_event = events->front(); \
|
||||
Ref<InputEventKey> event = first_event->get()->duplicate(); \
|
||||
event->set_pressed(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
#define SEND_GUI_KEY_EVENT(m_input) \
|
||||
{ \
|
||||
#define SEND_GUI_KEY_EVENT(m_input) \
|
||||
{ \
|
||||
Ref<InputEventKey> event = InputEventKey::create_reference(m_input); \
|
||||
event->set_pressed(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
event->set_pressed(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
#define SEND_GUI_KEY_UP_EVENT(m_input) \
|
||||
{ \
|
||||
#define SEND_GUI_KEY_UP_EVENT(m_input) \
|
||||
{ \
|
||||
Ref<InputEventKey> event = InputEventKey::create_reference(m_input); \
|
||||
event->set_pressed(false); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
event->set_pressed(false); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
#define _UPDATE_EVENT_MODIFIERS(m_event, m_modifiers) \
|
||||
#define _UPDATE_EVENT_MODIFIERS(m_event, m_modifiers) \
|
||||
m_event->set_shift_pressed(((m_modifiers) & KeyModifierMask::SHIFT) != Key::NONE); \
|
||||
m_event->set_alt_pressed(((m_modifiers) & KeyModifierMask::ALT) != Key::NONE); \
|
||||
m_event->set_ctrl_pressed(((m_modifiers) & KeyModifierMask::CTRL) != Key::NONE); \
|
||||
m_event->set_alt_pressed(((m_modifiers) & KeyModifierMask::ALT) != Key::NONE); \
|
||||
m_event->set_ctrl_pressed(((m_modifiers) & KeyModifierMask::CTRL) != Key::NONE); \
|
||||
m_event->set_meta_pressed(((m_modifiers) & KeyModifierMask::META) != Key::NONE);
|
||||
|
||||
#define _CREATE_GUI_MOUSE_EVENT(m_screen_pos, m_input, m_mask, m_modifiers) \
|
||||
Ref<InputEventMouseButton> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_button_index(m_input); \
|
||||
event->set_button_mask(m_mask); \
|
||||
event->set_factor(1); \
|
||||
_UPDATE_EVENT_MODIFIERS(event, m_modifiers); \
|
||||
Ref<InputEventMouseButton> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_button_index(m_input); \
|
||||
event->set_button_mask(m_mask); \
|
||||
event->set_factor(1); \
|
||||
_UPDATE_EVENT_MODIFIERS(event, m_modifiers); \
|
||||
event->set_pressed(true);
|
||||
|
||||
#define _CREATE_GUI_TOUCH_EVENT(m_screen_pos, m_pressed, m_double) \
|
||||
Ref<InputEventScreenTouch> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_pressed(m_pressed); \
|
||||
Ref<InputEventScreenTouch> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_pressed(m_pressed); \
|
||||
event->set_double_tap(m_double);
|
||||
|
||||
#define SEND_GUI_MOUSE_BUTTON_EVENT(m_screen_pos, m_input, m_mask, m_modifiers) \
|
||||
{ \
|
||||
_CREATE_GUI_MOUSE_EVENT(m_screen_pos, m_input, m_mask, m_modifiers); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
{ \
|
||||
_CREATE_GUI_MOUSE_EVENT(m_screen_pos, m_input, m_mask, m_modifiers); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
#define SEND_GUI_MOUSE_BUTTON_RELEASED_EVENT(m_screen_pos, m_input, m_mask, m_modifiers) \
|
||||
{ \
|
||||
_CREATE_GUI_MOUSE_EVENT(m_screen_pos, m_input, m_mask, m_modifiers); \
|
||||
event->set_pressed(false); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
{ \
|
||||
_CREATE_GUI_MOUSE_EVENT(m_screen_pos, m_input, m_mask, m_modifiers); \
|
||||
event->set_pressed(false); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
#define SEND_GUI_DOUBLE_CLICK(m_screen_pos, m_modifiers) \
|
||||
{ \
|
||||
#define SEND_GUI_DOUBLE_CLICK(m_screen_pos, m_modifiers) \
|
||||
{ \
|
||||
_CREATE_GUI_MOUSE_EVENT(m_screen_pos, MouseButton::LEFT, MouseButtonMask::NONE, m_modifiers); \
|
||||
event->set_double_click(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
event->set_double_click(true); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
// We toggle _print_error_enabled to prevent display server not supported warnings.
|
||||
#define SEND_GUI_MOUSE_MOTION_EVENT(m_screen_pos, m_mask, m_modifiers) \
|
||||
{ \
|
||||
bool errors_enabled = CoreGlobals::print_error_enabled; \
|
||||
CoreGlobals::print_error_enabled = false; \
|
||||
Ref<InputEventMouseMotion> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_button_mask(m_mask); \
|
||||
_UPDATE_EVENT_MODIFIERS(event, m_modifiers); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
CoreGlobals::print_error_enabled = errors_enabled; \
|
||||
{ \
|
||||
bool errors_enabled = CoreGlobals::print_error_enabled; \
|
||||
CoreGlobals::print_error_enabled = false; \
|
||||
Ref<InputEventMouseMotion> event; \
|
||||
event.instantiate(); \
|
||||
event->set_position(m_screen_pos); \
|
||||
event->set_button_mask(m_mask); \
|
||||
_UPDATE_EVENT_MODIFIERS(event, m_modifiers); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
CoreGlobals::print_error_enabled = errors_enabled; \
|
||||
}
|
||||
|
||||
#define SEND_GUI_TOUCH_EVENT(m_screen_pos, m_pressed, m_double) \
|
||||
{ \
|
||||
#define SEND_GUI_TOUCH_EVENT(m_screen_pos, m_pressed, m_double) \
|
||||
{ \
|
||||
_CREATE_GUI_TOUCH_EVENT(m_screen_pos, m_pressed, m_double) \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
_SEND_DISPLAYSERVER_EVENT(event); \
|
||||
MessageQueue::get_singleton()->flush(); \
|
||||
}
|
||||
|
||||
// Utility class / macros for testing signals
|
||||
|
|
@ -406,68 +406,68 @@ public:
|
|||
#define SIGNAL_DISCARD(m_signal) SignalWatcher::get_singleton()->discard_signal(m_signal);
|
||||
|
||||
#define MULTICHECK_STRING_EQ(m_obj, m_func, m_param1, m_eq) \
|
||||
CHECK(m_obj.m_func(m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1) == m_eq); \
|
||||
CHECK(m_obj.m_func(String(m_param1)) == m_eq);
|
||||
|
||||
#define MULTICHECK_STRING_INT_EQ(m_obj, m_func, m_param1, m_param2, m_eq) \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(String(m_param1), m_param2) == m_eq);
|
||||
|
||||
#define MULTICHECK_STRING_INT_INT_EQ(m_obj, m_func, m_param1, m_param2, m_param3, m_eq) \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, m_param2, m_param3) == m_eq); \
|
||||
CHECK(m_obj.m_func(String(m_param1), m_param2, m_param3) == m_eq);
|
||||
|
||||
#define MULTICHECK_STRING_STRING_EQ(m_obj, m_func, m_param1, m_param2, m_eq) \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, U##m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, L##m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(m_param1, m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(U##m_param1, U##m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(L##m_param1, L##m_param2) == m_eq); \
|
||||
CHECK(m_obj.m_func(String(m_param1), String(m_param2)) == m_eq);
|
||||
|
||||
#define MULTICHECK_GET_SLICE(m_obj, m_param1, m_slices) \
|
||||
for (int i = 0; i < m_obj.get_slice_count(m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
for (int i = 0; i < m_obj.get_slice_count(U##m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(U##m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
for (int i = 0; i < m_obj.get_slice_count(L##m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(L##m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
#define MULTICHECK_GET_SLICE(m_obj, m_param1, m_slices) \
|
||||
for (int i = 0; i < m_obj.get_slice_count(m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
for (int i = 0; i < m_obj.get_slice_count(U##m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(U##m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
for (int i = 0; i < m_obj.get_slice_count(L##m_param1); ++i) { \
|
||||
CHECK(m_obj.get_slice(L##m_param1, i) == m_slices[i]); \
|
||||
} \
|
||||
for (int i = 0; i < m_obj.get_slice_count(String(m_param1)); ++i) { \
|
||||
CHECK(m_obj.get_slice(String(m_param1), i) == m_slices[i]); \
|
||||
CHECK(m_obj.get_slice(String(m_param1), i) == m_slices[i]); \
|
||||
}
|
||||
|
||||
#define MULTICHECK_SPLIT(m_obj, m_func, m_param1, m_param2, m_param3, m_slices, m_expected_size) \
|
||||
do { \
|
||||
Vector<String> string_list; \
|
||||
\
|
||||
string_list = m_obj.m_func(m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(U##m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(L##m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(String(m_param1), m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
do { \
|
||||
Vector<String> string_list; \
|
||||
\
|
||||
string_list = m_obj.m_func(m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(U##m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(L##m_param1, m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
\
|
||||
string_list = m_obj.m_func(String(m_param1), m_param2, m_param3); \
|
||||
CHECK(m_expected_size == string_list.size()); \
|
||||
for (int i = 0; i < string_list.size(); ++i) { \
|
||||
CHECK(string_list[i] == m_slices[i]); \
|
||||
} \
|
||||
} while (false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue