1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
/* This is a test for the NCEPLIBS-g2c project. This test is for
* the simpack() and simunpack() functions.
*
* Ed Hartnett 10/28/21
*/
#include "grib2_int.h"
#include <stdio.h>
#include <stdlib.h>
#define DATA_LEN 4
#define PACKED_LEN 40
g2int simunpack(unsigned char *cpack, g2int *idrstmpl, g2int ndpts,
float *fld);
int
main()
{
printf("Testing simple packing/unpacking functions.\n");
printf("Testing simpack() call...");
{
g2int ndpts = DATA_LEN;
float fld[DATA_LEN] = {1.0, 2.0, 3.0, 0.0};
float fld_in[DATA_LEN];
unsigned char cpack[PACKED_LEN];
g2int lcpack;
g2int idrstmpl[5] = {0, 1, 1, 16, 0};
int i;
/* Pack the data. */
simpack(fld, ndpts, idrstmpl, cpack, &lcpack);
/* Unpack the data. */
if (simunpack(cpack, idrstmpl, ndpts, fld_in))
return G2C_ERROR;
for (i = 0; i < DATA_LEN; i++)
{
/* printf("%g %g\n", fld[i], fld_in[i]); */
if (fld[i] != fld_in[i])
return G2C_ERROR;
}
}
printf("ok!\n");
printf("Testing simpack() call with constant field..");
{
g2int ndpts = DATA_LEN;
float fld[DATA_LEN] = {3.0, 3.0, 3.0, 3.0};
float fld_in[DATA_LEN];
unsigned char cpack[PACKED_LEN];
g2int lcpack;
g2int idrstmpl[5] = {0, 1, 1, 16, 0};
int i;
/* Pack the data. */
simpack(fld, ndpts, idrstmpl, cpack, &lcpack);
/* Unpack the data. */
if (simunpack(cpack, idrstmpl, ndpts, fld_in))
return G2C_ERROR;
for (i = 0; i < DATA_LEN; i++)
{
/* printf("%g %g\n", fld[i], fld_in[i]); */
if (fld[i] != fld_in[i])
return G2C_ERROR;
}
}
printf("ok!\n");
printf("Testing simpack() call with idrstmpl[1] = 1, nbits = 0...");
{
g2int ndpts = DATA_LEN;
float fld[DATA_LEN] = {1.0, 2.0, 3.0, 0.0};
float fld_in[DATA_LEN];
unsigned char cpack[PACKED_LEN];
g2int lcpack;
g2int idrstmpl[5] = {0, 1, 1, 0, 0};
int i;
/* Pack the data. */
simpack(fld, ndpts, idrstmpl, cpack, &lcpack);
/* Unpack the data. */
if (simunpack(cpack, idrstmpl, ndpts, fld_in))
return G2C_ERROR;
for (i = 0; i < DATA_LEN; i++)
{
/* printf("%g %g\n", fld[i], fld_in[i]); */
if (fld[i] != fld_in[i])
return G2C_ERROR;
}
}
printf("ok!\n");
printf("Testing simpack() call with idrstmpl[1] = 0, nbits = 0...");
{
g2int ndpts = DATA_LEN;
float fld[DATA_LEN] = {1.0, 2.0, 3.0, 0.0};
float fld_in[DATA_LEN];
unsigned char cpack[PACKED_LEN];
g2int lcpack;
g2int idrstmpl[5] = {0, 0, 1, 0, 0};
int i;
/* Pack the data. */
simpack(fld, ndpts, idrstmpl, cpack, &lcpack);
/* Unpack the data. */
if (simunpack(cpack, idrstmpl, ndpts, fld_in))
return G2C_ERROR;
for (i = 0; i < DATA_LEN; i++)
{
/* printf("%g %g\n", fld[i], fld_in[i]); */
if (fld[i] != fld_in[i])
return G2C_ERROR;
}
}
printf("ok!\n");
printf("Testing simpack() call with idrstmpl[1] = 0, nbits = 16...");
{
g2int ndpts = DATA_LEN;
float fld[DATA_LEN] = {1.0, 2.0, 3.0, 0.0};
float fld_in[DATA_LEN];
unsigned char cpack[PACKED_LEN];
g2int lcpack;
g2int idrstmpl[5] = {0, 0, 1, 16, 0};
int i;
/* Pack the data. */
simpack(fld, ndpts, idrstmpl, cpack, &lcpack);
/* Unpack the data. */
if (simunpack(cpack, idrstmpl, ndpts, fld_in))
return G2C_ERROR;
for (i = 0; i < DATA_LEN; i++)
{
/* printf("%g %g\n", fld[i], fld_in[i]); */
if (fld[i] != fld_in[i])
return G2C_ERROR;
}
}
printf("ok!\n");
printf("SUCCESS!\n");
return 0;
}
|