diff options
author | 2014-08-13 15:18:46 -0700 | |
---|---|---|
committer | 2014-08-13 15:18:46 -0700 | |
commit | c15e28a5224a3a0e977d6b2da44ce89302d01186 (patch) | |
tree | b2013497231194668d4813a62a03983b8f2ed725 /tests/AndroidPaintTest.cpp | |
parent | 6cfa73a29a26edf1d03bca224ad6860396308ffc (diff) |
Revert of Remove SkPaintOptionsAndroid (patchset #5 of https://codereview.chromium.org/447873003/)
Reason for revert:
Breaks the Chromium build: http://108.170.220.120:10117/builders/Canary-Chrome-Ubuntu13.10-Ninja-x86_64-DRT/builds/2469/steps/BuildContentShell_1/logs/stdio
Original issue's description:
> Remove SkPaintOptionsAndroid
>
> Committed: https://skia.googlesource.com/skia/+/f32331ffdb5de0440bb337aa7cbdd6f33e9ff23b
R=reed@google.com, mtklein@google.com, tomhudson@google.com, djsollen@google.com
TBR=djsollen@google.com, mtklein@google.com, reed@google.com, tomhudson@google.com
NOTREECHECKS=true
NOTRY=true
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/473543004
Diffstat (limited to 'tests/AndroidPaintTest.cpp')
-rw-r--r-- | tests/AndroidPaintTest.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/AndroidPaintTest.cpp b/tests/AndroidPaintTest.cpp new file mode 100644 index 0000000000..f5cf84f4f3 --- /dev/null +++ b/tests/AndroidPaintTest.cpp @@ -0,0 +1,75 @@ +// SkPaints only have an SkPaintOptionsAndroid if SK_BUILD_FOR_ANDROID is true. +#ifdef SK_BUILD_FOR_ANDROID + +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" +#include "SkPaint.h" +#include "SkPaintOptionsAndroid.h" +#include "Test.h" + +static size_t Reconstruct(const SkPaint& src, SkPaint* dst) { + SkWriteBuffer writer; + src.flatten(writer); + + const size_t size = writer.bytesWritten(); + SkAutoMalloc bytes(size); + writer.writeToMemory(bytes.get()); + + SkReadBuffer reader(bytes.get(), size); + dst->unflatten(reader); + + return size; +} + +DEF_TEST(AndroidOptionsSerialization, reporter) { + // We want to make sure that Android's paint options survive a flatten/unflatten round trip. + // These are all non-default options. + SkPaintOptionsAndroid options; + options.setLanguage("ja-JP"); + options.setFontVariant(SkPaintOptionsAndroid::kElegant_Variant); + + SkPaint paint; + paint.setPaintOptionsAndroid(options); + + SkPaint reconstructed; + Reconstruct(paint, &reconstructed); + + REPORTER_ASSERT(reporter, options == reconstructed.getPaintOptionsAndroid()); +} + +DEF_TEST(AndroidOptionsSerializationReverse, reporter) { + // Opposite test of above: make sure the serialized default values of a paint overwrite + // non-default values on the paint we're unflattening into. + const SkPaint defaultOptions; + + SkPaintOptionsAndroid options; + options.setLanguage("ja-JP"); + options.setFontVariant(SkPaintOptionsAndroid::kElegant_Variant); + SkPaint nonDefaultOptions; + nonDefaultOptions.setPaintOptionsAndroid(options); + + Reconstruct(defaultOptions, &nonDefaultOptions); + + REPORTER_ASSERT(reporter, + defaultOptions.getPaintOptionsAndroid() == + nonDefaultOptions.getPaintOptionsAndroid()); +} + +DEF_TEST(AndroidOptionsSize, reporter) { + // A paint with default android options should serialize to something smaller than + // a paint with non-default android options. + + SkPaint defaultOptions; + + SkPaintOptionsAndroid options; + options.setLanguage("ja-JP"); + SkPaint nonDefaultOptions; + nonDefaultOptions.setPaintOptionsAndroid(options); + + SkPaint dummy; + + REPORTER_ASSERT(reporter, + Reconstruct(defaultOptions, &dummy) < Reconstruct(nonDefaultOptions, &dummy)); +} + +#endif // SK_BUILD_FOR_ANDROID |