[core] add more detail to invalid metrics error in createSpriteImage

This commit is contained in:
Mike Morris
2016-11-01 11:47:53 -04:00
parent 6c30105a53
commit 39e9b30ebc
2 changed files with 96 additions and 7 deletions

View File

@@ -5,6 +5,7 @@
#include <mbgl/util/image.hpp>
#include <mbgl/util/rapidjson.hpp>
#include <mbgl/util/string.hpp>
#include <cmath>
#include <limits>
@@ -24,7 +25,10 @@ SpriteImagePtr createSpriteImage(const PremultipliedImage& image,
ratio <= 0 || ratio > 10 ||
srcX >= image.size.width || srcY >= image.size.height ||
srcX + width > image.size.width || srcY + height > image.size.height) {
Log::Error(Event::Sprite, "Can't create sprite with invalid metrics");
Log::Error(Event::Sprite, "Can't create sprite with invalid metrics: %ux%u@%u,%u in %ux%u@%sx sprite",
width, height, srcX, srcY,
image.size.width, image.size.height,
util::toString(ratio).c_str());
return nullptr;
}

View File

@@ -41,12 +41,97 @@ TEST(Sprite, SpriteImageCreationInvalid) {
ASSERT_EQ(nullptr, createSpriteImage(image_1x, 0, 0, image_1x.size.width + 1, 16, 1, false)); // right edge out of bounds
ASSERT_EQ(nullptr, createSpriteImage(image_1x, 0, 0, 16, image_1x.size.height + 1, 1, false)); // bottom edge out of bounds
EXPECT_EQ(13u, log.count({
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics",
"Can't create sprite with invalid metrics: 0x16@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x0@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 4294967295x16@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x4294967295@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 1x1@0,0 in 200x299@0x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 1x1@0,0 in 200x299@-1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 1x1@0,0 in 200x299@23x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 2048x16@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x1025@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x16@4294967295,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x16@0,4294967295 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 201x16@0,0 in 200x299@1x sprite",
}));
EXPECT_EQ(1u, log.count({
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics: 16x300@0,0 in 200x299@1x sprite",
}));
}
TEST(Sprite, SpriteImageCreation1x) {
@@ -228,7 +313,7 @@ TEST(Sprite, SpriteParsingEmptyImage) {
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics",
"Can't create sprite with invalid metrics: 0x0@0,0 in 200x299@1x sprite",
}));
}
@@ -261,7 +346,7 @@ TEST(Sprite, SpriteParsingWidthTooBig) {
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics",
"Can't create sprite with invalid metrics: 0x32@0,0 in 200x299@1x sprite",
}));
}
@@ -284,7 +369,7 @@ TEST(Sprite, SpriteParsingNegativeWidth) {
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics",
"Can't create sprite with invalid metrics: 0x32@0,0 in 200x299@1x sprite",
}));
}
@@ -301,6 +386,6 @@ TEST(Sprite, SpriteParsingNullRatio) {
EventSeverity::Error,
Event::Sprite,
int64_t(-1),
"Can't create sprite with invalid metrics",
"Can't create sprite with invalid metrics: 32x32@0,0 in 200x299@0x sprite",
}));
}