diff options
author | Carl Worth <cworth@cworth.org> | 2007-03-15 21:58:20 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2007-03-15 22:09:32 -0700 |
commit | 23caa0f43ba199371ab178cf3e827e449ee5935f (patch) | |
tree | bb56e95eb4a62011b4fc3152cb80c1e1fcde5c10 /test | |
parent | 562bd551bc5ca3f3858a66b9884a8525531153c8 (diff) |
Add line-width-zero test which currently crashes.
The crash is described in this bug report:
Crash in cairo_stroke_extents whe line width is 0 and line cap is ROUND
(_cairo_pen_find_active_cw_vertex_index)
https://bugs.freedesktop.org/show_bug.cgi?id=10231
Diffstat (limited to 'test')
-rw-r--r-- | test/.gitignore | 1 | ||||
-rw-r--r-- | test/Makefile.am | 1 | ||||
-rw-r--r-- | test/line-width-zero.c | 79 |
3 files changed, 81 insertions, 0 deletions
diff --git a/test/.gitignore b/test/.gitignore index 6c4adfc57..a6d21da3d 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -70,6 +70,7 @@ leaky-dash leaky-polygon line-width line-width-scale +line-width-zero linear-gradient linear-gradient-reflect long-lines diff --git a/test/Makefile.am b/test/Makefile.am index 54928cf32..eb89b9d15 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -54,6 +54,7 @@ leaky-dash \ leaky-polygon \ line-width \ line-width-scale \ +line-width-zero \ linear-gradient \ linear-gradient-reflect \ long-lines \ diff --git a/test/line-width-zero.c b/test/line-width-zero.c new file mode 100644 index 000000000..139a47106 --- /dev/null +++ b/test/line-width-zero.c @@ -0,0 +1,79 @@ +/* + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Carl Worth <cworth@cworth.org> + */ + +#include "cairo-test.h" + +/* This is a test case for the following bug: + * + * Crash in cairo_stroke_extents whe line width is 0 and line cap is ROUND + * (_cairo_pen_find_active_cw_vertex_index) + * https://bugs.freedesktop.org/show_bug.cgi?id=10231 + */ + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "line-width-zero", + "Test all stroke operations and all cap,join styles with line width of zero", + 0, 0, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + double x1, y1, x2, y2; + + cairo_move_to (cr, 0.0, 0.0); + cairo_line_to (cr, 100.0, 100.0); + cairo_set_line_width (cr, 0.0); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); + cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); + cairo_in_stroke (cr, 50, 50); + cairo_stroke_preserve (cr); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); + cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); + cairo_in_stroke (cr, 50, 50); + cairo_stroke_preserve (cr); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); + cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); + cairo_in_stroke (cr, 50, 50); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} |