Chromium Code Reviews| Index: tests/SerializationTest.cpp |
| diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp |
| index 9e9b221cd287800c74dd8c19cde24c1273092610..8acfcc202ed5a7da8f9ddfd6fed54a209d799de7 100644 |
| --- a/tests/SerializationTest.cpp |
| +++ b/tests/SerializationTest.cpp |
| @@ -5,13 +5,14 @@ |
| * found in the LICENSE file. |
| */ |
| -#include "SkAnnotationKeys.h" |
| #include "Resources.h" |
| +#include "SkAnnotationKeys.h" |
| #include "SkCanvas.h" |
| #include "SkFixed.h" |
| #include "SkFontDescriptor.h" |
| #include "SkImage.h" |
| #include "SkImageSource.h" |
| +#include "SkLightingShader.h" |
| #include "SkMallocPixelRef.h" |
| #include "SkOSFile.h" |
| #include "SkPictureRecorder.h" |
| @@ -21,6 +22,7 @@ |
| #include "SkWriteBuffer.h" |
| #include "SkValidatingReadBuffer.h" |
| #include "SkXfermodeImageFilter.h" |
| +#include "sk_tool_utils.h" |
| #include "Test.h" |
| static const uint32_t kArraySize = 64; |
| @@ -182,8 +184,8 @@ static T* TestFlattenableSerialization(T* testObj, bool shouldSucceed, |
| size_t bytesWritten = writer.bytesWritten(); |
| REPORTER_ASSERT(reporter, SkAlign4(bytesWritten) == bytesWritten); |
| - unsigned char dataWritten[4096]; |
| - SkASSERT(bytesWritten <= sizeof(dataWritten)); |
| + // TODO Is this ok? or was the 4KB limit there for some technical reason? |
| + unsigned char dataWritten[bytesWritten]; |
| writer.writeToMemory(dataWritten); |
| // Make sure this fails when it should (test with smaller size, but still multiple of 4) |
| @@ -546,6 +548,43 @@ DEF_TEST(Serialization, reporter) { |
| } |
| TestPictureTypefaceSerialization(reporter); |
| + |
| + // Test SkLightingShader/NormalMapSource serialization |
|
dvonbeck
2016/06/10 18:31:22
FLATTENABLE: Testing serialization
|
| + { |
| + const int kTexSize = 128; |
| + |
| + SkLights::Builder builder; |
| + |
| + builder.add(SkLights::Light(SkColor3f::Make(1.0f, 1.0f, 1.0f), |
| + SkVector3::Make(1.0f, 0.0f, 0.0f))); |
| + builder.add(SkLights::Light(SkColor3f::Make(0.2f, 0.2f, 0.2f))); |
| + |
| + sk_sp<SkLights> fLights = builder.finish(); |
| + |
| + SkBitmap diffuse = sk_tool_utils::create_checkerboard_bitmap( |
| + kTexSize, kTexSize, |
| + sk_tool_utils::color_to_565(0x0), |
| + sk_tool_utils::color_to_565(0xFF804020), |
| + 8); |
| + |
| + SkRect bitmapBounds = SkRect::MakeIWH(diffuse.width(), diffuse.height()); |
| + |
| + SkMatrix matrix; |
| + SkRect r = SkRect::MakeWH(SkIntToScalar(kTexSize), SkIntToScalar(kTexSize)); |
| + matrix.setRectToRect(bitmapBounds, r, SkMatrix::kFill_ScaleToFit); |
| + |
| + SkVector invNormRotation = { SkScalarSqrt(0.3), SkScalarSqrt(0.7) }; |
| + SkBitmap normals; |
| + normals.allocN32Pixels(kTexSize, kTexSize); |
| + |
| + sk_tool_utils::create_frustum_normal_map(&normals, SkIRect::MakeWH(kTexSize, kTexSize)); |
| + sk_sp<SkShader> lightingShader = SkLightingShader::Make(diffuse, normals, fLights, |
| + invNormRotation, &matrix, &matrix); |
| + |
| + TestFlattenableSerialization(lightingShader.get(), true, reporter); |
| + // TODO test equality? |
| + |
| + } |
| } |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |