diff options
Diffstat (limited to 'tests/image-bitmap.cpp')
-rw-r--r-- | tests/image-bitmap.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/image-bitmap.cpp b/tests/image-bitmap.cpp new file mode 100644 index 0000000000..59ab3f72be --- /dev/null +++ b/tests/image-bitmap.cpp @@ -0,0 +1,34 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Test.h" + +#include "SkBitmap.h" +#include "SkImage.h" + +// https://bug.skia.org/5096 +// Test that when we make an image from a subset of a bitmap, that it +// has a diff (ID, dimensions) from an image made from the entire +// bitmap or a different subset of the image. +DEF_TEST(ImageBitmapIdentity, r) { + SkBitmap bm, a, b; + bm.allocN32Pixels(32, 64); + bm.eraseColor(SK_ColorBLACK); + bm.setImmutable(); + (void)bm.extractSubset(&a, SkIRect::MakeXYWH(0, 0, 32, 32)); + (void)bm.extractSubset(&b, SkIRect::MakeXYWH(0, 32, 32, 32)); + REPORTER_ASSERT(r, a.getGenerationID() == b.getGenerationID()); + auto img = SkImage::MakeFromBitmap(bm); + auto imgA = SkImage::MakeFromBitmap(a); + auto imgB = SkImage::MakeFromBitmap(b); + REPORTER_ASSERT(r, img->uniqueID() == bm.getGenerationID()); + REPORTER_ASSERT(r, img->uniqueID() != imgA->uniqueID()); + REPORTER_ASSERT(r, img->uniqueID() != imgB->uniqueID()); + REPORTER_ASSERT(r, imgA->uniqueID() != imgB->uniqueID()); + REPORTER_ASSERT(r, imgA->uniqueID() != a.getGenerationID()); + REPORTER_ASSERT(r, imgB->uniqueID() != b.getGenerationID()); +} |