blob: d12829d89fd9ce832148b8f235d9a6061bf5a090 [file] [log] [blame]
#ifndef _PIXBUF_TEST_H
#define _PIXBUF_TEST_H
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#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 */