iPXE
zlib_test.c File Reference

zlib image tests More...

#include <stdint.h>
#include <ipxe/image.h>
#include <ipxe/zlib.h>
#include <ipxe/test.h>

Go to the source code of this file.

Data Structures

struct  zlib_test
 A zlib test. More...

Macros

#define DATA(...)
 Define inline data.
#define ZLIB(name, COMPRESSED, EXPECTED)
 Define a zlib test.
#define zlib_ok(test)

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 ZLIB (hello_world, DATA(0x78, 0x9c, 0xf3, 0x48, 0xcd, 0xc9, 0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0x01, 0x00, 0x18, 0xab, 0x04, 0x3d), DATA(0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64))
 "Hello world"
static void zlib_okx (struct zlib_test *test, const char *file, unsigned int line)
 Report zlib test result.
static void zlib_test_exec (void)
 Perform zlib self-test.

Variables

struct self_test zlib_test __self_test
 zlib self-test

Detailed Description

zlib image tests

Definition in file zlib_test.c.

Macro Definition Documentation

◆ DATA

#define DATA ( ...)
Value:
{ __VA_ARGS__ }

Define inline data.

Definition at line 57 of file zlib_test.c.

◆ ZLIB

#define ZLIB ( name,
COMPRESSED,
EXPECTED )
Value:
static const uint8_t name ## _compressed[] = COMPRESSED; \
static const uint8_t name ## _expected[] = EXPECTED; \
static struct zlib_test name = { \
.compressed_name = #name ".z", \
.compressed = name ## _compressed, \
.compressed_len = sizeof ( name ## _compressed ), \
.expected_name = #name, \
.expected = name ## _expected, \
.expected_len = sizeof ( name ## _expected ), \
};
unsigned char uint8_t
Definition stdint.h:10
const char * name
Definition ath9k_hw.c:1986
#define EXPECTED(...)
Define inline expected result point.
A zlib test.
Definition zlib_test.c:41

Define a zlib test.

Definition at line 60 of file zlib_test.c.

60#define ZLIB( name, COMPRESSED, EXPECTED ) \
61 static const uint8_t name ## _compressed[] = COMPRESSED; \
62 static const uint8_t name ## _expected[] = EXPECTED; \
63 static struct zlib_test name = { \
64 .compressed_name = #name ".z", \
65 .compressed = name ## _compressed, \
66 .compressed_len = sizeof ( name ## _compressed ), \
67 .expected_name = #name, \
68 .expected = name ## _expected, \
69 .expected_len = sizeof ( name ## _expected ), \
70 };

◆ zlib_ok

#define zlib_ok ( test)
Value:
zlib_okx ( test, __FILE__, __LINE__ )
static int test
Definition epic100.c:73
static void zlib_okx(struct zlib_test *test, const char *file, unsigned int line)
Report zlib test result.
Definition zlib_test.c:86

Definition at line 116 of file zlib_test.c.

Referenced by zlib_test_exec().

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ ZLIB()

ZLIB ( hello_world ,
DATA(0x78, 0x9c, 0xf3, 0x48, 0xcd, 0xc9, 0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0x01, 0x00, 0x18, 0xab, 0x04, 0x3d) ,
DATA(0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64)  )

"Hello world"

References DATA.

◆ zlib_okx()

void zlib_okx ( struct zlib_test * test,
const char * file,
unsigned int line )
static

Report zlib test result.

Parameters
testzlib test
fileTest code file
lineTest code line

Definition at line 86 of file zlib_test.c.

87 {
88 struct image *image;
89 struct image *extracted;
90
91 /* Construct compressed image */
92 image = image_memory ( test->compressed_name, test->compressed,
93 test->compressed_len );
94 okx ( image != NULL, file, line );
95 okx ( image->len == test->compressed_len, file, line );
96
97 /* Check type detection */
98 okx ( image->type == &zlib_image_type, file, line );
99
100 /* Extract archive image */
101 okx ( image_extract ( image, NULL, &extracted ) == 0, file, line );
102
103 /* Verify extracted image content */
104 okx ( extracted->len == test->expected_len, file, line );
105 okx ( memcmp ( extracted->data, test->expected,
106 test->expected_len ) == 0, file, line );
107
108 /* Verify extracted image name */
109 okx ( strcmp ( extracted->name, test->expected_name ) == 0,
110 file, line );
111
112 /* Unregister images */
113 unregister_image ( extracted );
115}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
int image_extract(struct image *image, const char *name, struct image **extracted)
Extract archive image.
Definition archive.c:45
void unregister_image(struct image *image)
Unregister executable image.
Definition image.c:358
struct image * image_memory(const char *name, const void *data, size_t len)
Create registered image from block of memory.
Definition image.c:609
int strcmp(const char *first, const char *second)
Compare strings.
Definition string.c:174
int memcmp(const void *first, const void *second, size_t len)
Compare memory regions.
Definition string.c:115
An executable image.
Definition image.h:24
struct image_type * type
Image type, if known.
Definition image.h:59
const void * data
Read-only data.
Definition image.h:51
char * name
Name.
Definition image.h:38
size_t len
Length of raw file image.
Definition image.h:56
#define okx(success, file, line)
Report test result.
Definition test.h:44

References image::data, image_extract(), image_memory(), image::len, memcmp(), image::name, NULL, okx, strcmp(), test, image::type, and unregister_image().

◆ zlib_test_exec()

void zlib_test_exec ( void )
static

Perform zlib self-test.

Definition at line 122 of file zlib_test.c.

122 {
123
124 zlib_ok ( &hello_world );
125}
#define zlib_ok(test)
Definition zlib_test.c:116

References zlib_ok.

Variable Documentation

◆ __self_test

struct self_test zlib_test __self_test
Initial value:
= {
.name = "zlib",
.exec = zlib_test_exec,
}
static void zlib_test_exec(void)
Perform zlib self-test.
Definition zlib_test.c:122

zlib self-test

Definition at line 128 of file zlib_test.c.

128 {
129 .name = "zlib",
130 .exec = zlib_test_exec,
131};