16 #define GETTEXT_DOMAIN "wesnoth-test"
18 #include <boost/test/unit_test.hpp>
31 using namespace image;
35 class environment_setup
41 , output_redirect_(ignored_stream_)
53 void set_up_color_info()
57 create_color_range(
"red",
58 "FF0000,FFFFFF,000000,FF0000",
61 create_color_range(
"blue",
62 "2E419B,FFFFFF,0F0F0F,0000FF",
73 void set_up_image_paths()
78 create_path_config(
"data/core"));
81 paths_manager_.set_paths(v);
84 static config create_color_range(
const std::string&
id,
85 const std::string& rgb,
86 const std::string& name)
97 static config create_path_config(
const std::string&
path)
106 std::stringstream ignored_stream_;
122 environment_setup env_setup;
128 queue.
push(low_priority_mod);
129 queue.
push(high_priority_mod);
131 BOOST_REQUIRE_EQUAL(queue.
size(), 2);
133 BOOST_CHECK_EQUAL(queue.
top(), high_priority_mod);
135 BOOST_CHECK_EQUAL(queue.
top(), low_priority_mod);
142 queue.
push(high_priority_mod);
143 queue.
push(low_priority_mod);
145 BOOST_REQUIRE_EQUAL(queue.
size(), 2);
147 BOOST_CHECK_EQUAL(queue.
top(), high_priority_mod);
149 BOOST_CHECK_EQUAL(queue.
top(), low_priority_mod);
156 environment_setup env_setup;
160 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
165 BOOST_REQUIRE(mod !=
nullptr);
172 BOOST_CHECK(expected == mod->
map());
178 environment_setup env_setup;
182 BOOST_REQUIRE_EQUAL(queue.
size(), 0);
188 environment_setup env_setup;
192 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
197 BOOST_REQUIRE(mod !=
nullptr);
203 BOOST_CHECK(expected == mod->
map());
209 environment_setup env_setup;
213 BOOST_REQUIRE_EQUAL(queue.
size(), 0);
219 environment_setup env_setup;
224 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
229 BOOST_REQUIRE(mod !=
nullptr);
235 for(std::size_t
i = 0;
i < old_palette.size() &&
i < new_palette.size(); ++
i) {
236 environment_setup env_setup;
238 expected[old_palette[
i]] = new_palette[
i];
241 BOOST_CHECK(expected == mod->
map());
247 environment_setup env_setup;
252 BOOST_REQUIRE_EQUAL(queue.
size(), 0);
258 environment_setup env_setup;
262 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
267 BOOST_REQUIRE(mod !=
nullptr);
276 environment_setup env_setup;
280 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
285 BOOST_REQUIRE(mod !=
nullptr);
294 environment_setup env_setup;
298 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
303 BOOST_REQUIRE(mod !=
nullptr);
312 environment_setup env_setup;
316 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
321 BOOST_REQUIRE(mod !=
nullptr);
330 environment_setup env_setup;
334 BOOST_REQUIRE(queue.
size() == 1);
339 BOOST_CHECK(mod !=
nullptr);
345 environment_setup env_setup;
349 BOOST_REQUIRE_EQUAL(queue.
size(), 0);
355 environment_setup env_setup;
359 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
364 BOOST_REQUIRE(mod !=
nullptr);
366 const SDL_Rect& slice = mod->
get_slice();
368 BOOST_CHECK_EQUAL(slice.x, 1);
369 BOOST_CHECK_EQUAL(slice.y, 0);
370 BOOST_CHECK_EQUAL(slice.w, 0);
371 BOOST_CHECK_EQUAL(slice.h, 0);
377 environment_setup env_setup;
381 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
386 BOOST_REQUIRE(mod !=
nullptr);
388 const SDL_Rect& slice = mod->
get_slice();
390 BOOST_CHECK_EQUAL(slice.x, 1);
391 BOOST_CHECK_EQUAL(slice.y, 2);
392 BOOST_CHECK_EQUAL(slice.w, 0);
393 BOOST_CHECK_EQUAL(slice.h, 0);
399 environment_setup env_setup;
403 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
408 BOOST_REQUIRE(mod !=
nullptr);
410 const SDL_Rect& slice = mod->
get_slice();
412 BOOST_CHECK_EQUAL(slice.x, 1);
413 BOOST_CHECK_EQUAL(slice.y, 2);
414 BOOST_CHECK_EQUAL(slice.w, 3);
415 BOOST_CHECK_EQUAL(slice.h, 0);
421 environment_setup env_setup;
425 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
430 BOOST_REQUIRE(mod !=
nullptr);
432 const SDL_Rect& slice = mod->
get_slice();
434 BOOST_CHECK_EQUAL(slice.x, 1);
435 BOOST_CHECK_EQUAL(slice.y, 2);
436 BOOST_CHECK_EQUAL(slice.w, 3);
437 BOOST_CHECK_EQUAL(slice.h, 4);
446 environment_setup env_setup;
450 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
455 BOOST_REQUIRE(mod !=
nullptr);
458 BOOST_CHECK_EQUAL(mod->
get_x(), 0);
459 BOOST_CHECK_EQUAL(mod->
get_y(), 0);
468 environment_setup env_setup;
472 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
476 BOOST_REQUIRE(mod !=
nullptr);
480 BOOST_CHECK_EQUAL(mod->
get_x(), 1);
481 BOOST_CHECK_EQUAL(mod->
get_y(), 2);
487 environment_setup env_setup;
491 "~BLIT(wesnoth-icon.png,1,-2)"
492 "~BLIT(wesnoth-icon.png,-1,2)"
493 "~BLIT(wesnoth-icon.png,-1,-2)"
494 "~BLIT(wesnoth-icon.png,1,2,3)");
496 BOOST_CHECK_EQUAL(queue.
size(), 3);
505 environment_setup env_setup;
509 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
514 BOOST_REQUIRE(mod !=
nullptr);
517 BOOST_CHECK_EQUAL(mod->
get_x(), 0);
518 BOOST_CHECK_EQUAL(mod->
get_y(), 0);
527 environment_setup env_setup;
531 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
536 BOOST_REQUIRE(mod !=
nullptr);
539 BOOST_CHECK_EQUAL(mod->
get_x(), 3);
540 BOOST_CHECK_EQUAL(mod->
get_y(), 4);
546 environment_setup env_setup;
550 "~MASK(wesnoth-icon.png,3,-4)"
551 "~MASK(wesnoth-icon.png,-3,4)"
552 "~MASK(wesnoth-icon.png,-3,-4)");
554 BOOST_CHECK_EQUAL(queue.
size(), 0);
560 environment_setup env_setup;
564 BOOST_CHECK_EQUAL(queue.
size(), 0);
573 environment_setup env_setup;
577 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
582 BOOST_REQUIRE(mod !=
nullptr);
590 environment_setup env_setup;
594 BOOST_CHECK_EQUAL(queue.
size(), 0);
600 environment_setup env_setup;
604 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
609 BOOST_REQUIRE(mod !=
nullptr);
611 BOOST_CHECK_EQUAL(mod->
get_w(), 3);
612 BOOST_CHECK_EQUAL(mod->
get_h(), 0);
618 environment_setup env_setup;
622 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
627 BOOST_REQUIRE(mod !=
nullptr);
629 BOOST_CHECK_EQUAL(mod->
get_w(), 4);
630 BOOST_CHECK_EQUAL(mod->
get_h(), 5);
636 environment_setup env_setup;
640 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
645 BOOST_REQUIRE(mod !=
nullptr);
654 environment_setup env_setup;
658 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
663 BOOST_REQUIRE(mod !=
nullptr);
672 environment_setup env_setup;
676 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
681 BOOST_REQUIRE(mod !=
nullptr);
689 environment_setup env_setup;
693 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
698 BOOST_REQUIRE(mod !=
nullptr);
706 environment_setup env_setup;
710 BOOST_REQUIRE_EQUAL(queue.
size(), 3);
712 for(
int i = 0;
i < 3;
i++) {
713 environment_setup env_setup;
718 BOOST_REQUIRE(mod !=
nullptr);
720 BOOST_CHECK_EQUAL(mod->
get_r(), 0);
721 BOOST_CHECK_EQUAL(mod->
get_g(), 0);
722 BOOST_CHECK_EQUAL(mod->
get_b(), 0);
731 environment_setup env_setup;
735 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
740 BOOST_REQUIRE(mod !=
nullptr);
742 BOOST_CHECK_EQUAL(mod->
get_r(), 123);
743 BOOST_CHECK_EQUAL(mod->
get_g(), 0);
744 BOOST_CHECK_EQUAL(mod->
get_b(), 0);
750 environment_setup env_setup;
754 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
759 BOOST_REQUIRE(mod !=
nullptr);
761 BOOST_CHECK_EQUAL(mod->
get_r(), 0);
762 BOOST_CHECK_EQUAL(mod->
get_g(), 132);
763 BOOST_CHECK_EQUAL(mod->
get_b(), 0);
769 environment_setup env_setup;
773 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
778 BOOST_REQUIRE(mod !=
nullptr);
780 BOOST_CHECK_EQUAL(mod->
get_r(), 0);
781 BOOST_CHECK_EQUAL(mod->
get_g(), 0);
782 BOOST_CHECK_EQUAL(mod->
get_b(), 312);
788 environment_setup env_setup;
792 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
797 BOOST_REQUIRE(mod !=
nullptr);
799 BOOST_CHECK_EQUAL(mod->
get_color().r, 0);
800 BOOST_CHECK_EQUAL(mod->
get_color().g, 0);
801 BOOST_CHECK_EQUAL(mod->
get_color().b, 0);
802 BOOST_CHECK_EQUAL(mod->
get_color().a, SDL_ALPHA_OPAQUE);
808 environment_setup env_setup;
812 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
817 BOOST_REQUIRE(mod !=
nullptr);
819 BOOST_CHECK_EQUAL(mod->
get_color().r, 1);
820 BOOST_CHECK_EQUAL(mod->
get_color().g, 0);
821 BOOST_CHECK_EQUAL(mod->
get_color().b, 0);
822 BOOST_CHECK_EQUAL(mod->
get_color().a, SDL_ALPHA_OPAQUE);
828 environment_setup env_setup;
832 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
837 BOOST_REQUIRE(mod !=
nullptr);
839 BOOST_CHECK_EQUAL(mod->
get_color().r, 1);
840 BOOST_CHECK_EQUAL(mod->
get_color().g, 2);
841 BOOST_CHECK_EQUAL(mod->
get_color().b, 0);
842 BOOST_CHECK_EQUAL(mod->
get_color().a, SDL_ALPHA_OPAQUE);
848 environment_setup env_setup;
852 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
857 BOOST_REQUIRE(mod !=
nullptr);
859 BOOST_CHECK_EQUAL(mod->
get_color().r, 1);
860 BOOST_CHECK_EQUAL(mod->
get_color().g, 2);
861 BOOST_CHECK_EQUAL(mod->
get_color().b, 3);
862 BOOST_CHECK_EQUAL(mod->
get_color().a, SDL_ALPHA_OPAQUE);
868 environment_setup env_setup;
872 BOOST_REQUIRE_EQUAL(queue.
size(), 1);
877 BOOST_REQUIRE(mod !=
nullptr);
879 BOOST_CHECK_EQUAL(mod->
get_color().r, 1);
880 BOOST_CHECK_EQUAL(mod->
get_color().g, 2);
881 BOOST_CHECK_EQUAL(mod->
get_color().b, 3);
882 BOOST_CHECK_EQUAL(mod->
get_color().a, 4);
885 BOOST_AUTO_TEST_SUITE_END()
A color range definition is made of four reference RGB colors, used for calculating conversions from ...
A config object defines a single node in a WML file, with access to child nodes.
config & add_child(config_key_type key)
A class grating read only view to a vector of config objects, viewed as one config with all children ...
static game_config_view wrap(const config &cfg)
Gaussian-like blur (BL) modification.
Scale (BLIT) modification.
const surface & get_surface() const
Crop (CROP) modification.
const SDL_Rect & get_slice() const
Color-shift (CS, R, G, B) modification.
Mirror (FL) modification.
Grayscale (GS) modification.
const surface & get_surface() const
Mask (MASK) modification.
const surface & get_mask() const
A modified priority queue used to order image modifications.
modification * top() const
Returns the top element in the queue .
void push(modification *mod)
Adds mod to the queue (unless mod is nullptr).
void pop()
Removes the top element from the queue.
std::size_t size() const
Returns the number of elements in the queue.
Base abstract class for an image-path modification.
static modification_queue decode(const std::string &)
Decodes modifications from a modification string.
Opacity (O) modification.
float get_opacity() const
Recolor (RC/TC/PAL) modification.
const color_range_map & map() const
Scaling modifications base class.
Helper class to redirect the output of the logger in a certain scope.
color_range_map recolor_range(const color_range &new_range, const std::vector< color_t > &old_rgb)
Converts a source palette using the specified color_range object.
std::unordered_map< color_t, color_t > color_range_map
Declarations for File-IO.
std::string id
Text to match against addon_info.tags()
Standard logging facilities (interface).
const std::vector< color_t > & tc_info(const std::string &name)
static void add_color_info(const game_config_view &v, bool build_defaults)
const color_range & color_info(const std::string &name)
Functions to load and save images from/to disk.
The paths manager is responsible for recording the various paths that binary files may be located at.
Fill background with a color (BG).
const color_t & get_color() const
BOOST_AUTO_TEST_SUITE(filesystem)
BOOST_AUTO_TEST_CASE(test_modificaiton_queue_order)
Tests if modifications with a higher priority are placed before the others.