Index: tests/ImageDecodingTest.cpp |
diff --git a/tests/ImageDecodingTest.cpp b/tests/ImageDecodingTest.cpp |
index e9348fed991f5f4bf4e4a4c5f4851e519b90ffe2..86b96ae0f9327be1472c59b19109fc6c6a71f9e0 100644 |
--- a/tests/ImageDecodingTest.cpp |
+++ b/tests/ImageDecodingTest.cpp |
@@ -512,8 +512,8 @@ static SkPixelRef* install_pixel_ref(SkBitmap* bitmap, |
*/ |
DEF_TEST(ImprovedBitmapFactory, reporter) { |
SkString resourcePath = skiatest::Test::GetResourcePath(); |
- SkString directory = SkOSPath::SkPathJoin(resourcePath.c_str(), "encoding"); |
- SkString path = SkOSPath::SkPathJoin(directory.c_str(), "randPixels.png"); |
+ SkString path = SkOSPath::SkPathJoin( |
+ resourcePath.c_str(), "randPixels.png"); |
SkAutoTUnref<SkStreamRewindable> stream( |
SkStream::NewFromFile(path.c_str())); |
if (sk_exists(path.c_str())) { |
@@ -531,9 +531,10 @@ DEF_TEST(ImprovedBitmapFactory, reporter) { |
#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_UNIX) |
static inline bool check_rounding(int value, int dividend, int divisor) { |
- // returns true if (dividend/divisor) rounds up OR down to value |
+ // returns true if the value is greater than floor(dividend/divisor) |
+ // and less than SkNextPow2(ceil(dividend - divisor)) |
return (((divisor * value) > (dividend - divisor)) |
- && ((divisor * value) < (dividend + divisor))); |
+ && value <= SkNextPow2(((dividend - 1) / divisor) + 1)); |
} |
#endif // SK_BUILD_FOR_ANDROID || SK_BUILD_FOR_UNIX |
@@ -621,6 +622,11 @@ static void test_options(skiatest::Reporter* reporter, |
opts.fSampleSize)); |
REPORTER_ASSERT(reporter, check_rounding(bm.width(), kExpectedWidth, |
opts.fSampleSize)); |
+ // The ImageDecoder API doesn't guarantee that SampleSize does |
+ // anything at all, but the decoders that this test excercises all |
+ // produce an output size in the following range: |
+ // (((sample_size * out_size) > (in_size - sample_size)) |
+ // && out_size <= SkNextPow2(((in_size - 1) / sample_size) + 1)); |
#endif // SK_BUILD_FOR_ANDROID || SK_BUILD_FOR_UNIX |
SkAutoLockPixels alp(bm); |
if (bm.getPixels() == NULL) { |
@@ -682,8 +688,7 @@ DEF_TEST(ImageDecoderOptions, reporter) { |
}; |
SkString resourceDir = skiatest::Test::GetResourcePath(); |
- SkString directory = SkOSPath::SkPathJoin(resourceDir.c_str(), "encoding"); |
- if (!sk_exists(directory.c_str())) { |
+ if (!sk_exists(resourceDir.c_str())) { |
return; |
} |
@@ -700,7 +705,7 @@ DEF_TEST(ImageDecoderOptions, reporter) { |
const bool useDataList[] = {true, false}; |
for (size_t fidx = 0; fidx < SK_ARRAY_COUNT(files); ++fidx) { |
- SkString path = SkOSPath::SkPathJoin(directory.c_str(), files[fidx]); |
+ SkString path = SkOSPath::SkPathJoin(resourceDir.c_str(), files[fidx]); |
if (!sk_exists(path.c_str())) { |
continue; |
} |