From 7a918baccaa367c067aa8f6c0489081ebfa46e50 Mon Sep 17 00:00:00 2001 From: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 4 Feb 2021 19:38:41 +0200 Subject: [PATCH] Add a test suite for the Image class --- tests/data/images/icon.bmp | Bin 0 -> 262282 bytes tests/data/images/icon.jpg | Bin 0 -> 14866 bytes tests/data/images/icon.png | Bin 0 -> 29261 bytes tests/data/images/icon.tga | Bin 0 -> 262162 bytes tests/data/images/icon.webp | Bin 0 -> 4522 bytes tests/test_image.h | 259 ++++++++++++++++++++++++++++++++++++ tests/test_main.cpp | 1 + 7 files changed, 260 insertions(+) create mode 100644 tests/data/images/icon.bmp create mode 100644 tests/data/images/icon.jpg create mode 100644 tests/data/images/icon.png create mode 100644 tests/data/images/icon.tga create mode 100644 tests/data/images/icon.webp create mode 100644 tests/test_image.h diff --git a/tests/data/images/icon.bmp b/tests/data/images/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e006f7ebddcef7b782c20ec33c62762068fde880 GIT binary patch literal 262282 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 literal 0 HcmV?d00001 diff --git a/tests/data/images/icon.jpg b/tests/data/images/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b45bfa8d9b5c6605d5150a6948295f28f1a843b6 GIT binary patch literal 14866 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 hGZx^prw85k58JY5_^ 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 literal 0 HcmV?d00001 diff --git a/tests/data/images/icon.tga b/tests/data/images/icon.tga new file mode 100644 index 0000000000000000000000000000000000000000..dcacdc5c67577402f0315ee94b6545179cf5cc92 GIT binary patch literal 262162 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 a4S~@R7!85Z5Eu=C(GVC7fzc2k1pol>0EP_! literal 0 HcmV?d00001 diff --git a/tests/data/images/icon.webp b/tests/data/images/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c4707e85824517efb288abbc3b7a2b3312f0010 GIT binary patch literal 4522 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 bG~b(h?Bw&^ZP{<5-kpDG&m>&hzyJjRUTCE7 literal 0 HcmV?d00001 diff --git a/tests/test_image.h b/tests/test_image.h new file mode 100644 index 0000000000..d73717f5b7 --- /dev/null +++ b/tests/test_image.h @@ -0,0 +1,259 @@ +/*************************************************************************/ +/* test_image.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#ifndef TEST_IMAGE_H +#define TEST_IMAGE_H + +#include "core/io/file_access_pack.h" +#include "core/io/image.h" +#include "test_utils.h" + +#include "thirdparty/doctest/doctest.h" + +namespace TestImage { + +TEST_CASE("[Image] Instantiation") { + Ref image = memnew(Image(8, 4, false, Image::FORMAT_RGBA8)); + CHECK_MESSAGE( + !image->is_empty(), + "An image created with specified size and format should not be empty at first."); + CHECK_MESSAGE( + image->is_invisible(), + "A newly created image should be invisible."); + CHECK_MESSAGE( + !image->is_compressed(), + "A newly created image should not be compressed."); + CHECK(!image->has_mipmaps()); + + Ref image_copy = memnew(Image()); + CHECK_MESSAGE( + image_copy->is_empty(), + "An image created without any specified size and format be empty at first."); + image_copy->copy_internals_from(image); + + CHECK_MESSAGE( + image->get_data() == image_copy->get_data(), + "Duplicated images should have the same data."); + + PackedByteArray image_data = image->get_data(); + Ref image_from_data = memnew(Image(8, 4, false, Image::FORMAT_RGBA8, image_data)); + CHECK_MESSAGE( + image->get_data() == image_from_data->get_data(), + "An image created from data of another image should have the same data of the original image."); +} + +TEST_CASE("[Image] Saving and loading") { + Ref image = memnew(Image(4, 4, false, Image::FORMAT_RGBA8)); + const String save_path_png = OS::get_singleton()->get_cache_path().plus_file("image.png"); + const String save_path_exr = OS::get_singleton()->get_cache_path().plus_file("image.exr"); + + // Save PNG + Error err; + err = image->save_png(save_path_png); + CHECK_MESSAGE( + err == OK, + "The image should be saved successfully as a .png file."); + + // Save EXR + err = image->save_exr(save_path_exr, false); + CHECK_MESSAGE( + err == OK, + "The image should be saved successfully as an .exr file."); + + // Load using load() + Ref image_load = memnew(Image()); + err = image_load->load(save_path_png); + CHECK_MESSAGE( + err == OK, + "The image should load successfully using load()."); + CHECK_MESSAGE( + image->get_data() == image_load->get_data(), + "The loaded image should have the same data as the one that got saved."); + + // Load BMP + Ref image_bmp = memnew(Image()); + FileAccessRef f_bmp = FileAccess::open(TestUtils::get_data_path("images/icon.bmp"), FileAccess::READ, &err); + PackedByteArray data_bmp; + data_bmp.resize(f_bmp->get_len() + 1); + f_bmp->get_buffer(data_bmp.ptrw(), f_bmp->get_len()); + CHECK_MESSAGE( + image_bmp->load_bmp_from_buffer(data_bmp) == OK, + "The BMP image should load successfully."); + + // Load JPG + Ref image_jpg = memnew(Image()); + FileAccessRef f_jpg = FileAccess::open(TestUtils::get_data_path("images/icon.jpg"), FileAccess::READ, &err); + PackedByteArray data_jpg; + data_jpg.resize(f_jpg->get_len() + 1); + f_jpg->get_buffer(data_jpg.ptrw(), f_jpg->get_len()); + CHECK_MESSAGE( + image_jpg->load_jpg_from_buffer(data_jpg) == OK, + "The JPG image should load successfully."); + + // Load WEBP + Ref image_webp = memnew(Image()); + FileAccessRef f_webp = FileAccess::open(TestUtils::get_data_path("images/icon.webp"), FileAccess::READ, &err); + PackedByteArray data_webp; + data_webp.resize(f_webp->get_len() + 1); + f_webp->get_buffer(data_webp.ptrw(), f_webp->get_len()); + CHECK_MESSAGE( + image_webp->load_webp_from_buffer(data_webp) == OK, + "The WEBP image should load successfully."); + + // Load PNG + Ref image_png = memnew(Image()); + FileAccessRef f_png = FileAccess::open(TestUtils::get_data_path("images/icon.png"), FileAccess::READ, &err); + PackedByteArray data_png; + data_png.resize(f_png->get_len() + 1); + f_png->get_buffer(data_png.ptrw(), f_png->get_len()); + CHECK_MESSAGE( + image_png->load_png_from_buffer(data_png) == OK, + "The PNG image should load successfully."); + + // Load TGA + Ref image_tga = memnew(Image()); + FileAccessRef f_tga = FileAccess::open(TestUtils::get_data_path("images/icon.tga"), FileAccess::READ, &err); + PackedByteArray data_tga; + data_tga.resize(f_tga->get_len() + 1); + f_tga->get_buffer(data_tga.ptrw(), f_tga->get_len()); + CHECK_MESSAGE( + image_tga->load_tga_from_buffer(data_tga) == OK, + "The TGA image should load successfully."); +} + +TEST_CASE("[Image] Basic getters") { + Ref image = memnew(Image(8, 4, false, Image::FORMAT_LA8)); + CHECK(image->get_width() == 8); + CHECK(image->get_height() == 4); + CHECK(image->get_size() == Vector2(8, 4)); + CHECK(image->get_format() == Image::FORMAT_LA8); + CHECK(image->get_used_rect() == Rect2(0, 0, 0, 0)); + Ref image_get_rect = image->get_rect(Rect2(0, 0, 2, 1)); + CHECK(image_get_rect->get_size() == Vector2(2, 1)); +} + +TEST_CASE("[Image] Resizing") { + Ref image = memnew(Image(8, 8, false, Image::FORMAT_RGBA8)); + // Crop + image->crop(4, 4); + CHECK_MESSAGE( + image->get_size() == Vector2(4, 4), + "get_size() should return the correct size after cropping."); + image->set_pixel(0, 0, Color(1, 1, 1, 1)); + + // Resize + for (int i = 0; i < 5; i++) { + Ref image_resized = memnew(Image()); + image_resized->copy_internals_from(image); + Image::Interpolation interpolation = static_cast(i); + image_resized->resize(8, 8, interpolation); + CHECK_MESSAGE( + image_resized->get_size() == Vector2(8, 8), + "get_size() should return the correct size after resizing."); + CHECK_MESSAGE( + image_resized->get_pixel(1, 1).a > 0, + "Resizing an image should also affect its content."); + } + + // shrink_x2() + image->shrink_x2(); + CHECK_MESSAGE( + image->get_size() == Vector2(2, 2), + "get_size() should return the correct size after shrink_x2()."); + + // resize_to_po2() + Ref image_po_2 = memnew(Image(14, 28, false, Image::FORMAT_RGBA8)); + image_po_2->resize_to_po2(); + CHECK_MESSAGE( + image_po_2->get_size() == Vector2(16, 32), + "get_size() should return the correct size after resize_to_po2()."); +} + +TEST_CASE("[Image] Modifying pixels of an image") { + Ref image = memnew(Image(3, 3, false, Image::FORMAT_RGBA8)); + image->set_pixel(0, 0, Color(1, 1, 1, 1)); + CHECK_MESSAGE( + !image->is_invisible(), + "Image should not be invisible after drawing on it."); + CHECK_MESSAGE( + image->get_pixelv(Vector2(0, 0)).is_equal_approx(Color(1, 1, 1, 1)), + "Image's get_pixel() should return the same color value as the one being set with set_pixel() in the same position."); + CHECK_MESSAGE( + image->get_used_rect() == Rect2(0, 0, 1, 1), + "Image's get_used_rect should return the expected value, larger than Rect2(0, 0, 0, 0) if it's visible."); + + image->set_pixelv(Vector2(0, 0), Color(0.5, 0.5, 0.5, 0.5)); + Ref image2 = memnew(Image(3, 3, false, Image::FORMAT_RGBA8)); + + // 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++) { + CHECK_MESSAGE( + image2->get_pixel(x, y).r > 0.49, + "fill() should colorize all pixels of the image."); + } + } + + // Blend two images together + image->blend_rect(image2, Rect2(Vector2(0, 0), image2->get_size()), Vector2(0, 0)); + CHECK_MESSAGE( + image->get_pixel(0, 0).a > 0.7, + "blend_rect() should blend the alpha values of the two images."); + CHECK_MESSAGE( + image->get_used_rect().size == image->get_size(), + "get_used_rect() should return the expected value, its Rect size should be the same as get_size() if there are no transparent pixels."); + + Ref image3 = memnew(Image(2, 2, false, Image::FORMAT_RGBA8)); + image3->set_pixel(0, 0, Color(0, 1, 0, 1)); + + //blit_rect() two images together + image->blit_rect(image3, Rect2(Vector2(0, 0), image3->get_size()), Vector2(0, 0)); + CHECK_MESSAGE( + image->get_pixel(0, 0).is_equal_approx(Color(0, 1, 0, 1)), + "blit_rect() should replace old colors and not blend them."); + CHECK_MESSAGE( + !image->get_pixel(2, 2).is_equal_approx(Color(0, 1, 0, 1)), + "blit_rect() should not affect the area of the image that is outside src_rect."); + + // Flip image + image3->flip_x(); + CHECK(image3->get_pixel(1, 0).is_equal_approx(Color(0, 1, 0, 1))); + CHECK_MESSAGE( + image3->get_pixel(0, 0).is_equal_approx(Color(0, 0, 0, 0)), + "flip_x() should not leave old pixels behind."); + image3->flip_y(); + CHECK(image3->get_pixel(1, 1).is_equal_approx(Color(0, 1, 0, 1))); + CHECK_MESSAGE( + image3->get_pixel(1, 0).is_equal_approx(Color(0, 0, 0, 0)), + "flip_y() should not leave old pixels behind."); +} +} // namespace TestImage +#endif // TEST_IMAGE_H diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 5c635de25c..2697eb6399 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -46,6 +46,7 @@ #include "test_geometry_2d.h" #include "test_gradient.h" #include "test_gui.h" +#include "test_image.h" #include "test_json.h" #include "test_list.h" #include "test_local_vector.h"