summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-11-23 14:17:40 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-11-25 15:57:36 -0800
commit54eff4b4c108598aa30f280de312e4cc88d72368 (patch)
treefd1958c69856e0dc77d480c61a490ec9f297d3d3 /test
parentf3d6f68106e60ac0d697202a8e32fa1466d38151 (diff)
downloadqtlocation-mapboxgl-54eff4b4c108598aa30f280de312e4cc88d72368.tar.gz
[core] Add image tests
Diffstat (limited to 'test')
-rw-r--r--test/fixtures/image/no_profile.pngbin0 -> 82 bytes
-rw-r--r--test/fixtures/image/no_profile_alpha.pngbin0 -> 82 bytes
-rw-r--r--test/fixtures/image/profile.pngbin0 -> 83 bytes
-rw-r--r--test/fixtures/image/profile_alpha.pngbin0 -> 83 bytes
-rw-r--r--test/fixtures/image/tile.jpegbin0 -> 24428 bytes
-rw-r--r--test/fixtures/image/tile.pngbin0 -> 49489 bytes
-rw-r--r--test/miscellaneous/image.cpp93
-rw-r--r--test/test.gypi1
8 files changed, 94 insertions, 0 deletions
diff --git a/test/fixtures/image/no_profile.png b/test/fixtures/image/no_profile.png
new file mode 100644
index 0000000000..f05b5f5fbd
--- /dev/null
+++ b/test/fixtures/image/no_profile.png
Binary files differ
diff --git a/test/fixtures/image/no_profile_alpha.png b/test/fixtures/image/no_profile_alpha.png
new file mode 100644
index 0000000000..1705b244b9
--- /dev/null
+++ b/test/fixtures/image/no_profile_alpha.png
Binary files differ
diff --git a/test/fixtures/image/profile.png b/test/fixtures/image/profile.png
new file mode 100644
index 0000000000..bcd6b8ca89
--- /dev/null
+++ b/test/fixtures/image/profile.png
Binary files differ
diff --git a/test/fixtures/image/profile_alpha.png b/test/fixtures/image/profile_alpha.png
new file mode 100644
index 0000000000..dfd40429ae
--- /dev/null
+++ b/test/fixtures/image/profile_alpha.png
Binary files differ
diff --git a/test/fixtures/image/tile.jpeg b/test/fixtures/image/tile.jpeg
new file mode 100644
index 0000000000..450f95ef44
--- /dev/null
+++ b/test/fixtures/image/tile.jpeg
Binary files differ
diff --git a/test/fixtures/image/tile.png b/test/fixtures/image/tile.png
new file mode 100644
index 0000000000..9623468af4
--- /dev/null
+++ b/test/fixtures/image/tile.png
Binary files differ
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',