Chromium Code Reviews| Index: tests/SerializationTest.cpp |
| diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp |
| index 9e9b221cd287800c74dd8c19cde24c1273092610..bc696954d809f099990e620b376ecf8f182fadb6 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? |
|
dvonbeck
2016/06/09 18:51:29
I think it is OK for me to do this, since a previo
|
| + 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 |
| + { |
| + 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 = { sqrt(0.3), sqrt(0.7) }; |
|
dvonbeck
2016/06/09 18:51:29
I'm allowed to use ::sqrt(), right?
egdaniel
2016/06/10 14:23:28
Use SkScalarSqrt() instead
dvonbeck
2016/06/10 15:22:29
Done.
|
| + 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? |
|
dvonbeck
2016/06/09 18:51:29
I realized there aren't any tests for the correctn
|
| + |
| + } |
| } |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |