diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-11-23 14:17:40 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-11-25 15:57:36 -0800 |
commit | 54eff4b4c108598aa30f280de312e4cc88d72368 (patch) | |
tree | fd1958c69856e0dc77d480c61a490ec9f297d3d3 | |
parent | f3d6f68106e60ac0d697202a8e32fa1466d38151 (diff) | |
download | qtlocation-mapboxgl-54eff4b4c108598aa30f280de312e4cc88d72368.tar.gz |
[core] Add image tests
-rw-r--r-- | test/fixtures/image/no_profile.png | bin | 0 -> 82 bytes | |||
-rw-r--r-- | test/fixtures/image/no_profile_alpha.png | bin | 0 -> 82 bytes | |||
-rw-r--r-- | test/fixtures/image/profile.png | bin | 0 -> 83 bytes | |||
-rw-r--r-- | test/fixtures/image/profile_alpha.png | bin | 0 -> 83 bytes | |||
-rw-r--r-- | test/fixtures/image/tile.jpeg | bin | 0 -> 24428 bytes | |||
-rw-r--r-- | test/fixtures/image/tile.png | bin | 0 -> 49489 bytes | |||
-rw-r--r-- | test/miscellaneous/image.cpp | 93 | ||||
-rw-r--r-- | test/test.gypi | 1 |
8 files changed, 94 insertions, 0 deletions
diff --git a/test/fixtures/image/no_profile.png b/test/fixtures/image/no_profile.png Binary files differnew file mode 100644 index 0000000000..f05b5f5fbd --- /dev/null +++ b/test/fixtures/image/no_profile.png diff --git a/test/fixtures/image/no_profile_alpha.png b/test/fixtures/image/no_profile_alpha.png Binary files differnew file mode 100644 index 0000000000..1705b244b9 --- /dev/null +++ b/test/fixtures/image/no_profile_alpha.png diff --git a/test/fixtures/image/profile.png b/test/fixtures/image/profile.png Binary files differnew file mode 100644 index 0000000000..bcd6b8ca89 --- /dev/null +++ b/test/fixtures/image/profile.png diff --git a/test/fixtures/image/profile_alpha.png b/test/fixtures/image/profile_alpha.png Binary files differnew file mode 100644 index 0000000000..dfd40429ae --- /dev/null +++ b/test/fixtures/image/profile_alpha.png diff --git a/test/fixtures/image/tile.jpeg b/test/fixtures/image/tile.jpeg Binary files differnew file mode 100644 index 0000000000..450f95ef44 --- /dev/null +++ b/test/fixtures/image/tile.jpeg diff --git a/test/fixtures/image/tile.png b/test/fixtures/image/tile.png Binary files differnew file mode 100644 index 0000000000..9623468af4 --- /dev/null +++ b/test/fixtures/image/tile.png diff --git a/test/miscellaneous/image.cpp b/test/miscellaneous/image.cpp new file mode 100644 index 0000000000..8a321583cb --- /dev/null +++ b/test/miscellaneous/image.cpp @@ -0,0 +1,93 @@ +#include "../fixtures/util.hpp" + +#include <mbgl/util/premultiply.hpp> +#include <mbgl/util/image.hpp> +#include <mbgl/util/io.hpp> + +using namespace mbgl; + +TEST(Image, PNGRoundTrip) { + UnassociatedImage rgba { 1, 1 }; + rgba.data[0] = 128; + rgba.data[1] = 0; + rgba.data[2] = 0; + rgba.data[3] = 255; + + PremultipliedImage image = decodeImage(encodePNG(rgba)); + EXPECT_EQ(128, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(255, image.data[3]); +} + +TEST(Image, PNGRoundTripAlpha) { + UnassociatedImage rgba { 1, 1 }; + rgba.data[0] = 128; + rgba.data[1] = 0; + rgba.data[2] = 0; + rgba.data[3] = 128; + + PremultipliedImage image = decodeImage(encodePNG(rgba)); + EXPECT_EQ(64, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(128, image.data[3]); +} + +TEST(Image, PNGReadNoProfile) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/no_profile.png")); + EXPECT_EQ(128, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(255, image.data[3]); +} + +TEST(Image, PNGReadNoProfileAlpha) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/no_profile_alpha.png")); + EXPECT_EQ(64, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(128, image.data[3]); +} + +TEST(Image, PNGReadProfile) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/profile.png")); + EXPECT_EQ(128, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(255, image.data[3]); +} + +TEST(Image, PNGReadProfileAlpha) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/profile_alpha.png")); + EXPECT_EQ(64, image.data[0]); + EXPECT_EQ(0, image.data[1]); + EXPECT_EQ(0, image.data[2]); + EXPECT_EQ(128, image.data[3]); +} + +TEST(Image, PNGTile) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/tile.png")); + EXPECT_EQ(256, image.width); + EXPECT_EQ(256, image.height); +} + +TEST(Image, JPEGTile) { + PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/tile.jpeg")); + EXPECT_EQ(256, image.width); + EXPECT_EQ(256, image.height); +} + +TEST(Image, Premultiply) { + UnassociatedImage rgba { 1, 1 }; + rgba.data[0] = 255; + rgba.data[1] = 254; + rgba.data[2] = 253; + rgba.data[3] = 128; + + PremultipliedImage image = util::premultiply(std::move(rgba)); + EXPECT_EQ(128, image.data[0]); + EXPECT_EQ(127, image.data[1]); + EXPECT_EQ(127, image.data[2]); + EXPECT_EQ(128, image.data[3]); +} diff --git a/test/test.gypi b/test/test.gypi index 583474a988..9530d5d498 100644 --- a/test/test.gypi +++ b/test/test.gypi @@ -52,6 +52,7 @@ 'miscellaneous/enums.cpp', 'miscellaneous/functions.cpp', 'miscellaneous/geo.cpp', + 'miscellaneous/image.cpp', 'miscellaneous/map.cpp', 'miscellaneous/map_context.cpp', 'miscellaneous/mapbox.cpp', |