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 <bryce@osg.samsung.com>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
dev
Bryce Harrington 10 years ago
parent 198f941ec8
commit 39a5be2a1f
  1. 40
      tests/weston-test-client-helper.c
  2. 3
      tests/weston-test-client-helper.h

@ -876,6 +876,31 @@ screenshot_reference_filename(const char *basename, uint32_t seq) {
return filename; 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 * 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 */ int bpp = 4; /* Assumes ARGB */
if (a == NULL || b == NULL) if (!check_surfaces_geometry(a, b))
return false;
if (a->width != b->width || a->height != b->height)
return false; return false;
return (memcmp(a->data, b->data, bpp * a->width * a->height) == 0); 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; void *p, *q;
int bpp = 4; /* Assumes ARGB */ int bpp = 4; /* Assumes ARGB */
if (a == NULL || b == NULL || clip_rect == NULL) if (!check_surfaces_geometry(a, b) || clip_rect == NULL)
return false; 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) { if (clip_rect->x > a->width || clip_rect->y > a->height) {
printf("Clip outside image boundaries\n"); printf("Clip outside image boundaries\n");
return true; return true;

@ -199,6 +199,9 @@ screenshot_output_filename(const char *basename, uint32_t seq);
char* char*
screenshot_reference_filename(const char *basename, uint32_t seq); screenshot_reference_filename(const char *basename, uint32_t seq);
bool
check_surfaces_geometry(const struct surface *a, const struct surface *b);
bool bool
check_surfaces_equal(const struct surface *a, const struct surface *b); check_surfaces_equal(const struct surface *a, const struct surface *b);

Loading…
Cancel
Save