summaryrefslogtreecommitdiffstats
path: root/src/tests/pnm_test.c
diff options
context:
space:
mode:
authorMichael Brown2014-01-06 20:10:18 +0100
committerMichael Brown2014-01-12 22:53:16 +0100
commitf4d2342e5a924ade6dc7f5f41b82932707835104 (patch)
treea4de1d622b1525d8b19692644cd3e075e8f15792 /src/tests/pnm_test.c
parent[test] Rewrite pnm_ok() using okx() (diff)
downloadipxe-f4d2342e5a924ade6dc7f5f41b82932707835104.tar.gz
ipxe-f4d2342e5a924ade6dc7f5f41b82932707835104.tar.xz
ipxe-f4d2342e5a924ade6dc7f5f41b82932707835104.zip
[test] Generalise pnm_ok() to pixbuf_ok()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/tests/pnm_test.c')
-rw-r--r--src/tests/pnm_test.c103
1 files changed, 15 insertions, 88 deletions
diff --git a/src/tests/pnm_test.c b/src/tests/pnm_test.c
index 099ccbc5..26b0c072 100644
--- a/src/tests/pnm_test.c
+++ b/src/tests/pnm_test.c
@@ -33,44 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <ipxe/pixbuf.h>
#include <ipxe/pnm.h>
#include <ipxe/test.h>
+#include "pixbuf_test.h"
/** Define inline pixel data */
#define DATA(...) { __VA_ARGS__ }
-/** A PNM test */
-struct pnm_test {
- /** 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 PNM test */
-#define PNM( NAME, 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 pnm_test NAME = { \
- .image = & NAME ## _image, \
- .data = NAME ## _data, \
- .len = sizeof ( NAME ## _data ), \
- .width = WIDTH, \
- .height = HEIGHT, \
- };
-
/** PBM ASCII example (from Wikipedia) */
-PNM ( pbm_ascii,
+PIX ( pbm_ascii, &pnm_image_type,
"P1\n"
"# This is an example bitmap of the letter \"J\"\n"
"6 10\n"
@@ -97,7 +66,7 @@ PNM ( pbm_ascii,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff ) );
/** PGM ASCII example (from Wikipedia) */
-PNM ( pgm_ascii,
+PIX ( pgm_ascii, &pnm_image_type,
"P2\n"
"# Shows the word \"FEEP\" (example from Netpbm man page on PGM)\n"
"24 7\n"
@@ -140,7 +109,7 @@ PNM ( pgm_ascii,
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 ) );
/** PPM ASCII example (from Wikipedia) */
-PNM ( ppm_ascii,
+PIX ( ppm_ascii, &pnm_image_type,
"P3\n"
"# The P3 means colors are in ASCII, then 3 columns and 2 rows,\n"
"# then 255 for max color, then RGB triplets\n"
@@ -152,7 +121,7 @@ PNM ( ppm_ascii,
DATA ( 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xffffff, 0x000000 ) );
/** PBM ASCII with no space between pixel values */
-PNM ( pbm_ascii_no_space,
+PIX ( pbm_ascii_no_space, &pnm_image_type,
"P1\n"
"3 3\n"
"001\n"
@@ -163,7 +132,7 @@ PNM ( pbm_ascii_no_space,
0x000000, 0x000000, 0x000000 ) );
/** PBM binary example (converted from Wikipedia) */
-PNM ( pbm_binary,
+PIX ( pbm_binary, &pnm_image_type,
DATA ( 0x50, 0x34, 0x0a, 0x23, 0x20, 0x43, 0x52, 0x45, 0x41, 0x54, 0x4f,
0x52, 0x3a, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x20, 0x50, 0x4e, 0x4d,
0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
@@ -183,7 +152,7 @@ PNM ( pbm_binary,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff ) );
/** PGM binary example (converted from Wikipedia) */
-PNM ( pgm_binary,
+PIX ( pgm_binary, &pnm_image_type,
DATA ( 0x50, 0x35, 0x0a, 0x32, 0x34, 0x20, 0x37, 0x0a, 0x31, 0x35, 0x0a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -232,7 +201,7 @@ PNM ( pgm_binary,
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 ) );
/** PPM binary example (converted from Wikipedia) */
-PNM ( ppm_binary,
+PIX ( ppm_binary, &pnm_image_type,
DATA ( 0x50, 0x36, 0x0a, 0x33, 0x20, 0x32, 0x0a, 0x32, 0x35, 0x35, 0x0a,
0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 ),
@@ -240,60 +209,18 @@ PNM ( ppm_binary,
DATA ( 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xffffff, 0x000000 ) );
/**
- * Report PNM test result
- *
- * @v test PNM test
- * @v file Test code file
- * @v line Test code line
- */
-static void pnm_okx ( struct pnm_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 == &pnm_image_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 );
- }
-}
-#define pnm_ok( test ) pnm_okx ( test, __FILE__, __LINE__ )
-
-/**
* Perform PNM self-test
*
*/
static void pnm_test_exec ( void ) {
- pnm_ok ( &pbm_ascii );
- pnm_ok ( &pgm_ascii );
- pnm_ok ( &ppm_ascii );
- pnm_ok ( &pbm_ascii_no_space );
- pnm_ok ( &pbm_binary );
- pnm_ok ( &pgm_binary );
- pnm_ok ( &ppm_binary );
+ pixbuf_ok ( &pbm_ascii );
+ pixbuf_ok ( &pgm_ascii );
+ pixbuf_ok ( &ppm_ascii );
+ pixbuf_ok ( &pbm_ascii_no_space );
+ pixbuf_ok ( &pbm_binary );
+ pixbuf_ok ( &pgm_binary );
+ pixbuf_ok ( &ppm_binary );
}
/** PNM self-test */