mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 01:48:07 +02:00
[test/get-path-extents] Don't use short-circuit && operators
That causes some tests to be skipped if the preceding test failed.
This commit is contained in:
parent
be316b7cfa
commit
ecb54b9696
1 changed files with 62 additions and 81 deletions
|
|
@ -108,7 +108,7 @@ draw (cairo_t *cr, int width, int height)
|
|||
const char *phase;
|
||||
const char string[] = "The quick brown fox jumps over the lazy dog.";
|
||||
cairo_text_extents_t extents, scaled_font_extents;
|
||||
cairo_test_status_t ret = CAIRO_TEST_SUCCESS;
|
||||
int errors = 0;
|
||||
|
||||
surface = cairo_surface_create_similar (cairo_get_group_target (cr),
|
||||
CAIRO_CONTENT_COLOR, 100, 100);
|
||||
|
|
@ -122,10 +122,9 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_set_miter_limit (cr2, 100);
|
||||
|
||||
phase = "No path";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 0, 0, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 0, 0, 0, 0);
|
||||
|
||||
cairo_save (cr2);
|
||||
|
||||
|
|
@ -133,35 +132,31 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_move_to (cr2, 200, 400);
|
||||
cairo_rel_line_to (cr2, 0., 0.);
|
||||
phase = "Degenerate line";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
cairo_move_to (cr2, 200, 400);
|
||||
cairo_rel_curve_to (cr2, 0., 0., 0., 0., 0., 0.);
|
||||
phase = "Degenerate curve";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
cairo_arc (cr2, 200, 400, 0., 0, 2 * M_PI);
|
||||
phase = "Degenerate arc (R=0)";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
cairo_arc (cr2, 200, 400, 10., 0, 0);
|
||||
phase = "Degenerate arc (Θ=0)";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
|
@ -176,19 +171,17 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_move_to (cr2, 200, 400);
|
||||
cairo_rel_line_to (cr2, 0, 0);
|
||||
phase = "Single 'dot'";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 190, 390, 20, 20) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 190, 390, 20, 20);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0);
|
||||
|
||||
/* Add another dot without starting a new path */
|
||||
cairo_move_to (cr2, 100, 500);
|
||||
cairo_rel_line_to (cr2, 0, 0);
|
||||
phase = "Multiple 'dots'";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 90, 390, 120, 120) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 100, 400, 100, 100))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 90, 390, 120, 120);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 100, 400, 100, 100);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
|
||||
|
|
@ -201,20 +194,18 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND);
|
||||
cairo_move_to (cr2, 0, 180);
|
||||
cairo_line_to (cr2, 750, 180);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, -5, 175, 760, 10) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 0, 180, 755, 0))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, -5, 175, 760, 10);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 0, 180, 755, 0);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
phase = "Simple rect";
|
||||
cairo_save (cr2);
|
||||
cairo_rectangle (cr2, 10, 10, 80, 80);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -222,10 +213,9 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_save (cr2);
|
||||
cairo_rectangle (cr2, 10, 10, 10, 10);
|
||||
cairo_rectangle (cr2, 20, 20, 10, 10);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 20, 20) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 30, 30) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 20, 20))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 20, 20);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 30, 30);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 20, 20);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -237,10 +227,9 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_close_path (cr2);
|
||||
/* miter joins protrude 5*(1+sqrt(2)) above the top-left corner and to
|
||||
the right of the bottom-right corner */
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) ||
|
||||
!check_extents (phase, cr2, STROKE, CONTAINS, 0, 5, 95, 95) ||
|
||||
!check_extents (phase, cr2, PATH, CONTAINS, 10, 10, 80, 80))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80);
|
||||
errors += !check_extents (phase, cr2, STROKE, CONTAINS, 0, 5, 95, 95);
|
||||
errors += !check_extents (phase, cr2, PATH, CONTAINS, 10, 10, 80, 80);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -253,19 +242,17 @@ draw (cairo_t *cr, int width, int height)
|
|||
|
||||
cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD);
|
||||
phase = "EVEN_ODD overlapping rectangles";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30);
|
||||
|
||||
/* Test other fill rule with the same path. */
|
||||
|
||||
cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING);
|
||||
phase = "WINDING overlapping rectangles";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 30, 30) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 30, 30);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30);
|
||||
|
||||
/* Now, change the direction of the second rectangle and test both
|
||||
* fill rules again. */
|
||||
|
|
@ -275,19 +262,17 @@ draw (cairo_t *cr, int width, int height)
|
|||
|
||||
cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD);
|
||||
phase = "EVEN_ODD overlapping rectangles";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30);
|
||||
|
||||
/* Test other fill rule with the same path. */
|
||||
|
||||
cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING);
|
||||
phase = "WINDING overlapping rectangles";
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30);
|
||||
|
||||
cairo_new_path (cr2);
|
||||
|
||||
|
|
@ -298,8 +283,7 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_save (cr2);
|
||||
cairo_arc (cr2, 250.0, 250.0, 157.0, 5.147, 3.432);
|
||||
cairo_set_line_width (cr2, 154.0);
|
||||
if (!check_extents (phase, cr2, STROKE, APPROX_EQUALS, 16, 38, 468, 446))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, STROKE, APPROX_EQUALS, 16, 38, 468, 446);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -325,16 +309,15 @@ draw (cairo_t *cr, int width, int height)
|
|||
extents.y_bearing,
|
||||
extents.width,
|
||||
extents.height);
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors++;
|
||||
}
|
||||
|
||||
cairo_move_to (cr2, -extents.x_bearing, -extents.y_bearing);
|
||||
cairo_text_path (cr2, string);
|
||||
cairo_set_line_width (cr2, 2.0);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, extents.width, extents.height) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, -1, -1, extents.width+2, extents.height+2) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 0, 0, extents.width, extents.height))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, extents.width, extents.height);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, -1, -1, extents.width+2, extents.height+2);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 0, 0, extents.width, extents.height);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -342,10 +325,9 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_save (cr2);
|
||||
cairo_scale (cr2, 2, 2);
|
||||
cairo_rectangle (cr2, 5, 5, 40, 40);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 5, 5, 40, 40) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 50, 50) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 5, 5, 40, 40))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 5, 5, 40, 40);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 50, 50);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 5, 5, 40, 40);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -355,10 +337,9 @@ draw (cairo_t *cr, int width, int height)
|
|||
cairo_scale (cr2, 2, 2);
|
||||
cairo_rectangle (cr2, 5, 5, 40, 40);
|
||||
cairo_restore (cr2);
|
||||
if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) ||
|
||||
!check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90) ||
|
||||
!check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80);
|
||||
errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90);
|
||||
errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
|
|
@ -375,15 +356,15 @@ draw (cairo_t *cr, int width, int height)
|
|||
the axes. With the stroke width added to the rotated path,
|
||||
the largest axis-aligned square is a bit over 38 on either side of
|
||||
the axes. */
|
||||
if (!check_extents (phase, cr2, FILL, CONTAINS, -35, -35, 35, 35) ||
|
||||
!check_extents (phase, cr2, STROKE, CONTAINS, -38, -38, 38, 38) ||
|
||||
!check_extents (phase, cr2, PATH, CONTAINS, -35, -35, 35, 35))
|
||||
ret = CAIRO_TEST_FAILURE;
|
||||
errors += !check_extents (phase, cr2, FILL, CONTAINS, -35, -35, 35, 35);
|
||||
errors += !check_extents (phase, cr2, STROKE, CONTAINS, -38, -38, 38, 38);
|
||||
errors += !check_extents (phase, cr2, PATH, CONTAINS, -35, -35, 35, 35);
|
||||
cairo_new_path (cr2);
|
||||
cairo_restore (cr2);
|
||||
|
||||
cairo_destroy (cr2);
|
||||
return ret;
|
||||
|
||||
return errors == 0 ? CAIRO_TEST_SUCCESS : CAIRO_TEST_FAILURE;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue