summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/core/io/test_image.h50
-rw-r--r--tests/core/io/test_pck_packer.h29
-rw-r--r--tests/core/math/test_aabb.h21
-rw-r--r--tests/core/templates/test_local_vector.h24
-rw-r--r--tests/core/templates/test_oa_hash_map.cpp5
-rw-r--r--tests/core/templates/test_vector.h34
-rw-r--r--tests/core/variant/test_array.h10
-rw-r--r--tests/scene/test_code_edit.h112
-rw-r--r--tests/scene/test_curve.h26
-rw-r--r--tests/servers/test_physics_2d.cpp8
-rw-r--r--tests/servers/test_physics_3d.cpp4
-rw-r--r--tests/servers/test_shader_lang.cpp2
-rw-r--r--tests/test_macros.h4
13 files changed, 232 insertions, 97 deletions
diff --git a/tests/core/io/test_image.h b/tests/core/io/test_image.h
index c4c5f1e18b..643d2f31ec 100644
--- a/tests/core/io/test_image.h
+++ b/tests/core/io/test_image.h
@@ -52,6 +52,13 @@ TEST_CASE("[Image] Instantiation") {
"A newly created image should not be compressed.");
CHECK(!image->has_mipmaps());
+ PackedByteArray image_data = image->get_data();
+ for (int i = 0; i < image_data.size(); i++) {
+ CHECK_MESSAGE(
+ image_data[i] == 0,
+ "An image created without data specified should have its data zeroed out.");
+ }
+
Ref<Image> image_copy = memnew(Image());
CHECK_MESSAGE(
image_copy->is_empty(),
@@ -62,7 +69,7 @@ TEST_CASE("[Image] Instantiation") {
image->get_data() == image_copy->get_data(),
"Duplicated images should have the same data.");
- PackedByteArray image_data = image->get_data();
+ image_data = image->get_data();
Ref<Image> image_from_data = memnew(Image(8, 4, false, Image::FORMAT_RGBA8, image_data));
CHECK_MESSAGE(
image->get_data() == image_from_data->get_data(),
@@ -214,14 +221,51 @@ TEST_CASE("[Image] Modifying pixels of an image") {
// Fill image with color
image2->fill(Color(0.5, 0.5, 0.5, 0.5));
- for (int x = 0; x < image2->get_width(); x++) {
- for (int y = 0; y < image2->get_height(); y++) {
+ for (int y = 0; y < image2->get_height(); y++) {
+ for (int x = 0; x < image2->get_width(); x++) {
CHECK_MESSAGE(
image2->get_pixel(x, y).r > 0.49,
"fill() should colorize all pixels of the image.");
}
}
+ // Fill rect with color
+ {
+ const int img_width = 3;
+ const int img_height = 3;
+ Vector<Rect2> rects;
+ rects.push_back(Rect2());
+ rects.push_back(Rect2(-5, -5, 3, 3));
+ rects.push_back(Rect2(img_width, 0, 12, 12));
+ rects.push_back(Rect2(0, img_height, 12, 12));
+ rects.push_back(Rect2(img_width + 1, img_height + 2, 12, 12));
+ rects.push_back(Rect2(1, 1, 1, 1));
+ rects.push_back(Rect2(0, 1, 2, 3));
+ rects.push_back(Rect2(-5, 0, img_width + 10, 2));
+ rects.push_back(Rect2(0, -5, 2, img_height + 10));
+ rects.push_back(Rect2(-1, -1, img_width + 1, img_height + 1));
+
+ for (const Rect2 &rect : rects) {
+ Ref<Image> img = memnew(Image(img_width, img_height, false, Image::FORMAT_RGBA8));
+ CHECK_NOTHROW_MESSAGE(
+ img->fill_rect(rect, Color(1, 1, 1, 1)),
+ "fill_rect() shouldn't throw for any rect.");
+ for (int y = 0; y < img->get_height(); y++) {
+ for (int x = 0; x < img->get_width(); x++) {
+ if (rect.abs().has_point(Point2(x, y))) {
+ CHECK_MESSAGE(
+ img->get_pixel(x, y).is_equal_approx(Color(1, 1, 1, 1)),
+ "fill_rect() should colorize all image pixels within rect bounds.");
+ } else {
+ CHECK_MESSAGE(
+ !img->get_pixel(x, y).is_equal_approx(Color(1, 1, 1, 1)),
+ "fill_rect() shouldn't colorize any image pixel out of rect bounds.");
+ }
+ }
+ }
+ }
+ }
+
// Blend two images together
image->blend_rect(image2, Rect2(Vector2(0, 0), image2->get_size()), Vector2(0, 0));
CHECK_MESSAGE(
diff --git a/tests/core/io/test_pck_packer.h b/tests/core/io/test_pck_packer.h
index ae51d58522..75a4abffbe 100644
--- a/tests/core/io/test_pck_packer.h
+++ b/tests/core/io/test_pck_packer.h
@@ -40,17 +40,11 @@
namespace TestPCKPacker {
-// Dummy 64-character encryption key (since it's required).
-constexpr const char *ENCRYPTION_KEY = "0000000000000000000000000000000000000000000000000000000000000000";
-
TEST_CASE("[PCKPacker] Pack an empty PCK file") {
PCKPacker pck_packer;
const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_empty.pck");
CHECK_MESSAGE(
- pck_packer.pck_start(
- output_pck_path,
- 32,
- ENCRYPTION_KEY) == OK,
+ pck_packer.pck_start(output_pck_path) == OK,
"Starting a PCK file should return an OK error code.");
CHECK_MESSAGE(
@@ -70,14 +64,27 @@ TEST_CASE("[PCKPacker] Pack an empty PCK file") {
"The generated empty PCK file shouldn't be too large.");
}
+TEST_CASE("[PCKPacker] Pack empty with zero alignment invalid") {
+ PCKPacker pck_packer;
+ const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_empty.pck");
+ ERR_PRINT_OFF;
+ CHECK_MESSAGE(pck_packer.pck_start(output_pck_path, 0) != OK, "PCK with zero alignment should fail.");
+ ERR_PRINT_ON;
+}
+
+TEST_CASE("[PCKPacker] Pack empty with invalid key") {
+ PCKPacker pck_packer;
+ const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_empty.pck");
+ ERR_PRINT_OFF;
+ CHECK_MESSAGE(pck_packer.pck_start(output_pck_path, 32, "") != OK, "PCK with invalid key should fail.");
+ ERR_PRINT_ON;
+}
+
TEST_CASE("[PCKPacker] Pack a PCK file with some files and directories") {
PCKPacker pck_packer;
const String output_pck_path = OS::get_singleton()->get_cache_path().plus_file("output_with_files.pck");
CHECK_MESSAGE(
- pck_packer.pck_start(
- output_pck_path,
- 32,
- ENCRYPTION_KEY) == OK,
+ pck_packer.pck_start(output_pck_path) == OK,
"Starting a PCK file should return an OK error code.");
const String base_dir = OS::get_singleton()->get_executable_path().get_base_dir();
diff --git a/tests/core/math/test_aabb.h b/tests/core/math/test_aabb.h
index b838bed171..f5076ce1ed 100644
--- a/tests/core/math/test_aabb.h
+++ b/tests/core/math/test_aabb.h
@@ -349,14 +349,27 @@ TEST_CASE("[AABB] Has point") {
aabb.has_point(Vector3(2, 3, 0)),
"has_point() with contained point should return the expected value.");
CHECK_MESSAGE(
+ !aabb.has_point(Vector3(-20, 0, 0)),
+ "has_point() with non-contained point should return the expected value.");
+
+ CHECK_MESSAGE(
aabb.has_point(Vector3(-1.5, 3, 0)),
- "has_point() with contained point on negative edge should return the expected value.");
+ "has_point() with positive size should include point on near face (X axis).");
CHECK_MESSAGE(
aabb.has_point(Vector3(2.5, 3, 0)),
- "has_point() with contained point on positive edge should return the expected value.");
+ "has_point() with positive size should include point on far face (X axis).");
CHECK_MESSAGE(
- !aabb.has_point(Vector3(-20, 0, 0)),
- "has_point() with non-contained point should return the expected value.");
+ aabb.has_point(Vector3(0, 2, 0)),
+ "has_point() with positive size should include point on near face (Y axis).");
+ CHECK_MESSAGE(
+ aabb.has_point(Vector3(0, 7, 0)),
+ "has_point() with positive size should include point on far face (Y axis).");
+ CHECK_MESSAGE(
+ aabb.has_point(Vector3(0, 3, -2.5)),
+ "has_point() with positive size should include point on near face (Z axis).");
+ CHECK_MESSAGE(
+ aabb.has_point(Vector3(0, 3, 3.5)),
+ "has_point() with positive size should include point on far face (Z axis).");
}
TEST_CASE("[AABB] Expanding") {
diff --git a/tests/core/templates/test_local_vector.h b/tests/core/templates/test_local_vector.h
index eff2a16abc..67bcf515f9 100644
--- a/tests/core/templates/test_local_vector.h
+++ b/tests/core/templates/test_local_vector.h
@@ -84,25 +84,25 @@ TEST_CASE("[LocalVector] Remove.") {
vector.push_back(3);
vector.push_back(4);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector[0] == 1);
CHECK(vector[1] == 2);
CHECK(vector[2] == 3);
CHECK(vector[3] == 4);
- vector.remove(2);
+ vector.remove_at(2);
CHECK(vector[0] == 1);
CHECK(vector[1] == 2);
CHECK(vector[2] == 4);
- vector.remove(1);
+ vector.remove_at(1);
CHECK(vector[0] == 1);
CHECK(vector[1] == 4);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector[0] == 4);
}
@@ -117,7 +117,7 @@ TEST_CASE("[LocalVector] Remove Unordered.") {
CHECK(vector.size() == 5);
- vector.remove_unordered(0);
+ vector.remove_at_unordered(0);
CHECK(vector.size() == 4);
@@ -128,7 +128,7 @@ TEST_CASE("[LocalVector] Remove Unordered.") {
CHECK(vector.find(4) != -1);
// Now the vector is no more ordered.
- vector.remove_unordered(vector.find(3));
+ vector.remove_at_unordered(vector.find(3));
CHECK(vector.size() == 3);
@@ -137,7 +137,7 @@ TEST_CASE("[LocalVector] Remove Unordered.") {
CHECK(vector.find(2) != -1);
CHECK(vector.find(4) != -1);
- vector.remove_unordered(vector.find(2));
+ vector.remove_at_unordered(vector.find(2));
CHECK(vector.size() == 2);
@@ -145,7 +145,7 @@ TEST_CASE("[LocalVector] Remove Unordered.") {
CHECK(vector.find(1) != -1);
CHECK(vector.find(4) != -1);
- vector.remove_unordered(vector.find(4));
+ vector.remove_at_unordered(vector.find(4));
CHECK(vector.size() == 1);
@@ -153,7 +153,7 @@ TEST_CASE("[LocalVector] Remove Unordered.") {
CHECK(vector.find(1) != -1);
// Remove the last one.
- vector.remove_unordered(0);
+ vector.remove_at_unordered(0);
CHECK(vector.is_empty());
CHECK(vector.size() == 0);
@@ -193,9 +193,9 @@ TEST_CASE("[LocalVector] Size / Resize / Reserve.") {
// Capacity is supposed to change only when the size increase.
CHECK(vector.get_capacity() >= 10);
- vector.remove(0);
- vector.remove(0);
- vector.remove(0);
+ vector.remove_at(0);
+ vector.remove_at(0);
+ vector.remove_at(0);
CHECK(vector.size() == 2);
// Capacity is supposed to change only when the size increase.
diff --git a/tests/core/templates/test_oa_hash_map.cpp b/tests/core/templates/test_oa_hash_map.cpp
index 904c01642d..f7b2b7cdb0 100644
--- a/tests/core/templates/test_oa_hash_map.cpp
+++ b/tests/core/templates/test_oa_hash_map.cpp
@@ -55,7 +55,10 @@ struct CountedItem {
count++;
}
- CountedItem &operator=(const CountedItem &p_other) = default;
+ void operator=(const CountedItem &p_other) {
+ id = p_other.id;
+ count++;
+ }
~CountedItem() {
CRASH_COND(destroyed);
diff --git a/tests/core/templates/test_vector.h b/tests/core/templates/test_vector.h
index bfdf389aa7..658ca5adf1 100644
--- a/tests/core/templates/test_vector.h
+++ b/tests/core/templates/test_vector.h
@@ -129,7 +129,7 @@ TEST_CASE("[Vector] Fill large array and modify it") {
CHECK(vector[200] == 0);
CHECK(vector[499'999] == 0x60d07);
CHECK(vector[999'999] == 0x60d07);
- vector.remove(200);
+ vector.remove_at(200);
CHECK(vector[200] == 0x60d07);
vector.clear();
@@ -145,7 +145,7 @@ TEST_CASE("[Vector] Copy creation") {
vector.push_back(4);
Vector<int> vector_other = Vector<int>(vector);
- vector_other.remove(0);
+ vector_other.remove_at(0);
CHECK(vector_other[0] == 1);
CHECK(vector_other[1] == 2);
CHECK(vector_other[2] == 3);
@@ -168,7 +168,7 @@ TEST_CASE("[Vector] Duplicate") {
vector.push_back(4);
Vector<int> vector_other = vector.duplicate();
- vector_other.remove(0);
+ vector_other.remove_at(0);
CHECK(vector_other[0] == 1);
CHECK(vector_other[1] == 2);
CHECK(vector_other[2] == 3);
@@ -302,7 +302,7 @@ TEST_CASE("[Vector] Find, has") {
CHECK(!vector.has(5));
}
-TEST_CASE("[Vector] Remove") {
+TEST_CASE("[Vector] Remove at") {
Vector<int> vector;
vector.push_back(0);
vector.push_back(1);
@@ -310,30 +310,30 @@ TEST_CASE("[Vector] Remove") {
vector.push_back(3);
vector.push_back(4);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector[0] == 1);
CHECK(vector[1] == 2);
CHECK(vector[2] == 3);
CHECK(vector[3] == 4);
- vector.remove(2);
+ vector.remove_at(2);
CHECK(vector[0] == 1);
CHECK(vector[1] == 2);
CHECK(vector[2] == 4);
- vector.remove(1);
+ vector.remove_at(1);
CHECK(vector[0] == 1);
CHECK(vector[1] == 4);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector[0] == 4);
}
-TEST_CASE("[Vector] Remove and find") {
+TEST_CASE("[Vector] Remove at and find") {
Vector<int> vector;
vector.push_back(0);
vector.push_back(1);
@@ -343,7 +343,7 @@ TEST_CASE("[Vector] Remove and find") {
CHECK(vector.size() == 5);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector.size() == 4);
@@ -353,7 +353,7 @@ TEST_CASE("[Vector] Remove and find") {
CHECK(vector.find(3) != -1);
CHECK(vector.find(4) != -1);
- vector.remove(vector.find(3));
+ vector.remove_at(vector.find(3));
CHECK(vector.size() == 3);
@@ -362,7 +362,7 @@ TEST_CASE("[Vector] Remove and find") {
CHECK(vector.find(2) != -1);
CHECK(vector.find(4) != -1);
- vector.remove(vector.find(2));
+ vector.remove_at(vector.find(2));
CHECK(vector.size() == 2);
@@ -370,14 +370,14 @@ TEST_CASE("[Vector] Remove and find") {
CHECK(vector.find(1) != -1);
CHECK(vector.find(4) != -1);
- vector.remove(vector.find(4));
+ vector.remove_at(vector.find(4));
CHECK(vector.size() == 1);
CHECK(vector.find(4) == -1);
CHECK(vector.find(1) != -1);
- vector.remove(0);
+ vector.remove_at(0);
CHECK(vector.is_empty());
CHECK(vector.size() == 0);
@@ -412,9 +412,9 @@ TEST_CASE("[Vector] Size, resize, reserve") {
CHECK(vector.size() == 5);
- vector.remove(0);
- vector.remove(0);
- vector.remove(0);
+ vector.remove_at(0);
+ vector.remove_at(0);
+ vector.remove_at(0);
CHECK(vector.size() == 2);
diff --git a/tests/core/variant/test_array.h b/tests/core/variant/test_array.h
index 298bd2ff63..e2e84f2962 100644
--- a/tests/core/variant/test_array.h
+++ b/tests/core/variant/test_array.h
@@ -129,20 +129,20 @@ TEST_CASE("[Array] has() and count()") {
CHECK(arr.count(2) == 0);
}
-TEST_CASE("[Array] remove()") {
+TEST_CASE("[Array] remove_at()") {
Array arr;
arr.push_back(1);
arr.push_back(2);
- arr.remove(0);
+ arr.remove_at(0);
CHECK(arr.size() == 1);
CHECK(int(arr[0]) == 2);
- arr.remove(0);
+ arr.remove_at(0);
CHECK(arr.size() == 0);
- // The array is now empty; try to use `remove()` again.
+ // The array is now empty; try to use `remove_at()` again.
// Normally, this prints an error message so we silence it.
ERR_PRINT_OFF;
- arr.remove(0);
+ arr.remove_at(0);
ERR_PRINT_ON;
CHECK(arr.size() == 0);
diff --git a/tests/scene/test_code_edit.h b/tests/scene/test_code_edit.h
index 202ba8dca5..0467d4417b 100644
--- a/tests/scene/test_code_edit.h
+++ b/tests/scene/test_code_edit.h
@@ -2332,6 +2332,20 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
CHECK_FALSE(code_edit->is_line_folded(2));
CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
+ // Indent with blank lines.
+ code_edit->set_text("line1\n\tline2\n\n\nline3");
+ CHECK(code_edit->can_fold_line(0));
+ for (int i = 1; i < 2; i++) {
+ CHECK_FALSE(code_edit->can_fold_line(i));
+ code_edit->fold_line(i);
+ CHECK_FALSE(code_edit->is_line_folded(i));
+ }
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ CHECK_FALSE(code_edit->is_line_folded(2));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
+
// Nested indents.
code_edit->set_text("line1\n\tline2\n\t\tline3\nline4");
CHECK(code_edit->can_fold_line(0));
@@ -2408,7 +2422,7 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
for (int i = 1; i < code_edit->get_line_count(); i++) {
CHECK_FALSE(code_edit->is_line_folded(i));
}
- CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 6);
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 5);
// End of file.
code_edit->set_text("line1\n\tline2");
@@ -2490,7 +2504,7 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
// Multiline blocks.
code_edit->add_comment_delimiter("&", "&", false);
- code_edit->set_text("&line1\n\tline2&");
+ code_edit->set_text("&line1\n\tline2&\nline3");
CHECK(code_edit->can_fold_line(0));
CHECK_FALSE(code_edit->can_fold_line(1));
code_edit->fold_line(1);
@@ -2498,7 +2512,17 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
code_edit->fold_line(0);
CHECK(code_edit->is_line_folded(0));
CHECK_FALSE(code_edit->is_line_folded(1));
- CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 1);
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
+
+ // Multiline comment before last line.
+ code_edit->set_text("&line1\nline2&\ntest");
+ CHECK(code_edit->can_fold_line(0));
+ CHECK_FALSE(code_edit->can_fold_line(2));
+ code_edit->fold_line(1);
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
// Has to be full line.
code_edit->set_text("test &line1\n\tline2&");
@@ -2554,7 +2578,7 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
CHECK_FALSE(code_edit->is_line_folded(1));
CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 1);
- // Non-indented comments/ strings.
+ // Non-indented comments/strings.
// Single line
code_edit->set_text("test\n\tline1\n#line1\n#line2\n\ttest");
CHECK(code_edit->can_fold_line(0));
@@ -2576,6 +2600,50 @@ TEST_CASE("[SceneTree][CodeEdit] folding") {
CHECK_FALSE(code_edit->is_line_folded(1));
CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 4);
+ // Indent level 0->1, comment after lines
+ code_edit->set_text("line1\n\tline2\n#test");
+ CHECK(code_edit->can_fold_line(0));
+ CHECK_FALSE(code_edit->can_fold_line(1));
+ code_edit->fold_line(1);
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
+
+ // Indent level 0->1, comment between lines
+ code_edit->set_text("line1\n#test\n\tline2\nline3");
+ CHECK(code_edit->can_fold_line(0));
+ CHECK_FALSE(code_edit->can_fold_line(2));
+ code_edit->fold_line(2);
+ CHECK_FALSE(code_edit->is_line_folded(2));
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK_FALSE(code_edit->is_line_folded(2));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 3);
+
+ // Indent level 1->2, comment after lines
+ code_edit->set_text("\tline1\n\t\tline2\n#test");
+ CHECK(code_edit->can_fold_line(0));
+ CHECK_FALSE(code_edit->can_fold_line(1));
+ code_edit->fold_line(1);
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK_FALSE(code_edit->is_line_folded(1));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 2);
+
+ // Indent level 1->2, comment between lines
+ code_edit->set_text("\tline1\n#test\n\t\tline2\nline3");
+ CHECK(code_edit->can_fold_line(0));
+ CHECK_FALSE(code_edit->can_fold_line(2));
+ code_edit->fold_line(2);
+ CHECK_FALSE(code_edit->is_line_folded(2));
+ code_edit->fold_line(0);
+ CHECK(code_edit->is_line_folded(0));
+ CHECK_FALSE(code_edit->is_line_folded(2));
+ CHECK(code_edit->get_next_visible_line_offset_from(1, 1) == 3);
+
// Multiline
code_edit->set_text("test\n\tline1\n&line1\nline2&\n\ttest");
CHECK(code_edit->can_fold_line(0));
@@ -2673,18 +2741,18 @@ TEST_CASE("[SceneTree][CodeEdit] completion") {
/* Check typing inserts closing pair. */
code_edit->clear();
- SEND_GUI_KEY_EVENT(code_edit, KEY_BRACKETLEFT);
+ SEND_GUI_KEY_EVENT(code_edit, Key::BRACKETLEFT);
CHECK(code_edit->get_line(0) == "[]");
/* Should first match and insert smaller key. */
code_edit->clear();
- SEND_GUI_KEY_EVENT(code_edit, KEY_APOSTROPHE);
+ SEND_GUI_KEY_EVENT(code_edit, Key::APOSTROPHE);
CHECK(code_edit->get_line(0) == "''");
CHECK(code_edit->get_caret_column() == 1);
/* Move out from centre, Should match and insert larger key. */
SEND_GUI_ACTION(code_edit, "ui_text_caret_right");
- SEND_GUI_KEY_EVENT(code_edit, KEY_APOSTROPHE);
+ SEND_GUI_KEY_EVENT(code_edit, Key::APOSTROPHE);
CHECK(code_edit->get_line(0) == "''''''");
CHECK(code_edit->get_caret_column() == 3);
@@ -2693,30 +2761,30 @@ TEST_CASE("[SceneTree][CodeEdit] completion") {
CHECK(code_edit->get_line(0).is_empty());
/* If in between and typing close key should "skip". */
- SEND_GUI_KEY_EVENT(code_edit, KEY_BRACKETLEFT);
+ SEND_GUI_KEY_EVENT(code_edit, Key::BRACKETLEFT);
CHECK(code_edit->get_line(0) == "[]");
CHECK(code_edit->get_caret_column() == 1);
- SEND_GUI_KEY_EVENT(code_edit, KEY_BRACKETRIGHT);
+ SEND_GUI_KEY_EVENT(code_edit, Key::BRACKETRIGHT);
CHECK(code_edit->get_line(0) == "[]");
CHECK(code_edit->get_caret_column() == 2);
/* If current is char and inserting a string, do not autocomplete. */
code_edit->clear();
- SEND_GUI_KEY_EVENT(code_edit, KEY_A);
- SEND_GUI_KEY_EVENT(code_edit, KEY_APOSTROPHE);
+ SEND_GUI_KEY_EVENT(code_edit, Key::A);
+ SEND_GUI_KEY_EVENT(code_edit, Key::APOSTROPHE);
CHECK(code_edit->get_line(0) == "A'");
/* If in comment, do not complete. */
code_edit->add_comment_delimiter("#", "");
code_edit->clear();
- SEND_GUI_KEY_EVENT(code_edit, KEY_NUMBERSIGN);
- SEND_GUI_KEY_EVENT(code_edit, KEY_APOSTROPHE);
+ SEND_GUI_KEY_EVENT(code_edit, Key::NUMBERSIGN);
+ SEND_GUI_KEY_EVENT(code_edit, Key::APOSTROPHE);
CHECK(code_edit->get_line(0) == "#'");
/* If in string, and inserting string do not complete. */
code_edit->clear();
- SEND_GUI_KEY_EVENT(code_edit, KEY_APOSTROPHE);
- SEND_GUI_KEY_EVENT(code_edit, KEY_QUOTEDBL);
+ SEND_GUI_KEY_EVENT(code_edit, Key::APOSTROPHE);
+ SEND_GUI_KEY_EVENT(code_edit, Key::QUOTEDBL);
CHECK(code_edit->get_line(0) == "'\"'");
}
@@ -2862,7 +2930,7 @@ TEST_CASE("[SceneTree][CodeEdit] completion") {
SEND_GUI_ACTION(code_edit, "ui_down");
CHECK(code_edit->get_code_completion_selected_index() == 0);
- SEND_GUI_KEY_EVENT(code_edit, KEY_T);
+ SEND_GUI_KEY_EVENT(code_edit, Key::T);
CHECK(code_edit->get_code_completion_selected_index() == 0);
SEND_GUI_ACTION(code_edit, "ui_left");
@@ -2876,14 +2944,14 @@ TEST_CASE("[SceneTree][CodeEdit] completion") {
Point2 caret_pos = code_edit->get_caret_draw_pos();
caret_pos.y -= code_edit->get_line_height();
- SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MOUSE_BUTTON_WHEEL_DOWN, MOUSE_BUTTON_NONE);
+ SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MouseButton::WHEEL_DOWN, MouseButton::NONE);
CHECK(code_edit->get_code_completion_selected_index() == 1);
- SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MOUSE_BUTTON_WHEEL_UP, MOUSE_BUTTON_NONE);
+ SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MouseButton::WHEEL_UP, MouseButton::NONE);
CHECK(code_edit->get_code_completion_selected_index() == 0);
/* Single click selects. */
- SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MOUSE_BUTTON_LEFT, MOUSE_BUTTON_MASK_LEFT);
+ SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MouseButton::LEFT, MouseButton::MASK_LEFT);
CHECK(code_edit->get_code_completion_selected_index() == 2);
/* Double click inserts. */
@@ -3091,15 +3159,15 @@ TEST_CASE("[SceneTree][CodeEdit] symbol lookup") {
Point2 caret_pos = code_edit->get_caret_draw_pos();
caret_pos.x += 55;
- SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MOUSE_BUTTON_NONE, MOUSE_BUTTON_NONE);
+ SEND_GUI_MOUSE_EVENT(code_edit, caret_pos, MouseButton::NONE, MouseButton::NONE);
CHECK(code_edit->get_text_for_symbol_lookup() == "this is s" + String::chr(0xFFFF) + "ome text");
SIGNAL_WATCH(code_edit, "symbol_validate");
#ifdef OSX_ENABLED
- SEND_GUI_KEY_EVENT(code_edit, KEY_META);
+ SEND_GUI_KEY_EVENT(code_edit, Key::META);
#else
- SEND_GUI_KEY_EVENT(code_edit, KEY_CTRL);
+ SEND_GUI_KEY_EVENT(code_edit, Key::CTRL);
#endif
Array signal_args;
diff --git a/tests/scene/test_curve.h b/tests/scene/test_curve.h
index 60eafad460..4ee1a1c15c 100644
--- a/tests/scene/test_curve.h
+++ b/tests/scene/test_curve.h
@@ -219,35 +219,33 @@ TEST_CASE("[Curve] Custom curve with linear tangents") {
TEST_CASE("[Curve2D] Linear sampling should return exact value") {
Ref<Curve2D> curve = memnew(Curve2D);
- int len = 2048;
+ real_t len = 2048.0;
curve->add_point(Vector2(0, 0));
- curve->add_point(Vector2((float)len, 0));
+ curve->add_point(Vector2(len, 0));
- float baked_length = curve->get_baked_length();
- CHECK((float)len == baked_length);
+ real_t baked_length = curve->get_baked_length();
+ CHECK(len == baked_length);
for (int i = 0; i < len; i++) {
- float expected = (float)i;
- Vector2 pos = curve->interpolate_baked(expected);
- CHECK_MESSAGE(pos.x == expected, "interpolate_baked should return exact value");
+ Vector2 pos = curve->interpolate_baked(i);
+ CHECK_MESSAGE(pos.x == i, "interpolate_baked should return exact value");
}
}
TEST_CASE("[Curve3D] Linear sampling should return exact value") {
Ref<Curve3D> curve = memnew(Curve3D);
- int len = 2048;
+ real_t len = 2048.0;
curve->add_point(Vector3(0, 0, 0));
- curve->add_point(Vector3((float)len, 0, 0));
+ curve->add_point(Vector3(len, 0, 0));
- float baked_length = curve->get_baked_length();
- CHECK((float)len == baked_length);
+ real_t baked_length = curve->get_baked_length();
+ CHECK(len == baked_length);
for (int i = 0; i < len; i++) {
- float expected = (float)i;
- Vector3 pos = curve->interpolate_baked(expected);
- CHECK_MESSAGE(pos.x == expected, "interpolate_baked should return exact value");
+ Vector3 pos = curve->interpolate_baked(i);
+ CHECK_MESSAGE(pos.x == i, "interpolate_baked should return exact value");
}
}
diff --git a/tests/servers/test_physics_2d.cpp b/tests/servers/test_physics_2d.cpp
index b6360cde8a..06aa88b5c0 100644
--- a/tests/servers/test_physics_2d.cpp
+++ b/tests/servers/test_physics_2d.cpp
@@ -196,10 +196,10 @@ protected:
if (mb->is_pressed()) {
Point2 p = mb->get_position();
- if (mb->get_button_index() == 1) {
+ if (mb->get_button_index() == MouseButton::LEFT) {
ray_to = p;
_do_ray_query();
- } else if (mb->get_button_index() == 2) {
+ } else if (mb->get_button_index() == MouseButton::RIGHT) {
ray_from = p;
_do_ray_query();
}
@@ -211,10 +211,10 @@ protected:
if (mm.is_valid()) {
Point2 p = mm->get_position();
- if (mm->get_button_mask() & MOUSE_BUTTON_MASK_LEFT) {
+ if ((mm->get_button_mask() & MouseButton::MASK_LEFT) != MouseButton::NONE) {
ray_to = p;
_do_ray_query();
- } else if (mm->get_button_mask() & MOUSE_BUTTON_MASK_RIGHT) {
+ } else if ((mm->get_button_mask() & MouseButton::MASK_RIGHT) != MouseButton::NONE) {
ray_from = p;
_do_ray_query();
}
diff --git a/tests/servers/test_physics_3d.cpp b/tests/servers/test_physics_3d.cpp
index 4e483d628d..7cb74b1ee3 100644
--- a/tests/servers/test_physics_3d.cpp
+++ b/tests/servers/test_physics_3d.cpp
@@ -245,12 +245,12 @@ protected:
public:
virtual void input_event(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseMotion> mm = p_event;
- if (mm.is_valid() && mm->get_button_mask() & 4) {
+ if (mm.is_valid() && (mm->get_button_mask() & MouseButton::MASK_MIDDLE) != MouseButton::NONE) {
ofs_y -= mm->get_relative().y / 200.0;
ofs_x += mm->get_relative().x / 200.0;
}
- if (mm.is_valid() && mm->get_button_mask() & 1) {
+ if (mm.is_valid() && (mm->get_button_mask() & MouseButton::MASK_LEFT) != MouseButton::NONE) {
real_t y = -mm->get_relative().y / 20.0;
real_t x = mm->get_relative().x / 20.0;
diff --git a/tests/servers/test_shader_lang.cpp b/tests/servers/test_shader_lang.cpp
index 0591bf6adf..f4a32c6723 100644
--- a/tests/servers/test_shader_lang.cpp
+++ b/tests/servers/test_shader_lang.cpp
@@ -261,6 +261,8 @@ static String dump_node_code(SL::Node *p_node, int p_level) {
}
code += ")";
break;
+ case SL::OP_EMPTY:
+ break;
default: {
code = "(" + dump_node_code(onode->arguments[0], p_level) + _opstr(onode->op) + dump_node_code(onode->arguments[1], p_level) + ")";
break;
diff --git a/tests/test_macros.h b/tests/test_macros.h
index 0ec6eb9e7c..b04c2117b7 100644
--- a/tests/test_macros.h
+++ b/tests/test_macros.h
@@ -133,7 +133,7 @@ int register_test_command(String p_command, TestFunc p_function);
// Utility macros to send an event actions to a given object
// Requires Message Queue and InputMap to be setup.
// SEND_GUI_ACTION - takes an object and a input map key. e.g SEND_GUI_ACTION(code_edit, "ui_text_newline").
-// SEND_GUI_KEY_EVENT - takes an object and a keycode set. e.g SEND_GUI_KEY_EVENT(code_edit, KEY_A | KEY_MASK_CMD).
+// SEND_GUI_KEY_EVENT - takes an object and a keycode set. e.g SEND_GUI_KEY_EVENT(code_edit, Key::A | KeyModifierMask::CMD).
// SEND_GUI_MOUSE_EVENT - takes an object, position, mouse button and mouse mask e.g SEND_GUI_MOUSE_EVENT(code_edit, Vector2(50, 50), MOUSE_BUTTON_NONE, MOUSE_BUTTON_NONE);
// SEND_GUI_DOUBLE_CLICK - takes an object and a postion. e.g SEND_GUI_DOUBLE_CLICK(code_edit, Vector2(50, 50));
@@ -172,7 +172,7 @@ int register_test_command(String p_command, TestFunc p_function);
#define SEND_GUI_DOUBLE_CLICK(m_object, m_local_pos) \
{ \
- _CREATE_GUI_MOUSE_EVENT(m_object, m_local_pos, MOUSE_BUTTON_LEFT, MOUSE_BUTTON_LEFT); \
+ _CREATE_GUI_MOUSE_EVENT(m_object, m_local_pos, MouseButton::LEFT, MouseButton::LEFT); \
event->set_double_click(true); \
m_object->get_viewport()->push_input(event); \
MessageQueue::get_singleton()->flush(); \