Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: tests/PathOpsOpTest.cpp

Issue 585913002: fail early if coincidence can't be resolved (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pathops/SkPathOpsCommon.cpp ('k') | tools/pathops_visualizer.htm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "PathOpsExtendedTest.h" 7 #include "PathOpsExtendedTest.h"
8 #include "PathOpsTestCommon.h" 8 #include "PathOpsTestCommon.h"
9 9
10 #define TEST(name) { name, #name } 10 #define TEST(name) { name, #name }
(...skipping 3493 matching lines...) Expand 10 before | Expand all | Expand 10 after
3504 path2.quadTo(400, 301.028259277f, 400, 290.87298584f); 3504 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3505 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f); 3505 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3506 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.3559875 49f); 3506 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.3559875 49f);
3507 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.5368652 34f); 3507 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.5368652 34f);
3508 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.8729858 4f); 3508 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.8729858 4f);
3509 path2.close(); 3509 path2.close();
3510 3510
3511 testPathOp(reporter, path1, path2, kUnion_PathOp, filename); 3511 testPathOp(reporter, path1, path2, kUnion_PathOp, filename);
3512 } 3512 }
3513 3513
3514 static void (*firstTest)(skiatest::Reporter* , const char* filename) = cubicOp95 u; 3514 static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
3515 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; 3515 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
3516 3516
3517 static struct TestDesc tests[] = { 3517 static struct TestDesc tests[] = {
3518 TEST(issue2753), // FIXME: pair of cubics miss intersection 3518 TEST(issue2753), // FIXME: pair of cubics miss intersection
3519 TEST(cubicOp114), // FIXME: curve with inflection is ordered the wrong way 3519 TEST(cubicOp114), // FIXME: curve with inflection is ordered the wrong way
3520 TEST(issue2808), 3520 TEST(issue2808),
3521 TEST(cubicOp114asQuad), 3521 TEST(cubicOp114asQuad),
3522 TEST(rects4), 3522 TEST(rects4),
3523 TEST(rects3), 3523 TEST(rects3),
3524 TEST(rects2), 3524 TEST(rects2),
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
3800 path2.lineTo(250, 230); 3800 path2.lineTo(250, 230);
3801 path2.lineTo(90, 120); 3801 path2.lineTo(90, 120);
3802 path2.lineTo(290, 120); 3802 path2.lineTo(290, 120);
3803 path2.lineTo(120, 1.1e+10f); 3803 path2.lineTo(120, 1.1e+10f);
3804 path2.lineTo(190, 60); 3804 path2.lineTo(190, 60);
3805 path2.close(); 3805 path2.close();
3806 3806
3807 testPathFailOp(reporter, path1, path2, kUnion_PathOp, filename); 3807 testPathFailOp(reporter, path1, path2, kUnion_PathOp, filename);
3808 } 3808 }
3809 3809
3810 static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
3811 SkPath path;
3812 path.setFillType((SkPath::FillType) 0);
3813 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3814 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
3815 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333));
3816 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
3817 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff));
3818 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
3819 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
3820 path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x 4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42 ab0000));
3821 path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
3822 path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x 41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42 c00000));
3823 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
3824 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
3825 path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x 4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43 400000));
3826 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3827 path.close();
3828
3829 SkPath path1(path);
3830 path.reset();
3831 path.setFillType((SkPath::FillType) 0);
3832 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3833 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
3834 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x 43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x42 73999a));
3835 path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
3836 path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x 42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41 a4cccd));
3837 path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
3838 path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x 428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x42 97999a));
3839 path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
3840 path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x 41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42 c00000));
3841 path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
3842 path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x 42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x43 03199a));
3843 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334));
3844 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
3845 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
3846 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
3847 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
3848 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000));
3849 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3850 path.close();
3851
3852 SkPath path2(path);
3853 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename);
3854 }
3855
3856 static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
3857 SkPath path;
3858 path.setFillType((SkPath::FillType) 0);
3859 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3860 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
3861 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333));
3862 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
3863 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff));
3864 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
3865 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
3866 path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x 4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42 ab0000));
3867 path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
3868 path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x 41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42 c00000));
3869 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
3870 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
3871 path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x 4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43 400000));
3872 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3873 path.close();
3874
3875 SkPath path1(path);
3876 path.reset();
3877 path.setFillType((SkPath::FillType) 0);
3878 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3879 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
3880 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x 43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x42 73999a));
3881 path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
3882 path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x 42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41 a4cccd));
3883 path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
3884 path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x 428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x42 97999a));
3885 path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
3886 path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x 41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42 c00000));
3887 path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
3888 path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x 42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x43 03199a));
3889 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334));
3890 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
3891 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
3892 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
3893 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
3894 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000));
3895 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
3896 path.close();
3897
3898 SkPath path2(path);
3899 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename);
3900 }
3901
3810 static struct TestDesc failTests[] = { 3902 static struct TestDesc failTests[] = {
3903 TEST(fuzz487a),
3904 TEST(fuzz487b),
3811 TEST(fuzz433b), 3905 TEST(fuzz433b),
3812 TEST(fuzz433), 3906 TEST(fuzz433),
3813 TEST(bufferOverflow), 3907 TEST(bufferOverflow),
3814 }; 3908 };
3815 3909
3816 static const size_t failTestCount = SK_ARRAY_COUNT(failTests); 3910 static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
3817 3911
3818 DEF_TEST(PathOpsFailOp, reporter) { 3912 DEF_TEST(PathOpsFailOp, reporter) {
3819 #if DEBUG_SHOW_TEST_NAME 3913 #if DEBUG_SHOW_TEST_NAME
3820 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); 3914 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
3821 #endif 3915 #endif
3822 RunTestSet(reporter, failTests, failTestCount, 0, 0, false); 3916 RunTestSet(reporter, failTests, failTestCount, 0, 0, false);
3823 } 3917 }
OLDNEW
« no previous file with comments | « src/pathops/SkPathOpsCommon.cpp ('k') | tools/pathops_visualizer.htm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698