home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / hdf / unix / hdf3_2r2.lha / HDF3.2r2 / test / tsdmms.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-28  |  13.3 KB  |  458 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.4 $";
  27. #endif
  28. /*
  29. $Header: /hdf/hdf/v3.2r2/test/RCS/tsdmms.c,v 1.4 1992/08/27 22:19:29 chouck beta koziol $
  30.  
  31. $Log: tsdmms.c,v $
  32.  * Revision 1.4  1992/08/27  22:19:29  chouck
  33.  * Added test for calibration tags
  34.  *
  35.  * Revision 1.3  1992/07/08  22:05:20  sxu
  36.  * Changed DFSDgetmaxmin() to DFSDgetrange().
  37.  * Changed DFSDsetmaxmin() to DFSDsetrange().
  38.  *
  39.  * Revision 1.2  1992/05/31  15:25:21  mfolk
  40.  * Changed declaration of rank and dims[2] to int32 for Convex.
  41.  *
  42.  * Revision 1.1  1992/02/26  20:08:43  mfolk
  43.  * Initial revision
  44.  *
  45. */
  46. #include "hdf.h"
  47. #include "dfsd.h"
  48.  
  49. float32 f32[10][10], tf32[10][10];
  50. float32 f32scale[10], tf32scale[10];
  51. float32 f32max = 40.0, f32min = 0.0;
  52. float32 tf32max, tf32min;
  53.  
  54. int8 i8[10][10], ti8[10][10];
  55. int8 i8scale[10], ti8scale[10];
  56. int8 i8max = 127, i8min = -128;
  57. int8 ti8max, ti8min;
  58.  
  59. uint8 ui8[10][10], tui8[10][10];
  60. uint8 ui8scale[10], tui8scale[10];
  61. uint8 ui8max = 255, ui8min = 0;
  62. uint8 tui8max, tui8min;
  63.  
  64. int16 i16[10][10], ti16[10][10];
  65. int16 i16scale[10], ti16scale[10];
  66. int16 i16max = 1200, i16min = -1200;
  67. int16 ti16max, ti16min;
  68.  
  69. uint16 ui16[10][10], tui16[10][10];
  70. uint16 ui16scale[10], tui16scale[10];
  71. uint16 ui16max = 20000, ui16min = 0;
  72. uint16 tui16max, tui16min;
  73.  
  74. int32 i32[10][10], ti32[10][10];
  75. int32 i32scale[10], ti32scale[10];
  76. int32 i32max = 99999999, i32min = -999999999;
  77. int32 ti32max, ti32min;
  78.  
  79. uint32 ui32[10][10], tui32[10][10];
  80. uint32 ui32scale[10], tui32scale[10];
  81. uint32 ui32max = 999999999, ui32min = 0;
  82. uint32 tui32max, tui32min;
  83.  
  84. float64 cal1, cal2, cal3, cal4;
  85. int32   cal5;
  86.  
  87. float64 ical1, ical2, ical3, ical4;
  88. int32   ical5;
  89.  
  90. int main()
  91. {
  92.     int i, j, err, err1, err2, err3, err4;
  93.     int32 rank, dims[2];
  94.     int number_failed = 0;
  95.  
  96.  
  97.     rank = 2;
  98.     dims[0] = 10;
  99.     dims[1] = 10;
  100.  
  101.     printf("Creating arrays...\n");
  102.  
  103.     for (i=0; i<10; i++) {
  104.         for (j=0; j<10; j++) {
  105.         f32[i][j] = (i * 40) + j;    /* range: 0 ~ 4-billion */
  106.  
  107.         i8[i][j] = (i * 10) + j;        /* range: 0 ~ 100 */
  108.         ui8[i][j] = (i * 20) + j;        /* range: 0 ~ 200 */
  109.  
  110.         i16[i][j] = (i * 3000) + j;        /* range: 0 ~ 30000 */
  111.         ui16[i][j] = (i * 6000) + j;    /* range: 0 ~ 60000 */
  112.  
  113.         i32[i][j] = (i * 20) + j;    /* range: 0 ~ 2-billion */
  114.         ui32[i][j] = (i * 40) + j;    /* range: 0 ~ 4-billion */
  115.     }
  116.  
  117.     f32scale[i] = (i * 40) + j;    /* range: 0 ~ 4-billion */
  118.  
  119.     i8scale[i] = (i * 10) + j;        /* range: 0 ~ 100 */
  120.     ui8scale[i] = (i * 20) + j;        /* range: 0 ~ 200 */
  121.  
  122.     i16scale[i] = (i * 3000) + j;        /* range: 0 ~ 30000 */
  123.     ui16scale[i] = (i * 6000) + j;    /* range: 0 ~ 60000 */
  124.  
  125.     i32scale[i] = (i * 20) + j;    /* range: 0 ~ 2-billion */
  126.     ui32scale[i] = (i * 40) + j;    /* range: 0 ~ 4-billion */
  127.     }
  128.  
  129.     cal1 = 10.0;
  130.     cal2 =  0.0;
  131.     cal3 = 27.0;
  132.     cal4 =  1.5;
  133.     cal5 = DFNT_INT16;
  134.  
  135.     DFSDsetdims(rank, dims);
  136.  
  137.     printf("Writing arrays to single file...\n");
  138.     DFSDsetNT(DFNT_FLOAT32);
  139.     err3=DFSDsetdimscale(1, (int32)10, (void *)f32scale);
  140.     err2=DFSDsetrange(&f32max, &f32min);
  141.     err4=DFSDsetcal(cal1, cal2, cal3, cal4, cal5);
  142.     err = DFSDputdata("ntcheck.hdf", rank, dims, f32);
  143.     if (err3==FAIL || err2==FAIL || err==FAIL || err4==FAIL) 
  144.         number_failed++;
  145.     printf("%d, %d, %d, %d\n", err3, err2, err, err4);
  146.  
  147.     DFSDsetNT(DFNT_INT8);
  148.     err3=DFSDsetdimscale(1, (int32)10, (void *)i8scale);
  149.     err2=DFSDsetrange(&i8max, &i8min);
  150.     err = DFSDadddata("ntcheck.hdf", rank, dims, i8);
  151.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  152.         number_failed++;
  153.     printf("%d, %d, %d\n", err3, err2, err);
  154.  
  155.     DFSDsetNT(DFNT_UINT8);
  156.     err3=DFSDsetdimscale(1, (int32)10, (void *)ui8scale);
  157.     err2=DFSDsetrange(&ui8max, &ui8min);
  158.     err = DFSDadddata("ntcheck.hdf", rank, dims, ui8);
  159.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  160.         number_failed++;
  161.     printf("%d, %d, %d\n", err3, err2, err);
  162.  
  163.     DFSDsetNT(DFNT_INT16);
  164.     err3=DFSDsetdimscale(1, (int32)10, (void *)i16scale);
  165.     err2=DFSDsetrange(&i16max, &i16min);
  166.     err = DFSDadddata("ntcheck.hdf", rank, dims, i16);
  167.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  168.         number_failed++;
  169.     printf("%d, %d, %d\n", err3, err2, err);
  170.  
  171.     DFSDsetNT(DFNT_UINT16);
  172.     err3=DFSDsetdimscale(1, (int32)10, (void *)ui16scale);
  173.     err2=DFSDsetrange(&ui16max, &ui16min);
  174.     err = DFSDadddata("ntcheck.hdf", rank, dims, ui16);
  175.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  176.         number_failed++;
  177.     printf("%d, %d, %d\n", err3, err2, err);
  178.  
  179.     DFSDsetNT(DFNT_INT32);
  180.     err3=DFSDsetdimscale(1, (int32)10, (void *)i32scale);
  181.     err2=DFSDsetrange(&i32max, &i32min);
  182.     err = DFSDadddata("ntcheck.hdf", rank, dims, i32);
  183.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  184.         number_failed++;
  185.     printf("%d, %d, %d\n", err3, err2, err);
  186.  
  187.     DFSDsetNT(DFNT_UINT32);
  188.     err3= DFSDsetdimscale(1, (int32)10, (void *)ui32scale);
  189.     err2=DFSDsetrange(&ui32max, &ui32min);
  190.     err = DFSDadddata("ntcheck.hdf", rank, dims, ui32);
  191.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  192.         number_failed++;
  193.     printf("%d, %d, %d\n", err3, err2, err);
  194.  
  195.     printf("Reading arrays from single file...\n");
  196.  
  197.     err = DFSDgetdata("ntcheck.hdf", rank, dims, tf32);
  198.     err2 = DFSDgetdimscale(1, (int32)10, (void *)tf32scale);
  199.     err3 = DFSDgetrange(&tf32max, &tf32min);
  200.     err4 = DFSDgetcal(&ical1,&ical2, &ical3, &ical4, &ical5);
  201.     if (err3==FAIL || err2==FAIL || err==FAIL || err4==FAIL) 
  202.         number_failed++;
  203.     printf("%d, %d, %d, %d\n", err3, err2, err, err4);
  204.  
  205.     err = DFSDgetdata("ntcheck.hdf", rank, dims, ti8);
  206.     err2 = DFSDgetdimscale(1, (int32)10, (void *)ti8scale);
  207.     err3 = DFSDgetrange(&ti8max, &ti8min);
  208.     err4 = DFSDgetcal(&ical1,&ical2, &ical3, &ical4, &ical5);
  209.     if (err3==FAIL || err2==FAIL || err==FAIL || err4 != FAIL) 
  210.         number_failed++;
  211.     printf("%d, %d, %d, %d\n", err, err2, err3, err4 + 1);
  212.  
  213.     err = DFSDgetdata("ntcheck.hdf", rank, dims, tui8);
  214.     err2 = DFSDgetdimscale(1, (int32)10, (void *)tui8scale);
  215.     err3 = DFSDgetrange(&tui8max, &tui8min);
  216.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  217.         number_failed++;
  218.     printf("%d, %d, %d\n", err, err2, err3);
  219.  
  220.     err = DFSDgetdata("ntcheck.hdf", rank, dims, ti16);
  221.     err2 = DFSDgetdimscale(1, (int32)10, (void *)ti16scale);
  222.     err3 = DFSDgetrange(&ti16max, &ti16min);
  223.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  224.         number_failed++;
  225.     printf("%d, %d, %d\n", err, err2, err3);
  226.  
  227.     err = DFSDgetdata("ntcheck.hdf", rank, dims, tui16);
  228.     err2 = DFSDgetdimscale(1, (int32)10, (void *)tui16scale);
  229.     err3 = DFSDgetrange(&tui16max, &tui16min);
  230.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  231.         number_failed++;
  232.     printf("%d, %d, %d\n", err, err2, err3);
  233.  
  234.     err = DFSDgetdata("ntcheck.hdf", rank, dims, ti32);
  235.     err2 = DFSDgetdimscale(1, (int32)10, (void *)ti32scale);
  236.     err3 = DFSDgetrange(&ti32max, &ti32min);
  237.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  238.         number_failed++;
  239.     printf("%d, %d, %d\n", err, err2, err3);
  240.  
  241.     err = DFSDgetdata("ntcheck.hdf", rank, dims, tui32);
  242.     err2 = DFSDgetdimscale(1, (int32)10, (void *)tui32scale);
  243.     err3 = DFSDgetrange(&tui32max, &tui32min);
  244.     if (err3==FAIL || err2==FAIL || err==FAIL) 
  245.         number_failed++;
  246.     printf("%d, %d, %d\n", err, err2, err3);
  247.  
  248.     printf("Checking arrays from single file...\n\n");
  249.     err = 0;
  250.     err1 = 0;
  251.     err2 = 0;
  252.     for (i=0; i<10; i++) {
  253.     for (j=0; j<10; j++)
  254.        if (f32[i][j] != tf32[i][j])
  255.            err = 1;
  256.     if (f32scale[i] != tf32scale[i])
  257.         err2 = 1;
  258.     }
  259.     if ((f32max != tf32max) || (f32min != tf32min)) 
  260.         err1 = 1;
  261.  
  262.     number_failed += err + err1 + err2;
  263.     if (err == 1) 
  264.     printf(">>> Test failed for float32 array.\n");
  265.     else 
  266.     printf("Test passed for float32 array.\n");
  267.     if (err2 == 1) 
  268.     printf(">>> Test failed for float32 scales.\n");
  269.     else 
  270.     printf("Test passed for float32 scales.\n");
  271.     if (err1 == 1)
  272.     printf(">>> Test failed for float32 max/min.\n");
  273.     else 
  274.     printf("Test passed for float32 max/min.\n");
  275.  
  276.     if((cal1 != ical1) ||
  277.        (cal2 != ical2) ||
  278.        (cal3 != ical3) ||
  279.        (cal4 != ical4) ||
  280.        (cal5 != ical5))
  281.         {
  282.             printf(">>> Test failed for float32 calibration.\n");
  283.             printf(" Is %f %f %f %f %d\n", ical1, ical2, ical3, ical4, ical5);
  284.             printf(" sld be %f %f %f %f %d\n", cal1, cal2, cal3, cal4, cal5);
  285.         }
  286.     else 
  287.     printf("Test passed for float32 calibration.\n");
  288.  
  289.     err = 0;
  290.     err1 = 0;
  291.     err2 = 0;
  292.     for (i=0; i<10; i++) {
  293.     for (j=0; j<10; j++)
  294.        if (i8[i][j] != ti8[i][j])
  295.            err = 1;
  296.     if (i8scale[i] != ti8scale[i])
  297.         err2 = 1;
  298.     }
  299.     if ((i8max != ti8max) || (i8min != ti8min)) 
  300.         err1 = 1;
  301.  
  302.     number_failed += err + err1 + err2;
  303.     if (err == 1)
  304.     printf(">>> Test failed for int8 array.\n");
  305.     else
  306.     printf("Test passed for int8 array.\n");
  307.     if (err2 == 1)
  308.     printf(">>> Test failed for int8 scales.\n");
  309.     else
  310.     printf("Test passed for int8 scales.\n");
  311.     if (err1 == 1)
  312.     printf(">>> Test failed for int8 max/min.\n");
  313.     else
  314.     printf("Test passed for int8 max/min.\n");
  315.  
  316.     err = 0;
  317.     err1 = 0;
  318.     err2 = 0;
  319.     for (i=0; i<10; i++) {
  320.     for (j=0; j<10; j++)
  321.        if (ui8[i][j] != tui8[i][j])
  322.            err = 1;
  323.     if (ui8scale[i] != tui8scale[i])
  324.         err2 = 1;
  325.     }
  326.     if ((ui8max != tui8max) || (ui8min != tui8min))
  327.         err1 = 1;
  328.  
  329.     number_failed += err + err1 + err2;
  330.     if (err == 1)
  331.     printf(">>> Test failed for uint8 array.\n");
  332.     else
  333.     printf("Test passed for uint8 array.\n");
  334.     if (err2 == 1)
  335.     printf(">>> Test failed for uint8 scales.\n");
  336.     else
  337.     printf("Test passed for uint8 scales.\n");
  338.     if  (err1 == 1)
  339.     printf(">>> Test failed for uint8 max/min.\n");
  340.     else
  341.     printf("Test passed for uint8 max/min.\n");
  342.  
  343.     err = 0;
  344.     err1 = 0;
  345.     err2 = 0;
  346.     for (i=0; i<10; i++) {
  347.     for (j=0; j<10; j++)
  348.        if (i16[i][j] != ti16[i][j])
  349.            err = 1;
  350.     if (i16scale[i] != ti16scale[i])
  351.         err2 = 1;
  352.     }
  353.     if ((i16max != ti16max) || (i16min != ti16min))
  354.         err1 = 1;
  355.  
  356.     number_failed += err + err1 + err2;
  357.     if (err == 1)
  358.     printf(">>> Test failed for int16 array.\n");
  359.     else
  360.     printf("Test passed for int16 array.\n");
  361.     if (err2 == 1)
  362.     printf(">>> Test failed for int16 scales.\n");
  363.     else
  364.     printf("Test passed for int16 scales.\n");
  365.     if (err1 == 1)
  366.     printf(">>> Test failed for int16 max/min.\n");
  367.     else
  368.     printf("Test passed for int16 max/min.\n");
  369.  
  370.     err = 0;
  371.     err1 = 0;
  372.     err2 = 0;
  373.     for (i=0; i<10; i++) {
  374.     for (j=0; j<10; j++)
  375.        if (ui16[i][j] != tui16[i][j])
  376.            err = 1;
  377.     if (ui16scale[i] != tui16scale[i])
  378.         err2 = 1;
  379.     }
  380.     if ((ui16max != tui16max) || (ui16min != tui16min))
  381.         err1 = 1;
  382.  
  383.     number_failed += err + err1 + err2;
  384.     if (err == 1)
  385.     printf(">>> Test failed for uint16 array.\n");
  386.     else
  387.     printf("Test passed for uint16 array.\n");
  388.     if (err2 == 1)
  389.     printf(">>> Test failed for uint16 scales.\n");
  390.     else
  391.     printf("Test passed for uint16 scales.\n");
  392.     if (err1 == 1)
  393.     printf(">>> Test failed for uint16 max/min.\n");
  394.     else
  395.     printf("Test passed for uint16 max/min.\n");
  396.  
  397.     err = 0;
  398.     err1 = 0;
  399.     err2 = 0;
  400.     for (i=0; i<10; i++) {
  401.     for (j=0; j<10; j++)
  402.        if (i32[i][j] != ti32[i][j])
  403.            err = 1;
  404.     if (i32scale[i] != ti32scale[i])
  405.         err2 = 1;
  406.     }
  407.     if ((i32max != ti32max) || (i32min != ti32min))
  408.         err1 = 1;
  409.  
  410.     number_failed += err + err1 + err2;
  411.     if (err == 1)
  412.     printf(">>> Test failed for int32 array.\n");
  413.     else
  414.     printf("Test passed for int32 array.\n");
  415.     if (err2 == 1)
  416.     printf(">>> Test failed for int32 scales.\n");
  417.     else
  418.     printf("Test passed for int32 scales.\n");
  419.     if (err1 == 1)
  420.     printf(">>> Test failed for int32 max/min.\n");
  421.     else
  422.     printf("Test passed for int32 max/min.\n");
  423.  
  424.     err = 0;
  425.     err1 = 0;
  426.     err2 = 0;
  427.     for (i=0; i<10; i++) {
  428.     for (j=0; j<10; j++)
  429.        if (ui32[i][j] != tui32[i][j])
  430.            err = 1;
  431.     if (ui32scale[i] != tui32scale[i])
  432.         err2 = 1;
  433.     }
  434.     if ((ui32max != tui32max) || (ui32min != tui32min))
  435.         err1 = 1;
  436.  
  437.     number_failed += err + err1 + err2;
  438.     if (err == 1)
  439.     printf(">>> Test failed for uint32 array.\n");
  440.     else
  441.     printf("Test passed for uint32 array.\n");
  442.     if (err2 == 1)
  443.     printf(">>> Test failed for uint32 scales.\n");
  444.     else
  445.     printf("Test passed for uint32 scales.\n");
  446.     if (err1 == 1)
  447.     printf(">>> Test failed for uint32 max/min.\n");
  448.     else
  449.     printf("Test passed for uint32 max/min.\n");
  450.  
  451.     if (number_failed > 0 ) {
  452.         printf("\n\t>>> %d TESTS FAILED <<<\n\n", number_failed);
  453.     }
  454.     else
  455.         printf("\n\t>>> ALL TESTS PASSED <<<\n\n");
  456.  
  457. }
  458.