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/templates/test_local_vector.h24
-rw-r--r--tests/core/templates/test_vector.h34
-rw-r--r--tests/core/variant/test_array.h10
4 files changed, 81 insertions, 37 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/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_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);