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

Side by Side Diff: tests/PathOpsOpTest.cpp

Issue 2348263002: fix fuzzer bugs (Closed)
Patch Set: Created 4 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/SkOpCoincidence.cpp ('k') | no next file » | 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 class PathTest_Private { 10 class PathTest_Private {
(...skipping 7602 matching lines...) Expand 10 before | Expand all | Expand 10 after
7613 path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x 43747474), SkBits2Float(0xa52b0220), SkBits2Float(0x47812a43), SkBits2Float(0x28 2a3a21)); // 7.74708e+31f, 7.74708e+31f, 244.455f, -1.48326e-16f, 66132.5f, 9.4 495e-15f 7613 path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x 43747474), SkBits2Float(0xa52b0220), SkBits2Float(0x47812a43), SkBits2Float(0x28 2a3a21)); // 7.74708e+31f, 7.74708e+31f, 244.455f, -1.48326e-16f, 66132.5f, 9.4 495e-15f
7614 path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31 f, 7.74708e+31f 7614 path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31 f, 7.74708e+31f
7615 path.close(); 7615 path.close();
7616 path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31 f, 7.74708e+31f 7616 path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31 f, 7.74708e+31f
7617 path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x19433b1a), SkBits2Float(0x 5921e7fc), SkBits2Float(0x1f2a212a), SkBits2Float(0x35032108)); // 0.000679893f , 1.00932e-23f, 2.84828e+15f, 3.60263e-20f, 4.88494e-07f 7617 path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x19433b1a), SkBits2Float(0x 5921e7fc), SkBits2Float(0x1f2a212a), SkBits2Float(0x35032108)); // 0.000679893f , 1.00932e-23f, 2.84828e+15f, 3.60263e-20f, 4.88494e-07f
7618 7618
7619 SkPath path2(path); 7619 SkPath path2(path);
7620 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename); 7620 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7621 } 7621 }
7622 7622
7623 static void fuzz763_37(skiatest::Reporter* reporter, const char* filename) {
7624 SkPath path;
7625 path.setFillType((SkPath::FillType) 0);
7626 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2d3368)); // 1.59583e+13 f, 4.87517e+16f
7627 path.conicTo(SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x 21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6ab485c0)); // 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 1.09119e+26f
7628 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x 6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f , 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
7629 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24 f, -2.87489e+29f
7630 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x 682d2953), SkBits2Float(0xee682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f , 2.50349e-13f, 3.27093e+24f, -1.79601e+28f, 1.64988e+07f
7631 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16 f, 5.7784e-19f
7632 path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x 5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f , -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
7633 path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0x ed7ac039), SkBits2Float(0x2f218c08), SkBits2Float(0x1f037b2a)); // 4.73517e-37f , 1.65035e+07f, -4.85023e+27f, 1.46926e-10f, 2.78422e-20f
7634 path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24 f, -2.87489e+29f
7635 path.close();
7636 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24 f, -2.87489e+29f
7637 path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24 f, 1.21279e-11f
7638 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7639 path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x 0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 75739
7640 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7641 path.close();
7642 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7643 path.quadTo(SkBits2Float(0x28282a2a), SkBits2Float(0x2c682921), SkBits2Float(0x8 c555bf6), SkBits2Float(0x6d03de30)); // 9.33502e-15f, 3.2992e-12f, -1.64366e-31 f, 2.5507e+27f
7644 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x 8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x08 1f2a21)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-3 7f, 4.78968e-34f
7645 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7646 path.close();
7647 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7648 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0xdf93ed7a), SkBits2Float(0x 1a3a803a), SkBits2Float(0xb38a294f), SkBits2Float(0x3ac2213a)); // 6.14991e+25f , -2.13186e+19f, 3.85675e-23f, -6.43364e-08f, 0.00148109f
7649 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7650 path.close();
7651 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7652 path.conicTo(SkBits2Float(0xe62b291d), SkBits2Float(0x2a812a43), SkBits2Float(0x 8ced093a), SkBits2Float(0xb38a5c5c), SkBits2Float(0x3ac2213a)); // -2.02071e+23 f, 2.29443e-13f, -3.65212e-31f, -6.44293e-08f, 0.00148109f
7653 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7654 path.close();
7655 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24 f, -2.87614e+29f
7656 path.lineTo(SkBits2Float(0x8ced293a), SkBits2Float(0x5c5c5c5c)); // -3.65404e-3 1f, 2.48104e+17f
7657 path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19 f, 1.64987e+07f
7658 path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15 f, 4.8745e+16f
7659 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24 f, -2.87489e+29f
7660 path.lineTo(SkBits2Float(0x682d2952), SkBits2Float(0xee682103)); // 3.27093e+24 f, -1.79601e+28f
7661 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a3b0355)); // 4.85282e+16 f, 1.66101e-13f
7662 path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24 f, -2.87489e+29f
7663 path.close();
7664 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24 f, -2.87489e+29f
7665 path.conicTo(SkBits2Float(0x084b218c), SkBits2Float(0x6ac07b2a), SkBits2Float(0x 395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x1f2a8c55)); // 6.11275e-34f , 1.16348e+26f, 0.000209024f, 1.35296e+17f, 3.6115e-20f
7666
7667 SkPath path1(path);
7668 path.reset();
7669 path.setFillType((SkPath::FillType) 0);
7670 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7671 path.cubicTo(SkBits2Float(0xbcb4bcac), SkBits2Float(0x000029ff), SkBits2Float(0x 010000bc), SkBits2Float(0x00bcbc00), SkBits2Float(0xbebcbcbc), SkBits2Float(0xb6 aebcae)); // -0.0220626f, 1.50654e-41f, 2.35104e-38f, 1.73325e-38f, -0.368627f, -5.20757e-06f
7672
7673 SkPath path2(path);
7674 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7675 }
7676
7677 static void fuzz763_38(skiatest::Reporter* reporter, const char* filename) {
7678 SkPath path;
7679 path.setFillType((SkPath::FillType) 0);
7680 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7681 path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0x5b292d11), SkBits2Float(0x 212a8c55), SkBits2Float(0x555b2d2d), SkBits2Float(0x52525268)); // 6.53477e+16f , 4.76188e+16f, 5.7784e-19f, 1.50617e+13f, 2.25831e+11f
7682 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7683 path.close();
7684 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-1 6f, 3.88004e+11f
7685 path.close();
7686 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-1 6f, 3.88004e+11f
7687 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x2 ac05252), SkBits2Float(0x727fb721)); // 4.80216e+30f, 2.25832e+11f, 3.41632e-13 f, 5.06496e+30f
7688 path.lineTo(SkBits2Float(0x73727322), SkBits2Float(0x555b2d29)); // 1.92088e+31 f, 1.50617e+13f
7689 path.lineTo(SkBits2Float(0xab2a212e), SkBits2Float(0x7a27872a)); // -6.04422e-1 3f, 2.17464e+35f
7690 path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16 f, 1.99397e+36f
7691 path.quadTo(SkBits2Float(0x52524852), SkBits2Float(0x72525228), SkBits2Float(0x7 2727272), SkBits2Float(0x3a727272)); // 2.25789e+11f, 4.16584e+30f, 4.80216e+30 f, 0.000924862f
7692 path.lineTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16 f, 1.99397e+36f
7693 path.close();
7694 path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16 f, 1.99397e+36f
7695 path.quadTo(SkBits2Float(0x2a292827), SkBits2Float(0x962b0080), SkBits2Float(0x5 252752a), SkBits2Float(0x72725252)); // 1.50241e-13f, -1.38134e-25f, 2.25977e+1 1f, 4.79967e+30f
7696 path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x52525272), SkBits2Float(0x7 2525252), SkBits2Float(0x72727272)); // 4.79967e+30f, 2.25832e+11f, 4.16585e+30 f, 4.80216e+30f
7697 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda000072), SkBits2Float(0x5 2525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.00732e+15f, 2.25867e+1 1f, 2.25831e+11f
7698 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x7 2525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30 f, 4.80216e+30f
7699 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x5 2525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+1 1f, 2.25831e+11f
7700 path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x7 2525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+3 0f, 4.80214e+30f
7701 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc 003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1 .61006e+13f
7702 path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30 f, 1.05103e-38f
7703 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7704 path.close();
7705 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7706 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x3a727272), SkBits2Float(0x2 8273ac2), SkBits2Float(0x00802a29)); // 4.80216e+30f, 0.000924862f, 9.2831e-15f , 1.17701e-38f
7707 path.lineTo(SkBits2Float(0x52752a96), SkBits2Float(0x72525252)); // 2.63245e+11 f, 4.16585e+30f
7708 path.quadTo(SkBits2Float(0x72525272), SkBits2Float(0x52527272), SkBits2Float(0x5 2525252), SkBits2Float(0x72727272)); // 4.16586e+30f, 2.25966e+11f, 2.25831e+11 f, 4.80216e+30f
7709 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x5 25adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11 f, 2.25831e+11f
7710 path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7711 path.close();
7712 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7713 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x7 2525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30 f, 4.80216e+30f
7714 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x5 2525ada), SkBits2Float(0x72525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+1 1f, 4.16585e+30f
7715 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x72727252), SkBits2Float(0xd a007b72), SkBits2Float(0x52525ada)); // 4.80216e+30f, 4.80215e+30f, -9.04113e+1 5f, 2.25867e+11f
7716 path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7717 path.close();
7718 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16 f, 2.25831e+11f
7719 path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x7 2525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+3 0f, 4.80214e+30f
7720 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc 003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1 .61006e+13f
7721 path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30 f, 1.05103e-38f
7722 path.moveTo(SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 2.34994e+11 f, 2.25831e+11f
7723 path.close();
7724 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-1 6f, 3.88004e+11f
7725 path.close();
7726 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-1 6f, 3.88004e+11f
7727 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x7 2525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30 f, 4.80216e+30f
7728 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x5 2525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+1 1f, 2.25831e+11f
7729 path.quadTo(SkBits2Float(0x52525272), SkBits2Float(0x3b3b0052), SkBits2Float(0x5 b2d553a), SkBits2Float(0x68556829)); // 2.25832e+11f, 0.00285341f, 4.87889e+16f , 4.03114e+24f
7730
7731 SkPath path1(path);
7732 path.reset();
7733 path.setFillType((SkPath::FillType) 0);
7734 path.moveTo(SkBits2Float(0x52528c55), SkBits2Float(0x29215252)); // 2.26074e+11 f, 3.58206e-14f
7735
7736 SkPath path2(path);
7737 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
7738 }
7739
7623 static struct TestDesc failTests[] = { 7740 static struct TestDesc failTests[] = {
7741 TEST(fuzz763_38),
7742 TEST(fuzz763_37),
7624 TEST(fuzz763_36), 7743 TEST(fuzz763_36),
7625 TEST(fuzz763_35), 7744 TEST(fuzz763_35),
7626 TEST(fuzz763_34), 7745 TEST(fuzz763_34),
7627 TEST(fuzz763_33), 7746 TEST(fuzz763_33),
7628 TEST(fuzz763_32), 7747 TEST(fuzz763_32),
7629 TEST(fuzz763_31), 7748 TEST(fuzz763_31),
7630 TEST(fuzz763_30), 7749 TEST(fuzz763_30),
7631 TEST(fuzz763_29), 7750 TEST(fuzz763_29),
7632 TEST(fuzz763_28), 7751 TEST(fuzz763_28),
7633 TEST(fuzz763_27), 7752 TEST(fuzz763_27),
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
7690 static struct TestDesc repTests[] = { 7809 static struct TestDesc repTests[] = {
7691 TEST(loops44i), 7810 TEST(loops44i),
7692 TEST(loops45i), 7811 TEST(loops45i),
7693 TEST(loops46i), 7812 TEST(loops46i),
7694 }; 7813 };
7695 7814
7696 DEF_TEST(PathOpsRepOp, reporter) { 7815 DEF_TEST(PathOpsRepOp, reporter) {
7697 for (int index = 0; index < 2; ++index) 7816 for (int index = 0; index < 2; ++index)
7698 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, n ullptr, false); 7817 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, n ullptr, false);
7699 } 7818 }
OLDNEW
« no previous file with comments | « src/pathops/SkOpCoincidence.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698