home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / hdf / unix / hdf3_2r2 / test / tsdnt.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-29  |  12.2 KB  |  484 lines

  1. /***************************************************************************
  2. *
  3. *
  4. *                         NCSA HDF version 3.2r2
  5. *                            October 30, 1992
  6. *
  7. * NCSA HDF Version 3.2 source code and documentation are in the public
  8. * domain.  Specifically, we give to the public domain all rights for future
  9. * licensing of the source code, all resale rights, and all publishing rights.
  10. *
  11. * We ask, but do not require, that the following message be included in all
  12. * derived works:
  13. *
  14. * Portions developed at the National Center for Supercomputing Applications at
  15. * the University of Illinois at Urbana-Champaign, in collaboration with the
  16. * Information Technology Institute of Singapore.
  17. *
  18. * THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
  19. * SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
  20. * WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
  21. *
  22. ****************************************************************************
  23. */
  24.  
  25. #ifdef RCSID
  26. static char RcsId[] = "@(#)$Revision: 1.8 $";
  27. #endif
  28. /*
  29. $Header: /hdf/hdf/v3.2r2/test/RCS/tsdnt.c,v 1.8 1992/07/09 20:41:50 sxu beta koziol $
  30.  
  31. $Log: tsdnt.c,v $
  32.  * Revision 1.8  1992/07/09  20:41:50  sxu
  33.  * Added float64 test.
  34.  * Added DFSDgetNT test.
  35.  *
  36.  * Revision 1.7  1992/07/09  15:33:29  mfolk
  37.  * Added header that explains what it tests.
  38.  *
  39.  * Revision 1.6  1992/06/26  20:35:06  chouck
  40.  * Changed output names
  41.  *
  42.  * Revision 1.4  1992/05/31  15:32:37  mfolk
  43.  * Change type of rank and dims[2] from int to int32 for Convex.
  44.  *
  45.  * Revision 1.3  1992/05/28  17:31:32  chouck
  46.  * Changed output file names
  47.  *
  48.  * Revision 1.2  1992/03/24  20:42:04  sxu
  49.  * Changed output file names
  50.  *
  51.  * Revision 1.1  1992/02/26  20:07:41  mfolk
  52.  * Initial revision
  53.  *
  54. */
  55.  
  56. /***********************************************************
  57. *
  58. * Test program to test use of different number types in SDS.
  59. * Creates arrays of all types.
  60. * Stores arrays in individual files and reads them back. 
  61. * Stores all arrays in one file and reads them back.
  62. *
  63. * NOTE: Native mode not tested in this program.  See tsdnnt.c
  64. *       for same tests applied to native mode.
  65. *
  66. *************************************************************/
  67.  
  68. #include "hdf.h"
  69. #include "dfsd.h"
  70.  
  71. #define FILENAME "tsdnt.hdf"
  72.  
  73. float64 f64[10][10], tf64[10][10];
  74. float32 f32[10][10], tf32[10][10];
  75. int8 i8[10][10], ti8[10][10];
  76. uint8 ui8[10][10], tui8[10][10];
  77. int16 i16[10][10], ti16[10][10];
  78. uint16 ui16[10][10], tui16[10][10];
  79. int32 i32[10][10], ti32[10][10];
  80. uint32 ui32[10][10], tui32[10][10];
  81.  
  82. int main()
  83. {
  84.     int i, j, err, ret;
  85.     int32 rank, num_type;
  86.     int32 dims[2];
  87.     int number_failed = 0;
  88.  
  89.     rank = 2;
  90.     dims[0] = 10;
  91.     dims[1] = 10;
  92.  
  93.     printf("Creating arrays...\n");
  94.  
  95.     for (i=0; i<10; i++) {
  96.         for (j=0; j<10; j++) {
  97.             f64[i][j] = (i * 10) + j;
  98.         f32[i][j] = (i * 10) + j;    /* range: 0 ~ 4-billion */
  99.  
  100.         i8[i][j] = (i * 10) + j;    /* range: 0 ~ 100 */
  101.         ui8[i][j] = (i * 20) + j;    /* range: 0 ~ 200 */
  102.  
  103.         i16[i][j] = (i * 10) + j;    /* range: 0 ~ 30000 */
  104.         ui16[i][j] = (i * 20) + j;    /* range: 0 ~ 60000 */
  105.  
  106.         i32[i][j] = (i * 10L) + j;    /* range: 0 ~ 2-billion */
  107.         ui32[i][j] = (i * 20) + j;    /* range: 0 ~ 4-billion */
  108.     }
  109.     }
  110.     
  111.     err = 0;
  112.     ret = DFSDsetdims(rank, dims);
  113.     err += ret;
  114.     /* individual files */
  115.     printf("Testing arrays in individual files...\n");
  116.  
  117.     ret = DFSDsetNT(DFNT_FLOAT64);
  118.     err += ret;
  119.     ret = DFSDadddata("co00.hdf", rank, dims, f64);
  120.     err += ret;
  121.     printf("Write: %d     ", err);        
  122.     err = 0;
  123.     ret = DFSDgetdata("co00.hdf", rank, dims, tf64);
  124.     err += ret;
  125.     HEprint(stderr, 0);
  126.     ret = DFSDgetNT(&num_type);
  127.     err += ret;
  128.     if (num_type != DFNT_FLOAT64) err--;
  129.     printf("Read: %d\n", err);
  130.     err = 0;
  131.     for (i=0; i<10; i++)
  132.     for (j=0; j<10; j++) {
  133.         if (f64[i][j] != tf64[i][j])
  134.             err++ ;
  135.         tf64[i][j] = 0.0;
  136.     }
  137.     if (err != 0) {
  138.     printf(">>> Test failed for float64 array.\n");
  139.         number_failed++;
  140.     }
  141.     else
  142.     printf("Test passed for float64 array.\n");    
  143.  
  144.     ret = DFSDsetNT(DFNT_FLOAT32);
  145.     err += ret;
  146.     ret = DFSDadddata("co0.hdf", rank, dims, f32);
  147.     err += ret;
  148.     printf("Write: %d     ", err);        
  149.     err = 0;
  150.     ret = DFSDgetdata("co0.hdf", rank, dims, tf32);
  151.     err += ret;
  152.     HEprint(stderr, 0);
  153.     ret = DFSDgetNT(&num_type);
  154.     err += ret;
  155.     if (num_type != DFNT_FLOAT32) err--;
  156.     printf("Read: %d\n", err);
  157.     err = 0;
  158.     for (i=0; i<10; i++)
  159.     for (j=0; j<10; j++) {
  160.         if (f32[i][j] != tf32[i][j])
  161.             err++ ;
  162.         tf32[i][j] = 0.0;
  163.     }
  164.     if (err != 0) {
  165.     printf(">>> Test failed for float32 array.\n");
  166.         number_failed++;
  167.     }
  168.     else
  169.     printf("Test passed for float32 array.\n");    
  170.     
  171.     err = 0;
  172.     ret = DFSDsetNT(DFNT_INT8);
  173.     err += ret;
  174.     ret = DFSDadddata("co1.hdf", rank, dims, i8);
  175.     err += ret;
  176.     printf("Write: %d     ", err);
  177.     err = 0;
  178.     ret = DFSDgetdata("co1.hdf", rank, dims, ti8);
  179.     err += ret;   
  180.     ret = DFSDgetNT(&num_type);
  181.     err += ret;
  182.     if (num_type != DFNT_INT8) err--;
  183.     printf("Read: %d\n", err);
  184.     err = 0;
  185.     for (i=0; i<10; i++)
  186.     for (j=0; j<10; j++) {
  187.         if (i8[i][j] != ti8[i][j])
  188.             err = 1;
  189.         ti8[i][j] = 0;
  190.     }
  191.     if (err == 1) {
  192.     printf(">>> Test failed for int8 array.\n");
  193.     number_failed++;
  194.     }
  195.     else
  196.     printf("Test passed for int8 array.\n");
  197.  
  198.     err = 0;
  199.     ret = DFSDsetNT(DFNT_UINT8);
  200.     err += ret;
  201.     ret =  DFSDadddata("co2.hdf", rank, dims, ui8);
  202.     err += ret;
  203.     printf("Write: %d     ", err);
  204.     err = 0;
  205.     ret = DFSDgetdata("co2.hdf", rank, dims, tui8);
  206.     err += ret;
  207.     ret = DFSDgetNT(&num_type);
  208.     err += ret;
  209.     if (num_type != DFNT_UINT8) err--;
  210.     printf("Read: %d\n", err);
  211.     err = 0;
  212.     for (i=0; i<10; i++) {
  213.       for (j=0; j<10; j++) {
  214.         if (ui8[i][j] != tui8[i][j])
  215.             err = 1;
  216.         tui8[i][j] = 0;
  217.       }
  218.     }
  219.     if (err == 1 ) {
  220.     printf(">>> Test failed for uint8 array.\n");
  221.     number_failed++;
  222.     }
  223.     else
  224.     printf("Test passed for uint8 array.\n");
  225.  
  226.     err = 0;
  227.     ret = DFSDsetNT(DFNT_INT16);
  228.     err += ret;
  229.     ret =  DFSDadddata("co3.hdf", rank, dims, i16);
  230.     err += ret;
  231.     printf("Write: %d     ", err);
  232.     err = 0;
  233.     ret = DFSDgetdata("co3.hdf", rank, dims, ti16);
  234.     err += ret;
  235.     ret = DFSDgetNT(&num_type);
  236.     err += ret;
  237.     if (num_type != DFNT_INT16) err--;
  238.     printf("Read: %d\n", err);
  239.     err = 0;
  240.     for (i=0; i<10; i++)
  241.     for (j=0; j<10; j++) {
  242.         if (i16[i][j] != ti16[i][j])
  243.             err = 1;
  244.         ti16[i][j] = 0;
  245.     }
  246.     if (err == 1 ) {
  247.     printf(">>> Test failed for int16 array.\n");
  248.     number_failed++;
  249.     }
  250.     else
  251.     printf("Test passed for int16 array.\n");
  252.  
  253.     err = 0;
  254.     ret = DFSDsetNT(DFNT_UINT16);
  255.     err += ret;
  256.     ret = DFSDadddata("co4.hdf", rank, dims, ui16);
  257.     err += ret;
  258.     printf("Write: %d     ", err);
  259.     err = 0;
  260.     ret = DFSDgetdata("co4.hdf", rank, dims, tui16);
  261.     err += ret;
  262.     ret = DFSDgetNT(&num_type);
  263.     err += ret;
  264.     if (num_type != DFNT_UINT16) err--;
  265.     printf("Read: %d\n", err);
  266.     err = 0;
  267.     for (i=0; i<10; i++)
  268.     for (j=0; j<10; j++) {
  269.         if (ui16[i][j] != tui16[i][j])
  270.             err = 1;
  271.         tui16[i][j] = 0;
  272.     }
  273.     if (err == 1 ) {
  274.     printf(">>> Test failed for uint16 array.\n");
  275.     number_failed++;
  276.     }
  277.     else
  278.     printf("Test passed for uint16 array.\n");
  279.  
  280.     err = 0;
  281.     ret = DFSDsetNT(DFNT_INT32);
  282.     err += ret;
  283.     ret = DFSDadddata("co5.hdf", rank, dims, i32);
  284.     err += ret;
  285.     printf("Write: %d     ", err);
  286.     err = 0;
  287.     ret = DFSDgetdata("co5.hdf", rank, dims, ti32);
  288.     err += ret;
  289.     ret = DFSDgetNT(&num_type);
  290.     err += ret;
  291.     if (num_type != DFNT_INT32) err--;
  292.     printf("Read: %d\n", err);
  293.     err = 0;
  294.     for (i=0; i<10; i++)
  295.     for (j=0; j<10; j++) {
  296.         if (i32[i][j] != ti32[i][j])
  297.             err = 1;
  298.         ti32[i][j] = 0;
  299.     }
  300.     if (err == 1 ) {
  301.     printf(">>> Test failed for int32 array.\n");
  302.     number_failed++;
  303.     }
  304.     else
  305.     printf("Test passed for int32 array.\n");
  306.  
  307.     err = 0;
  308.     ret = DFSDsetNT(DFNT_UINT32);
  309.     err += ret;
  310.     ret = DFSDadddata("co6.hdf", rank, dims, ui32);
  311.     err += ret;
  312.     printf("Write: %d     ", err);
  313.     err = 0;
  314.     ret = DFSDgetdata("co6.hdf", rank, dims, tui32);
  315.     err += ret;
  316.     ret = DFSDgetNT(&num_type);
  317.     err += ret;
  318.     if (num_type != DFNT_UINT32) err--;
  319.     printf("Read: %d\n", err);
  320.     err = 0;
  321.     for (i=0; i<10; i++) {
  322.       for (j=0; j<10; j++) {
  323.         if (ui32[i][j] != tui32[i][j])
  324.             err = 1;
  325.         tui32[i][j] = 0;
  326.       }
  327.     }
  328.     if (err == 1 ) {
  329.     printf(">>> Test failed for uint32 array.\n");
  330.     number_failed++;
  331.     }
  332.     else
  333.     printf("Test passed for uint32 array.\n");
  334.  
  335.  
  336.     printf("Writing arrays to single file... ");
  337.     DFSDsetNT(DFNT_FLOAT64);
  338.     err = DFSDadddata(FILENAME, rank, dims, f64);
  339.     printf("%d  ", err);
  340.     DFSDsetNT(DFNT_FLOAT32);
  341.     err = DFSDadddata(FILENAME, rank, dims, f32);
  342.     printf("%d  ", err);
  343.     DFSDsetNT(DFNT_INT8);
  344.     err = DFSDadddata(FILENAME, rank, dims, i8);
  345.     printf("%d  ", err);
  346.     DFSDsetNT(DFNT_UINT8);
  347.     err = DFSDadddata(FILENAME, rank, dims, ui8);
  348.     printf("%d  ", err);
  349.     DFSDsetNT(DFNT_INT16);
  350.     err = DFSDadddata(FILENAME, rank, dims, i16);
  351.     printf("%d  ", err);
  352.     DFSDsetNT(DFNT_UINT16);
  353.     err = DFSDadddata(FILENAME, rank, dims, ui16);
  354.     printf("%d  ", err);
  355.     DFSDsetNT(DFNT_INT32);
  356.     err = DFSDadddata(FILENAME, rank, dims, i32);
  357.     printf("%d  ", err);
  358.     DFSDsetNT(DFNT_UINT32);
  359.     err = DFSDadddata(FILENAME, rank, dims, ui32);
  360.     printf("%d\n\n", err);
  361.  
  362.     printf("Reading arrays from single file... ");
  363.     err = DFSDgetdata(FILENAME, rank, dims, tf64);
  364.     printf("%d  ", err);
  365.     err = DFSDgetdata(FILENAME, rank, dims, tf32);
  366.     printf("%d  ", err);
  367.     err = DFSDgetdata(FILENAME, rank, dims, ti8);
  368.     printf("%d  ", err);
  369.     err = DFSDgetdata(FILENAME, rank, dims, tui8);
  370.     printf("%d  ", err);
  371.     err = DFSDgetdata(FILENAME, rank, dims, ti16);
  372.     printf("%d  ", err);
  373.     err = DFSDgetdata(FILENAME, rank, dims, tui16);
  374.     printf("%d  ", err);
  375.     err = DFSDgetdata(FILENAME, rank, dims, ti32);
  376.     printf("%d  ", err);
  377.     err = DFSDgetdata(FILENAME, rank, dims, tui32);
  378.     printf("%d\n", err);
  379.  
  380.     printf("Checking arrays from single file...\n\n");
  381.     err = 0;
  382.     for (i=0; i<10; i++)
  383.     for (j=0; j<10; j++)
  384.        if (f64[i][j] != tf64[i][j])
  385.            err = 1;
  386.     if (err == 1 ) {
  387.     printf(">>> Test failed for float64 array.\n");
  388.     number_failed++;
  389.     }
  390.     else
  391.     printf("Test passed for float64 array.\n");
  392.  
  393.     err = 0;
  394.     for (i=0; i<10; i++)
  395.     for (j=0; j<10; j++)
  396.        if (f32[i][j] != tf32[i][j])
  397.            err = 1;
  398.     if (err == 1 ) {
  399.     printf(">>> Test failed for float32 array.\n");
  400.     number_failed++;
  401.     }
  402.     else
  403.     printf("Test passed for float32 array.\n");
  404.  
  405.     err = 0;
  406.     for (i=0; i<10; i++)
  407.     for (j=0; j<10; j++)
  408.        if (i8[i][j] != ti8[i][j])
  409.            err = 1;
  410.     if (err == 1 ) {
  411.     printf(">>> Test failed for int8 array.\n");
  412.     number_failed++;
  413.     }
  414.     else
  415.     printf("Test passed for int8 array.\n");
  416.  
  417.     err = 0;
  418.     for (i=0; i<10; i++)
  419.     for (j=0; j<10; j++)
  420.        if (ui8[i][j] != tui8[i][j])
  421.            err = 1;
  422.     if (err == 1 ) {
  423.     printf(">>> Test failed for uint8 array.\n");
  424.     number_failed++;
  425.     }
  426.     else
  427.     printf("Test passed for uint8 array.\n");
  428.  
  429.     err = 0;
  430.     for (i=0; i<10; i++)
  431.     for (j=0; j<10; j++)
  432.        if (i16[i][j] != ti16[i][j])
  433.            err = 1;
  434.     if (err == 1 ) {
  435.     printf(">>> Test failed for int16 array.\n");
  436.     number_failed++;
  437.     }
  438.     else
  439.     printf("Test passed for int16 array.\n");
  440.  
  441.     err = 0;
  442.     for (i=0; i<10; i++)
  443.     for (j=0; j<10; j++)
  444.        if (ui16[i][j] != tui16[i][j])
  445.            err = 1;
  446.     if (err == 1 ) {
  447.     printf(">>> Test failed for uint16 array.\n");
  448.     number_failed++;
  449.     }
  450.     else
  451.     printf("Test passed for uint16 array.\n");
  452.  
  453.     err = 0;
  454.     for (i=0; i<10; i++)
  455.     for (j=0; j<10; j++)
  456.        if (i32[i][j] != ti32[i][j])
  457.            err = 1;
  458.     if (err == 1 ) {
  459.     printf(">>> Test failed for int32 array.\n");
  460.     number_failed++;
  461.     }
  462.     else
  463.     printf("Test passed for int32 array.\n");
  464.  
  465.     err = 0;
  466.     for (i=0; i<10; i++)
  467.     for (j=0; j<10; j++)
  468.        if (ui32[i][j] != tui32[i][j])
  469.            err = 1;
  470.     if (err == 1 ) {
  471.     printf(">>> Test failed for uint32 array.\n");
  472.     number_failed++;
  473.     }
  474.     else
  475.     printf("Test passed for uint32 array.\n");
  476.  
  477.     if (number_failed > 0 ) {
  478.     printf("\n\t>>> %d TESTS FAILED <<<\n\n", number_failed);
  479.     }
  480.     else
  481.     printf("\n\t>>> ALL TESTS PASSED <<<\n\n");
  482.  
  483. }
  484.