Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[test] Generalise pnm_ok() to pixbuf_ok()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
- Loading branch information
Showing
3 changed files
with
157 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/* | ||
* Copyright (C) 2013 Michael Brown <mbrown@fensystems.co.uk>. | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License as | ||
* published by the Free Software Foundation; either version 2 of the | ||
* License, or any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, but | ||
* WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; if not, write to the Free Software | ||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
* 02110-1301, USA. | ||
*/ | ||
|
||
FILE_LICENCE ( GPL2_OR_LATER ); | ||
|
||
/** @file | ||
* | ||
* Pixel buffer self-tests | ||
* | ||
*/ | ||
|
||
/* Forcibly enable assertions */ | ||
#undef NDEBUG | ||
|
||
#include <assert.h> | ||
#include <ipxe/image.h> | ||
#include <ipxe/pixbuf.h> | ||
#include <ipxe/test.h> | ||
#include "pixbuf_test.h" | ||
|
||
/** | ||
* Report pixel buffer test result | ||
* | ||
* @v test Pixel buffer test | ||
* @v file Test code file | ||
* @v line Test code line | ||
*/ | ||
void pixbuf_okx ( struct pixel_buffer_test *test, const char *file, | ||
unsigned int line ) { | ||
struct pixel_buffer *pixbuf; | ||
int rc; | ||
|
||
/* Sanity check */ | ||
assert ( ( test->width * test->height * sizeof ( test->data[0] ) ) | ||
== test->len ); | ||
|
||
/* Correct image data pointer */ | ||
test->image->data = virt_to_user ( ( void * ) test->image->data ); | ||
|
||
/* Check that image is detected as PNM */ | ||
okx ( image_probe ( test->image ) == 0, file, line ); | ||
okx ( test->image->type == test->type, file, line ); | ||
|
||
/* Check that a pixel buffer can be created from the image */ | ||
okx ( ( rc = image_pixbuf ( test->image, &pixbuf ) ) == 0, file, line ); | ||
if ( rc == 0 ) { | ||
|
||
/* Check pixel buffer dimensions */ | ||
okx ( pixbuf->width == test->width, file, line ); | ||
okx ( pixbuf->height == test->height, file, line ); | ||
|
||
/* Check pixel buffer data */ | ||
okx ( pixbuf->len == test->len, file, line ); | ||
okx ( memcmp_user ( pixbuf->data, 0, | ||
virt_to_user ( test->data ), 0, | ||
test->len ) == 0, file, line ); | ||
|
||
pixbuf_put ( pixbuf ); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#ifndef _PIXBUF_TEST_H | ||
#define _PIXBUF_TEST_H | ||
|
||
FILE_LICENCE ( GPL2_OR_LATER ); | ||
|
||
#include <stdint.h> | ||
#include <ipxe/refcnt.h> | ||
#include <ipxe/image.h> | ||
#include <ipxe/test.h> | ||
|
||
/** A pixel buffer test */ | ||
struct pixel_buffer_test { | ||
/** Image type */ | ||
struct image_type *type; | ||
/** Source image */ | ||
struct image *image; | ||
/** Pixel data */ | ||
const uint32_t *data; | ||
/** Length of pixel data */ | ||
size_t len; | ||
/** Width */ | ||
unsigned int width; | ||
/** Height */ | ||
unsigned int height; | ||
}; | ||
|
||
/** | ||
* Define a pixel buffer test | ||
* | ||
* @v _name Test name | ||
* @v _type Test image file type | ||
* @v _file Test image file data | ||
* @v _width Expected pixel buffer width | ||
* @v _height Expected pixel buffer height | ||
* @v _data Expected pixel buffer data | ||
* @ret test Pixel buffer test | ||
*/ | ||
#define PIX( _name, _type, _file, _width, _height, _data ) \ | ||
static const char _name ## __file[] = _file; \ | ||
static const uint32_t _name ## __data[] = _data; \ | ||
static struct image _name ## __image = { \ | ||
.refcnt = REF_INIT ( ref_no_free ), \ | ||
.name = #_name, \ | ||
.data = ( userptr_t ) ( _name ## __file ), \ | ||
.len = sizeof ( _name ## __file ), \ | ||
}; \ | ||
static struct pixel_buffer_test _name = { \ | ||
.type = _type, \ | ||
.image = & _name ## __image, \ | ||
.data = _name ## __data, \ | ||
.len = sizeof ( _name ## __data ), \ | ||
.width = _width, \ | ||
.height = _height, \ | ||
}; | ||
|
||
extern void pixbuf_okx ( struct pixel_buffer_test *test, const char *file, | ||
unsigned int line ); | ||
|
||
/** | ||
* Report pixel buffer test result | ||
* | ||
* @v test Pixel buffer test | ||
*/ | ||
#define pixbuf_ok( test ) pixbuf_okx ( test, __FILE__, __LINE__ ) | ||
|
||
#endif /* _PIXBUF_TEST_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters