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>
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user