From 39a5be2a1fbb2a2664e85f38855a2be39335c8a5 Mon Sep 17 00:00:00 2001 From: Bryce Harrington Date: Thu, 14 May 2015 14:36:18 -0700 Subject: [PATCH] tests: Add check_surfaces_geometry() Minor refactoring to simplify initial sanity checks of surfaces. Conceivably useful for other basic checking. Signed-off-by: Bryce Harrington Reviewed-By: Derek Foreman --- tests/weston-test-client-helper.c | 40 +++++++++++++++++++++---------- tests/weston-test-client-helper.h | 3 +++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c index e6817bd9..1bfd43f9 100644 --- a/tests/weston-test-client-helper.c +++ b/tests/weston-test-client-helper.c @@ -876,6 +876,31 @@ screenshot_reference_filename(const char *basename, uint32_t seq) { return filename; } +/** + * check_surfaces_geometry() - verifies two surfaces are same size + * + * @returns true if surfaces have the same width and height, or false + * if not, or if there is no actual data. + */ +bool +check_surfaces_geometry(const struct surface *a, const struct surface *b) +{ + if (a == NULL || b == NULL) { + printf("Undefined surfaces\n"); + return false; + } + else if (a->data == NULL || b->data == NULL) { + printf("Undefined data\n"); + return false; + } + else if (a->width != b->width || a->height != b->height) { + printf("Mismatched dimensions: %d,%d != %d,%d\n", + a->width, a->height, b->width, b->height); + return false; + } + return true; +} + /** * check_surfaces_equal() - tests if two surfaces are pixel-identical * @@ -888,9 +913,7 @@ check_surfaces_equal(const struct surface *a, const struct surface *b) { int bpp = 4; /* Assumes ARGB */ - if (a == NULL || b == NULL) - return false; - if (a->width != b->width || a->height != b->height) + if (!check_surfaces_geometry(a, b)) return false; return (memcmp(a->data, b->data, bpp * a->width * a->height) == 0); @@ -912,18 +935,9 @@ check_surfaces_match_in_clip(const struct surface *a, const struct surface *b, c void *p, *q; int bpp = 4; /* Assumes ARGB */ - if (a == NULL || b == NULL || clip_rect == NULL) + if (!check_surfaces_geometry(a, b) || clip_rect == NULL) return false; - if (a->data == NULL || b->data == NULL) { - printf("Undefined data\n"); - return false; - } - if (a->width != b->width || a->height != b->height) { - printf("Mismatched dimensions: %d,%d != %d,%d\n", - a->width, a->height, b->width, b->height); - return false; - } if (clip_rect->x > a->width || clip_rect->y > a->height) { printf("Clip outside image boundaries\n"); return true; diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h index 0ff28770..5762258f 100644 --- a/tests/weston-test-client-helper.h +++ b/tests/weston-test-client-helper.h @@ -199,6 +199,9 @@ screenshot_output_filename(const char *basename, uint32_t seq); char* screenshot_reference_filename(const char *basename, uint32_t seq); +bool +check_surfaces_geometry(const struct surface *a, const struct surface *b); + bool check_surfaces_equal(const struct surface *a, const struct surface *b);