Flatten resources directory
authorhalcanary@google.com <halcanary@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 9 May 2014 18:08:24 +0000 (18:08 +0000)
committerhalcanary@google.com <halcanary@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 9 May 2014 18:08:24 +0000 (18:08 +0000)
On android trybots, the files in a subdirectory weren't being
loaded onto the device.  Consequently, the ImageDecoderOptions
test was not testing anything. I had to relax that unit test
to reflect the existing behavior of our libjpeg decoder on
Android.

R=djsollen@google.com

Review URL: https://codereview.chromium.org/264583007

git-svn-id: http://skia.googlecode.com/svn/trunk@14682 2bbb7eff-a529-9590-31e7-b0007b416f81

resources/randPixels.bmp [moved from resources/encoding/randPixels.bmp with 100% similarity]
resources/randPixels.gif [moved from resources/encoding/randPixels.gif with 100% similarity]
resources/randPixels.jpg [moved from resources/encoding/randPixels.jpg with 100% similarity]
resources/randPixels.png [moved from resources/encoding/randPixels.png with 100% similarity]
resources/randPixels.webp [moved from resources/encoding/randPixels.webp with 100% similarity]
tests/ImageDecodingTest.cpp

index e9348fe..86b96ae 100644 (file)
@@ -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;
         }