mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Makes testing parameters specified with AddTest non-const again when passed to test functions. This allows test functions to update their parameters during execution and is particularly useful for tests which use those parameters to accumulate statistics, error counts, etc. without resorting to global variables.
247 lines
8.2 KiB
C
247 lines
8.2 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Copyright by The HDF Group. *
|
|
* All rights reserved. *
|
|
* *
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
* terms governing use, modification, and redistribution, is contained in *
|
|
* the LICENSE file, which can be found at the root of the source code *
|
|
* distribution tree, or in https://www.hdfgroup.org/licenses. *
|
|
* If you do not have access to either file, you may request a copy from *
|
|
* help@hdfgroup.org. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
/*-------------------------------------------------------------------------
|
|
*
|
|
* Created: tchecksum.c
|
|
*
|
|
* Purpose: Test internal checksum routine(s)
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
/***********/
|
|
/* Headers */
|
|
/***********/
|
|
#include "testhdf5.h"
|
|
|
|
/**********/
|
|
/* Macros */
|
|
/**********/
|
|
#define BUF_LEN 3093 /* No particular value */
|
|
|
|
/*******************/
|
|
/* Local variables */
|
|
/*******************/
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_chksum_size_one(): Checksum 1 byte buffer
|
|
**
|
|
****************************************************************/
|
|
static void
|
|
test_chksum_size_one(void)
|
|
{
|
|
uint8_t buf[1] = {23}; /* Buffer to checksum */
|
|
uint32_t chksum; /* Checksum value */
|
|
|
|
/* Buffer w/real data */
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0x17001700, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xfa2568b7, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0xa209c931, "H5_checksum_lookup3");
|
|
|
|
/* Buffer w/zero(s) for data */
|
|
memset(buf, 0, sizeof(buf));
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xfa60fb57, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x8ba9414b, "H5_checksum_lookup3");
|
|
} /* test_chksum_size_one() */
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_chksum_size_two(): Checksum 2 byte buffer
|
|
**
|
|
****************************************************************/
|
|
static void
|
|
test_chksum_size_two(void)
|
|
{
|
|
uint8_t buf[2] = {23, 187}; /* Buffer to checksum */
|
|
uint32_t chksum; /* Checksum value */
|
|
|
|
/* Buffer w/real data */
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0x17bb17bb, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xfc856608, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x8ba7a6c9, "H5_checksum_lookup3");
|
|
|
|
/* Buffer w/zero(s) for data */
|
|
memset(buf, 0, sizeof(buf));
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xfc7e9b20, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x62cd61b3, "H5_checksum_lookup3");
|
|
} /* test_chksum_size_two() */
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_chksum_size_three(): Checksum 3 byte buffer
|
|
**
|
|
****************************************************************/
|
|
static void
|
|
test_chksum_size_three(void)
|
|
{
|
|
uint8_t buf[3] = {23, 187, 98}; /* Buffer to checksum */
|
|
uint32_t chksum; /* Checksum value */
|
|
|
|
/* Buffer w/real data */
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0x917679bb, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xfebc5d70, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0xcebdf4f0, "H5_checksum_lookup3");
|
|
|
|
/* Buffer w/zero(s) for data */
|
|
memset(buf, 0, sizeof(buf));
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xf9cc4c7a, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x6bd0060f, "H5_checksum_lookup3");
|
|
} /* test_chksum_size_three() */
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_chksum_size_four(): Checksum 4 byte buffer
|
|
**
|
|
****************************************************************/
|
|
static void
|
|
test_chksum_size_four(void)
|
|
{
|
|
uint8_t buf[4] = {23, 187, 98, 217}; /* Buffer to checksum */
|
|
uint32_t chksum; /* Checksum value */
|
|
|
|
/* Buffer w/real data */
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0x924f7a94, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xff398a46, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x2c88bb51, "H5_checksum_lookup3");
|
|
|
|
/* Buffer w/zero(s) for data */
|
|
memset(buf, 0, sizeof(buf));
|
|
chksum = H5_checksum_fletcher32(buf, sizeof(buf));
|
|
VERIFY(chksum, 0, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(buf, sizeof(buf));
|
|
VERIFY(chksum, 0xff117081, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(buf, sizeof(buf), 0);
|
|
VERIFY(chksum, 0x049396b8, "H5_checksum_lookup3");
|
|
} /* test_chksum_size_four() */
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_chksum_large(): Checksum larger buffer
|
|
**
|
|
****************************************************************/
|
|
static void
|
|
test_chksum_large(void)
|
|
{
|
|
uint8_t *large_buf; /* Buffer for checksum calculations */
|
|
uint32_t chksum; /* Checksum value */
|
|
size_t u; /* Local index variable */
|
|
|
|
/* Allocate the buffer */
|
|
large_buf = (uint8_t *)malloc((size_t)BUF_LEN);
|
|
CHECK_PTR(large_buf, "malloc");
|
|
|
|
/* Initialize buffer w/known data */
|
|
for (u = 0; u < BUF_LEN; u++)
|
|
large_buf[u] = (uint8_t)(u * 3);
|
|
|
|
/* Buffer w/real data */
|
|
chksum = H5_checksum_fletcher32(large_buf, (size_t)BUF_LEN);
|
|
VERIFY(chksum, 0x85b4e2a, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(large_buf, (size_t)BUF_LEN);
|
|
VERIFY(chksum, 0xfbd0f7c0, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(large_buf, (size_t)BUF_LEN, 0);
|
|
VERIFY(chksum, 0x1bd2ee7b, "H5_checksum_lookup3");
|
|
|
|
/* Buffer w/zero(s) for data */
|
|
memset(large_buf, 0, (size_t)BUF_LEN);
|
|
chksum = H5_checksum_fletcher32(large_buf, (size_t)BUF_LEN);
|
|
VERIFY(chksum, 0, "H5_checksum_fletcher32");
|
|
|
|
chksum = H5_checksum_crc(large_buf, (size_t)BUF_LEN);
|
|
VERIFY(chksum, 0xfac8b4c4, "H5_checksum_crc");
|
|
|
|
chksum = H5_checksum_lookup3(large_buf, (size_t)BUF_LEN, 0);
|
|
VERIFY(chksum, 0x930c7afc, "H5_checksum_lookup3");
|
|
|
|
/* Release memory for buffer */
|
|
free(large_buf);
|
|
} /* test_chksum_large() */
|
|
|
|
/****************************************************************
|
|
**
|
|
** test_checksum(): Main checksum testing routine.
|
|
**
|
|
****************************************************************/
|
|
void
|
|
test_checksum(void H5_ATTR_UNUSED *params)
|
|
{
|
|
/* Output message about test being performed */
|
|
MESSAGE(5, ("Testing checksum algorithms\n"));
|
|
|
|
/* Various checks for fletcher32 checksum algorithm */
|
|
test_chksum_size_one(); /* Test buffer w/only 1 byte */
|
|
test_chksum_size_two(); /* Test buffer w/only 2 bytes */
|
|
test_chksum_size_three(); /* Test buffer w/only 3 bytes */
|
|
test_chksum_size_four(); /* Test buffer w/only 4 bytes */
|
|
test_chksum_large(); /* Test buffer w/larger # of bytes */
|
|
|
|
} /* test_checksum() */
|
|
|
|
/*-------------------------------------------------------------------------
|
|
* Function: cleanup_checksum
|
|
*
|
|
* Purpose: Cleanup temporary test files
|
|
*
|
|
* Return: none
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
void
|
|
cleanup_checksum(void H5_ATTR_UNUSED *params)
|
|
{
|
|
/* no file to clean */
|
|
}
|