From ed9abc7612e65e9a2df7800bf22534ff92393531 Mon Sep 17 00:00:00 2001 From: Robb Matzke Date: Thu, 7 Jan 1999 12:14:55 -0500 Subject: [svn-r1016] *** empty log message *** --- test/enum.c | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 376 insertions(+) create mode 100644 test/enum.c diff --git a/test/enum.c b/test/enum.c new file mode 100644 index 0000000..f938c51 --- /dev/null +++ b/test/enum.c @@ -0,0 +1,376 @@ +/* + * Copyright © 1998 NCSA + * All rights reserved. + * + * Programmer: Robb Matzke + * Tuesday, December 22, 1998 + */ +#include +#define CPTR(VAR,CONST) ((VAR)=(CONST),&(VAR)) + +const char *FILENAME[] = { + "enum1", + NULL +}; + +typedef enum { + E1_RED, + E1_GREEN, + E1_BLUE, + E1_WHITE, + E1_BLACK +} c_e1; + + +/*------------------------------------------------------------------------- + * Function: test_named + * + * Purpose: Create an enumeration data type and store it in the file. + * + * Return: Success: 0 + * + * Failure: number of errors + * + * Programmer: Robb Matzke + * Wednesday, December 23, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static int +test_named(hid_t file) +{ + hid_t type=-1, cwg=-1; + c_e1 val; + signed char val8; + + TESTING("named enumeration types"); + if ((cwg=H5Gcreate(file, "test_named", 0))<0) goto error; + + /* A native integer */ + if ((type = H5Tcreate(H5T_ENUM, sizeof(c_e1)))<0) goto error; + if (H5Tenum_insert(type, "RED", CPTR(val, E1_RED ))<0) goto error; + if (H5Tenum_insert(type, "GREEN", CPTR(val, E1_GREEN))<0) goto error; + if (H5Tenum_insert(type, "BLUE", CPTR(val, E1_BLUE ))<0) goto error; + if (H5Tenum_insert(type, "WHITE", CPTR(val, E1_WHITE))<0) goto error; + if (H5Tenum_insert(type, "BLACK", CPTR(val, E1_BLACK))<0) goto error; + if (H5Tcommit(cwg, "e1_a", type)<0) goto error; + if (H5Tclose(type)<0) goto error; + + /* A smaller type */ + if ((type = H5Tcreate(H5T_ENUM, 1))<0) goto error; + if (H5Tenum_insert(type, "RED", CPTR(val8, E1_RED ))<0) goto error; + if (H5Tenum_insert(type, "GREEN", CPTR(val8, E1_GREEN))<0) goto error; + if (H5Tenum_insert(type, "BLUE", CPTR(val8, E1_BLUE ))<0) goto error; + if (H5Tenum_insert(type, "WHITE", CPTR(val8, E1_WHITE))<0) goto error; + if (H5Tenum_insert(type, "BLACK", CPTR(val8, E1_BLACK))<0) goto error; + if (H5Tcommit(cwg, "e1_b", type)<0) goto error; + if (H5Tclose(type)<0) goto error; + + /* A non-native type */ + if (H5T_ORDER_BE==H5Tget_order(H5T_NATIVE_INT)) { + if ((type = H5Tenum_create(H5T_STD_U8LE))<0) goto error; + } else { + if ((type = H5Tenum_create(H5T_STD_U8BE))<0) goto error; + } + if (H5Tenum_insert(type, "RED", CPTR(val8, E1_RED ))<0) goto error; + if (H5Tenum_insert(type, "GREEN", CPTR(val8, E1_GREEN))<0) goto error; + if (H5Tenum_insert(type, "BLUE", CPTR(val8, E1_BLUE ))<0) goto error; + if (H5Tenum_insert(type, "WHITE", CPTR(val8, E1_WHITE))<0) goto error; + if (H5Tenum_insert(type, "BLACK", CPTR(val8, E1_BLACK))<0) goto error; + if (H5Tcommit(cwg, "e1_c", type)<0) goto error; + if (H5Tclose(type)<0) goto error; + + if (H5Gclose(cwg)<0) goto error; + PASSED(); + return 0; + + error: + H5E_BEGIN_TRY { + H5Tclose(type); + H5Gclose(cwg); + } H5E_END_TRY; + return 1; +} + + +/*------------------------------------------------------------------------- + * Function: test_noconv + * + * Purpose: Tests creation of datasets when no conversion is present. + * + * Return: Success: 0 + * + * Failure: number of errors + * + * Programmer: Robb Matzke + * Monday, January 4, 1999 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static int +test_noconv(hid_t file) +{ + hid_t cwg=-1, type=-1, space=-1, dset=-1; + c_e1 val; + static c_e1 data1[]={E1_RED, E1_GREEN, E1_BLUE, E1_GREEN, E1_WHITE, + E1_WHITE, E1_BLACK, E1_GREEN, E1_BLUE, E1_RED, + E1_RED, E1_BLUE, E1_GREEN, E1_BLACK, E1_WHITE, + E1_RED, E1_WHITE, E1_GREEN, E1_GREEN, E1_BLUE}; + c_e1 data2[NELMTS(data1)]; + hsize_t i, ds_size[1]={NELMTS(data1)}; + + TESTING("no-conversion datasets"); + if ((cwg=H5Gcreate(file, "test_noconv", 0))<0) goto error; + + if ((type = H5Tcreate(H5T_ENUM, sizeof(c_e1)))<0) goto error; + if (H5Tenum_insert(type, "RED", CPTR(val, E1_RED ))<0) goto error; + if (H5Tenum_insert(type, "GREEN", CPTR(val, E1_GREEN))<0) goto error; + if (H5Tenum_insert(type, "BLUE", CPTR(val, E1_BLUE ))<0) goto error; + if (H5Tenum_insert(type, "WHITE", CPTR(val, E1_WHITE))<0) goto error; + if (H5Tenum_insert(type, "BLACK", CPTR(val, E1_BLACK))<0) goto error; + + if ((space=H5Screate_simple(1, ds_size, NULL))<0) goto error; + if ((dset=H5Dcreate(cwg, "color_table", type, space, H5P_DEFAULT))<0) + goto error; + if (H5Dwrite(dset, type, space, space, H5P_DEFAULT, data1)<0) goto error; + if (H5Dread(dset, type, space, space, H5P_DEFAULT, data2)<0) goto error; + + for (i=0; i