From 54eff4b4c108598aa30f280de312e4cc88d72368 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 23 Nov 2015 14:17:40 -0800 Subject: [PATCH] [core] Add image tests --- test/fixtures/image/no_profile.png | Bin 0 -> 82 bytes test/fixtures/image/no_profile_alpha.png | Bin 0 -> 82 bytes test/fixtures/image/profile.png | Bin 0 -> 83 bytes test/fixtures/image/profile_alpha.png | Bin 0 -> 83 bytes test/fixtures/image/tile.jpeg | Bin 0 -> 24428 bytes test/fixtures/image/tile.png | Bin 0 -> 49489 bytes test/miscellaneous/image.cpp | 93 +++++++++++++++++++++++ test/test.gypi | 1 + 8 files changed, 94 insertions(+) create mode 100644 test/fixtures/image/no_profile.png create mode 100644 test/fixtures/image/no_profile_alpha.png create mode 100644 test/fixtures/image/profile.png create mode 100644 test/fixtures/image/profile_alpha.png create mode 100644 test/fixtures/image/tile.jpeg create mode 100644 test/fixtures/image/tile.png create mode 100644 test/miscellaneous/image.cpp diff --git a/test/fixtures/image/no_profile.png b/test/fixtures/image/no_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..f05b5f5fbdf60f02d0a39c7d8a04deb589f56166 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blCQlc~kP5~(QgxSrJZ=y#IU^zA a2R{Qd3uD8Y`WrWZ!VI3SelF{r5}E*Hd=hp5 literal 0 HcmV?d00001 diff --git a/test/fixtures/image/no_profile_alpha.png b/test/fixtures/image/no_profile_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..1705b244b9b5b7651f4911a7c2e50d8c5f9ccb0c GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blCQlc~kP5~(QgxSrJZ=y#IU^w< Z11QtV$XFn{GZZMy;OXk;vd$@?2>?X{5Rd=> literal 0 HcmV?d00001 diff --git a/test/fixtures/image/profile.png b/test/fixtures/image/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd6b8ca8939a43134ec6c74a4903948c95ccdfd GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaN1JzX3_IAoJE d5)yv!GcdC-Hh76nmj_BPc)I$ztaD0e0svP>5VQaQ literal 0 HcmV?d00001 diff --git a/test/fixtures/image/profile_alpha.png b/test/fixtures/image/profile_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd40429aeedf7add9ea0fa0b9ac082092ac725e GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaN1JzX3_IAoJE d5)v{P7?@fa8K>2Mn*@|#@O1TaS?83{1OQ+h5uN}5 literal 0 HcmV?d00001 diff --git a/test/fixtures/image/tile.jpeg b/test/fixtures/image/tile.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..450f95ef44d14a36e9f5336b38015a772ac8f301 GIT binary patch literal 24428 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%0ADg=lo;R<*MLtQ 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 OB|+)ij=gA1XaCuoP5x8> literal 0 HcmV?d00001 diff --git a/test/fixtures/image/tile.png b/test/fixtures/image/tile.png new file mode 100644 index 0000000000000000000000000000000000000000..9623468af46766c24019de536e9e46582ea3a3de GIT binary patch literal 49489 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 +#include +#include + +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 583474a98..9530d5d49 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',