iPXE
Data Structures | Defines | Functions | Variables
crc32_test.c File Reference

CRC32 tests. More...

#include <stdint.h>
#include <ipxe/crc32.h>
#include <ipxe/test.h>

Go to the source code of this file.

Data Structures

struct  crc32_test
 A CRC32 test. More...

Defines

#define DATA(...)   { __VA_ARGS__ }
 Define inline data.
#define CRC32_TEST(name, DATA, SEED, CRC32)
 Define a CRC32 test.
#define crc32_ok(test)
 Report a CRC32 test result.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 CRC32_TEST (empty_test, DATA(), 0x12345678UL, 0x12345678UL)
 CRC32_TEST (hw_test, DATA( 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'), 0xffffffffUL, 0xf2b5ee7aUL)
 CRC32_TEST (hw_split_part1_test, DATA( 'h', 'e', 'l', 'l', 'o'), 0xffffffffUL, 0xc9ef5979UL)
 CRC32_TEST (hw_split_part2_test, DATA( ' ', 'w', 'o', 'r', 'l', 'd'), 0xc9ef5979UL, 0xf2b5ee7aUL)
static void crc32_test_exec (void)
 Perform CRC32 self-tests.

Variables

struct self_test crc32_test __self_test
 CRC32 self-test.

Detailed Description

CRC32 tests.

Test vectors generated using Perl's Digest::CRC:

use Digest::CRC qw ( crc );

printf "%#08x", crc ( $data, 32, $seed, 0, 1, 0x04c11db7, 1 );

Definition in file crc32_test.c.


Define Documentation

#define DATA (   ...)    { __VA_ARGS__ }

Define inline data.

Definition at line 47 of file crc32_test.c.

#define CRC32_TEST (   name,
  DATA,
  SEED,
  CRC32 
)
Value:
static const uint8_t name ## _data[] = DATA;                    \
        static struct crc32_test name = {                               \
                .data = name ## _data,                                  \
                .len = sizeof ( name ## _data ),                        \
                .seed = SEED,                                           \
                .crc32 = CRC32,                                         \
        };

Define a CRC32 test.

Parameters:
nameTest name
DATATest data
SEEDSeed
CRC32Expected CRC32
Return values:
testCRC32 test

Definition at line 70 of file crc32_test.c.

#define crc32_ok (   test)
Value:
do {                                            \
        uint32_t crc32;                                                 \
        crc32 = crc32_le ( (test)->seed, (test)->data, (test)->len );   \
        ok ( crc32 == (test)->crc32 );                                  \
        } while ( 0 )

Report a CRC32 test result.

Parameters:
testCRC32 test

Definition at line 84 of file crc32_test.c.

Referenced by crc32_test_exec().


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )
CRC32_TEST ( empty_test  ,
DATA()  ,
0x12345678UL  ,
0x12345678UL   
)
CRC32_TEST ( hw_test  ,
DATA( 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')  ,
0xffffffffUL  ,
0xf2b5ee7aUL   
)
CRC32_TEST ( hw_split_part1_test  ,
DATA( 'h', 'e', 'l', 'l', 'o')  ,
0xffffffffUL  ,
0xc9ef5979UL   
)
CRC32_TEST ( hw_split_part2_test  ,
DATA( ' ', 'w', 'o', 'r', 'l', 'd')  ,
0xc9ef5979UL  ,
0xf2b5ee7aUL   
)
static void crc32_test_exec ( void  ) [static]

Perform CRC32 self-tests.

Definition at line 108 of file crc32_test.c.

References crc32_ok.

                                     {

        crc32_ok ( &empty_test );
        crc32_ok ( &hw_test );
        crc32_ok ( &hw_split_part1_test );
        crc32_ok ( &hw_split_part2_test );
}

Variable Documentation

Initial value:
 {
        .name = "crc32",
        .exec = crc32_test_exec,
}

CRC32 self-test.

Definition at line 117 of file crc32_test.c.