15 #define GETTEXT_DOMAIN "wesnoth-test"
23 #include <boost/test/unit_test.hpp>
27 constexpr uint32_t alpha = 0x00'FF'FF'FF;
28 constexpr uint32_t red = 0xFF'FF'00'00;
29 constexpr uint32_t green = 0xFF'00'FF'00;
30 constexpr uint32_t blue = 0xFF'00'00'FF;
31 constexpr uint32_t yellow = 0xFF'FF'FF'00;
32 constexpr uint32_t white = 0xFF'FF'FF'FF;
33 constexpr uint32_t black = 0xFF'00'00'00;
35 constexpr std::array img_4x4 {
36 red, white, green, black,
37 black, black, black, black,
38 blue, white, yellow, black,
39 black, black, black, black,
42 constexpr std::array img_4x4_to_2x2_result {
47 constexpr std::array img_4x4_to_3x2_result {
52 constexpr std::array img_4x4_with_alpha {
53 alpha, alpha, alpha, alpha,
54 alpha, black, alpha, alpha,
55 alpha, alpha, black, black,
56 alpha, black, alpha, alpha,
59 constexpr std::array img_4x4_no_alpha {
60 black, black, black, black,
61 black, black, black, black,
62 black, black, black, black,
63 black, black, black, black,
66 template<std::
size_t w, std::
size_t h>
67 surface array_to_surface(
const std::array<uint32_t, w * h>& arr)
73 auto pixels = surf_lock.pixel_span();
74 for(std::size_t
i = 0;
i <
w *
h; ++
i) {
89 BOOST_CHECK_EQUAL(result,
nullptr);
96 BOOST_CHECK_EQUAL(result->w, 0);
97 BOOST_CHECK_EQUAL(result->h, 0);
102 surface src = array_to_surface<4, 4>(img_4x4);
105 auto result_pixels = lock.pixel_span();
106 BOOST_CHECK_EQUAL_COLLECTIONS(
107 result_pixels.begin(), result_pixels.end(), img_4x4_to_2x2_result.begin(), img_4x4_to_2x2_result.end());
112 surface src = array_to_surface<4, 4>(img_4x4);
115 auto result_pixels = lock.pixel_span();
116 BOOST_CHECK_EQUAL_COLLECTIONS(
117 result_pixels.begin(), result_pixels.end(), img_4x4_to_3x2_result.begin(), img_4x4_to_3x2_result.end());
122 surface src = array_to_surface<4, 4>(img_4x4_with_alpha);
124 auto opaque =
rect{1, 1, 3, 3};
125 BOOST_CHECK_EQUAL(result, opaque);
130 surface src = array_to_surface<4, 4>(img_4x4_no_alpha);
133 BOOST_CHECK_EQUAL(result, opaque);
136 BOOST_AUTO_TEST_SUITE_END()
Helper class for pinning SDL surfaces into memory.
Contains the SDL_Rect helper code.
rect src
Non-transparent portion of the surface to compose.
An abstract description of a rectangle with integer coordinates.
BOOST_AUTO_TEST_SUITE(filesystem)
BOOST_AUTO_TEST_CASE(test_scale_sharp_nullptr)
rect get_non_transparent_portion(const surface &surf)
surface scale_surface_sharp(const surface &surf, int w, int h)
Scale a surface using modified nearest neighbour algorithm.