summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2013-06-03 15:38:22 +0200
committerChris Wilson <chris@chris-wilson.co.uk>2013-09-05 16:08:20 +0100
commit690c61aa54c27e4d35b04d0173abd5931fce507d (patch)
tree5aa58df1ad8de6ee7af517ca07252a10d04b28a6
parent7ab34f302be72d9dda54d936b6d69bc7c534c885 (diff)
tests: Add device scale test to "full" testrun similar to offsets
-rw-r--r--test/cairo-test-private.h2
-rw-r--r--test/cairo-test-runner.c66
-rw-r--r--test/cairo-test.c66
3 files changed, 77 insertions, 57 deletions
diff --git a/test/cairo-test-private.h b/test/cairo-test-private.h
index 3e4032404..cfd22de4e 100644
--- a/test/cairo-test-private.h
+++ b/test/cairo-test-private.h
@@ -49,7 +49,7 @@ cairo_test_status_t
_cairo_test_context_run_for_target (cairo_test_context_t *ctx,
const cairo_boilerplate_target_t *target,
cairo_bool_t similar,
- int dev_offset);
+ int dev_offset, int dev_scale);
void
_cairo_test_context_init_for_test (cairo_test_context_t *ctx,
diff --git a/test/cairo-test-runner.c b/test/cairo-test-runner.c
index a5c67056a..71107f3c6 100644
--- a/test/cairo-test-runner.c
+++ b/test/cairo-test-runner.c
@@ -69,6 +69,7 @@ typedef struct _cairo_test_runner {
cairo_test_context_t base;
unsigned int num_device_offsets;
+ unsigned int num_device_scales;
cairo_bool_t passed;
int num_passed;
@@ -232,7 +233,7 @@ _cairo_test_runner_draw (cairo_test_runner_t *runner,
cairo_test_context_t *ctx,
const cairo_boilerplate_target_t *target,
cairo_bool_t similar,
- int device_offset)
+ int device_offset, int device_scale)
{
#if SHOULD_FORK
if (! runner->foreground) {
@@ -244,7 +245,7 @@ _cairo_test_runner_draw (cairo_test_runner_t *runner,
case 0: /* child */
exit (_cairo_test_context_run_for_target (ctx, target,
- similar, device_offset));
+ similar, device_offset, device_scale));
default:
return _cairo_test_wait (pid);
@@ -252,7 +253,7 @@ _cairo_test_runner_draw (cairo_test_runner_t *runner,
}
#endif
return _cairo_test_context_run_for_target (ctx, target,
- similar, device_offset);
+ similar, device_offset, device_scale);
}
static void
@@ -696,7 +697,7 @@ main (int argc, char **argv)
cairo_test_runner_t runner;
cairo_test_list_t *test_list;
cairo_test_status_t *target_status;
- unsigned int n, m;
+ unsigned int n, m, k;
char targets[4096];
int len;
char *cairo_tests_env;
@@ -712,6 +713,7 @@ main (int argc, char **argv)
memset (&runner, 0, sizeof (runner));
runner.num_device_offsets = 1;
+ runner.num_device_scales = 1;
if (is_running_under_debugger ())
runner.foreground = TRUE;
@@ -743,6 +745,7 @@ main (int argc, char **argv)
if (runner.full_test) {
runner.num_device_offsets = 2;
+ runner.num_device_scales = 2;
}
target_status = NULL; /* silence the compiler */
@@ -911,32 +914,35 @@ main (int argc, char **argv)
cairo_test_target_has_similar (&ctx, target) :
DIRECT;
for (m = 0; m < runner.num_device_offsets; m++) {
- int dev_offset = m * 25;
- cairo_test_similar_t similar;
-
- for (similar = DIRECT; similar <= has_similar; similar++) {
- status = _cairo_test_runner_draw (&runner, &ctx, target,
- similar, dev_offset);
- switch (status) {
- case CAIRO_TEST_SUCCESS:
- target_skipped = FALSE;
- break;
- case CAIRO_TEST_XFAILURE:
- target_xfailed = TRUE;
- break;
- case CAIRO_TEST_NEW:
- case CAIRO_TEST_FAILURE:
- target_failed = TRUE;
- break;
- case CAIRO_TEST_ERROR:
- target_error = TRUE;
- break;
- case CAIRO_TEST_NO_MEMORY:
- case CAIRO_TEST_CRASHED:
- target_crashed = TRUE;
- break;
- case CAIRO_TEST_UNTESTED:
- break;
+ for (k = 0; k < runner.num_device_scales; k++) {
+ int dev_offset = m * 25;
+ int dev_scale = k + 1;
+ cairo_test_similar_t similar;
+
+ for (similar = DIRECT; similar <= has_similar; similar++) {
+ status = _cairo_test_runner_draw (&runner, &ctx, target,
+ similar, dev_offset, dev_scale);
+ switch (status) {
+ case CAIRO_TEST_SUCCESS:
+ target_skipped = FALSE;
+ break;
+ case CAIRO_TEST_XFAILURE:
+ target_xfailed = TRUE;
+ break;
+ case CAIRO_TEST_NEW:
+ case CAIRO_TEST_FAILURE:
+ target_failed = TRUE;
+ break;
+ case CAIRO_TEST_ERROR:
+ target_error = TRUE;
+ break;
+ case CAIRO_TEST_NO_MEMORY:
+ case CAIRO_TEST_CRASHED:
+ target_crashed = TRUE;
+ break;
+ case CAIRO_TEST_UNTESTED:
+ break;
+ }
}
}
}
diff --git a/test/cairo-test.c b/test/cairo-test.c
index a3a587a20..7bcb0ba87 100644
--- a/test/cairo-test.c
+++ b/test/cairo-test.c
@@ -101,6 +101,7 @@ static cairo_bool_t print_fail_on_stdout;
static int cairo_test_timeout = 60;
#define NUM_DEVICE_OFFSETS 2
+#define NUM_DEVICE_SCALE 2
static cairo_bool_t
_cairo_test_mkdir (const char *path)
@@ -430,8 +431,8 @@ cairo_test_target_has_similar (const cairo_test_context_t *ctx,
target->content,
ctx->test->width,
ctx->test->height,
- ctx->test->width + 25 * NUM_DEVICE_OFFSETS,
- ctx->test->height + 25 * NUM_DEVICE_OFFSETS,
+ ctx->test->width* NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS,
+ ctx->test->height* NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS,
CAIRO_BOILERPLATE_MODE_TEST,
&closure);
if (surface == NULL)
@@ -628,6 +629,7 @@ static cairo_test_status_t
cairo_test_for_target (cairo_test_context_t *ctx,
const cairo_boilerplate_target_t *target,
int dev_offset,
+ int dev_scale,
cairo_bool_t similar)
{
cairo_test_status_t status;
@@ -635,6 +637,7 @@ cairo_test_for_target (cairo_test_context_t *ctx,
cairo_t *cr;
const char *empty_str = "";
char *offset_str;
+ char *scale_str;
char *base_name, *base_path;
char *out_png_path;
char *ref_path = NULL, *ref_png_path, *cmp_png_path = NULL;
@@ -666,15 +669,23 @@ cairo_test_for_target (cairo_test_context_t *ctx,
else
offset_str = (char *) empty_str;
- xasprintf (&base_name, "%s.%s.%s%s%s",
+ if (dev_scale != 1)
+ xasprintf (&scale_str, ".x%d", dev_scale);
+ else
+ scale_str = (char *) empty_str;
+
+ xasprintf (&base_name, "%s.%s.%s%s%s%s",
ctx->test_name,
target->name,
format,
similar ? ".similar" : "",
- offset_str);
+ offset_str,
+ scale_str);
if (offset_str != empty_str)
free (offset_str);
+ if (scale_str != empty_str)
+ free (scale_str);
ref_png_path = cairo_test_reference_filename (ctx,
base_name,
@@ -782,6 +793,8 @@ cairo_test_for_target (cairo_test_context_t *ctx,
width = ctx->test->width;
height = ctx->test->height;
if (width && height) {
+ width *= dev_scale;
+ height *= dev_scale;
width += dev_offset;
height += dev_offset;
}
@@ -810,8 +823,8 @@ REPEAT:
surface = (target->create_surface) (base_path,
target->content,
width, height,
- ctx->test->width + 25 * NUM_DEVICE_OFFSETS,
- ctx->test->height + 25 * NUM_DEVICE_OFFSETS,
+ ctx->test->width * NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS,
+ ctx->test->height * NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS,
CAIRO_BOILERPLATE_MODE_TEST,
&closure);
if (surface == NULL) {
@@ -878,6 +891,7 @@ REPEAT:
}
cairo_surface_set_device_offset (surface, dev_offset, dev_offset);
+ cairo_surface_set_device_scale (surface, dev_scale, dev_scale);
cr = cairo_create (surface);
if (cairo_set_user_data (cr, &_cairo_test_context_key, (void*) ctx, NULL)) {
@@ -1471,7 +1485,7 @@ cairo_test_status_t
_cairo_test_context_run_for_target (cairo_test_context_t *ctx,
const cairo_boilerplate_target_t *target,
cairo_bool_t similar,
- int dev_offset)
+ int dev_offset, int dev_scale)
{
cairo_test_status_t status;
@@ -1482,15 +1496,15 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
return CAIRO_TEST_UNTESTED;
cairo_test_log (ctx,
- "Testing %s with %s%s target (dev offset %d)\n",
+ "Testing %s with %s%s target (dev offset %d scale: %d)\n",
ctx->test_name,
similar ? " (similar) " : "",
target->name,
- dev_offset);
+ dev_offset, dev_scale);
- printf ("%s.%s.%s [%d]%s:\t", ctx->test_name, target->name,
+ printf ("%s.%s.%s [%dx%d]%s:\t", ctx->test_name, target->name,
cairo_boilerplate_content_name (target->content),
- dev_offset,
+ dev_offset, dev_scale,
similar ? " (similar)": "");
fflush (stdout);
@@ -1519,7 +1533,7 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
old_sigalrm_handler = signal (SIGALRM, segfault_handler);
#endif
if (0 == setjmp (jmpbuf))
- status = cairo_test_for_target (ctx, target, dev_offset, similar);
+ status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar);
else
status = CAIRO_TEST_CRASHED;
#ifdef SIGSEGV
@@ -1538,17 +1552,17 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
signal (SIGALRM, old_sigalrm_handler);
#endif
} else {
- status = cairo_test_for_target (ctx, target, dev_offset, similar);
+ status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar);
}
#else
- status = cairo_test_for_target (ctx, target, dev_offset, similar);
+ status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar);
#endif
cairo_test_log (ctx,
- "TEST: %s TARGET: %s FORMAT: %s OFFSET: %d SIMILAR: %d RESULT: ",
+ "TEST: %s TARGET: %s FORMAT: %s OFFSET: %d SCALE: %d SIMILAR: %d RESULT: ",
ctx->test_name, target->name,
cairo_boilerplate_content_name (target->content),
- dev_offset, similar);
+ dev_offset, dev_scale, similar);
switch (status) {
case CAIRO_TEST_SUCCESS:
printf ("PASS\n");
@@ -1570,9 +1584,9 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
fflush (stdout);
}
cairo_test_log (ctx, "CRASHED\n");
- fprintf (stderr, "%s.%s.%s [%d]%s:\t%s!!!CRASHED!!!%s\n",
+ fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%s!!!CRASHED!!!%s\n",
ctx->test_name, target->name,
- cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+ cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "",
fail_face, normal_face);
break;
@@ -1585,9 +1599,9 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
fflush (stdout);
}
cairo_test_log (ctx, "ERROR\n");
- fprintf (stderr, "%s.%s.%s [%d]%s:\t%s!!!ERROR!!!%s\n",
+ fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%s!!!ERROR!!!%s\n",
ctx->test_name, target->name,
- cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+ cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "",
fail_face, normal_face);
break;
@@ -1599,9 +1613,9 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
printf ("\r");
fflush (stdout);
}
- fprintf (stderr, "%s.%s.%s [%d]%s:\t%sXFAIL%s\n",
+ fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sXFAIL%s\n",
ctx->test_name, target->name,
- cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+ cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "",
xfail_face, normal_face);
cairo_test_log (ctx, "XFAIL\n");
break;
@@ -1614,9 +1628,9 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
printf ("\r");
fflush (stdout);
}
- fprintf (stderr, "%s.%s.%s [%d]%s:\t%sNEW%s\n",
+ fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sNEW%s\n",
ctx->test_name, target->name,
- cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+ cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "",
fail_face, normal_face);
cairo_test_log (ctx, "NEW\n");
break;
@@ -1630,9 +1644,9 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
printf ("\r");
fflush (stdout);
}
- fprintf (stderr, "%s.%s.%s [%d]%s:\t%sFAIL%s\n",
+ fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sFAIL%s\n",
ctx->test_name, target->name,
- cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+ cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "",
fail_face, normal_face);
cairo_test_log (ctx, "FAIL\n");
break;