OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |