mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
261 lines
8.5 KiB
C
261 lines
8.5 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
* Copyright by The HDF Group. *
|
||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||
* 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 COPYING file, which can be found at the root of the source code *
|
||
* distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
|
||
* If you do not have access to either file, you may request a copy from *
|
||
* help@hdfgroup.org. *
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
|
||
/*-------------------------------------------------------------------------
|
||
*
|
||
* Created: tchecksum.c
|
||
* Aug 21 2006
|
||
* Quincey Koziol <koziol@hdfgroup.org>
|
||
*
|
||
* 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 */
|
||
HDmemset(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 */
|
||
HDmemset(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 */
|
||
HDmemset(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 */
|
||
HDmemset(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 *)HDmalloc((size_t)BUF_LEN);
|
||
CHECK_PTR(large_buf, "HDmalloc");
|
||
|
||
/* 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 */
|
||
HDmemset(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 */
|
||
HDfree(large_buf);
|
||
} /* test_chksum_large() */
|
||
|
||
|
||
/****************************************************************
|
||
**
|
||
** test_checksum(): Main checksum testing routine.
|
||
**
|
||
****************************************************************/
|
||
void
|
||
test_checksum(void)
|
||
{
|
||
/* 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
|
||
*
|
||
* Programmer: Quincey Koziol
|
||
* August 21, 2006
|
||
*
|
||
*-------------------------------------------------------------------------
|
||
*/
|
||
H5_ATTR_PURE H5_ATTR_CONST void
|
||
cleanup_checksum(void)
|
||
{
|
||
/* no file to clean */
|
||
}
|
||
|