File: sdstr.c

package info (click to toggle)
libhdf4 4.3.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 30,384 kB
  • sloc: ansic: 128,700; sh: 15,015; fortran: 12,444; java: 5,863; xml: 1,205; makefile: 794; yacc: 678; pascal: 418; perl: 360; javascript: 203; lex: 163; csh: 41
file content (124 lines) | stat: -rw-r--r-- 4,458 bytes parent folder | download | duplicates (2)
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
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF.  The full HDF 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/HDF/releases/.  *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/***************************************************************
**
** This program tests correctness of writing and read datastrings
** and dimension strings.
** To avoid the '\0' inserted by strncpy, compare the first 14
** characters of output and input strings in subroutine compare()
**
****************************************************************/

#include "tproto.h"

static int number_failed = 0;

static void compare(const char *outstring, const char *instring);

void
test_tsdstr(void)
{
    int         i, j, ret;
    intn        rank;
    int32       dims[2];
    float32     f32[10][10], tf32[10][10];
    const char *datalabel = "Datalabel", *dataunit = "Dataunit", *datafmt = "Datafmt", *coordsys = "coordsys";
    char        in_datalabel[256], in_dataunit[256], in_datafmt[256], in_coordsys[256];

    const char *dimlabels[2], *dimunits[2], *dimfmts[2];
    char        in_dimlabels[2][256], in_dimunits[2][256], in_dimfmts[2][256];

    rank    = 2;
    dims[0] = 10;
    dims[1] = 10;

    dimlabels[0] = "c_dim1_label_a";
    dimunits[0]  = "c_dim1_unit_a";
    dimfmts[0]   = "c_dim1_fmt_a";

    dimlabels[1] = "c_dim2_label_b";
    dimunits[1]  = "c_dim2_unit_b";
    dimfmts[1]   = "c_dim2_fmt_b";

    MESSAGE(5, printf("Creating arrays...\n"););

    for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            f32[i][j] = (float32)((i * 10) + j); /* range: 0 ~ 4-billion */
        }
    }

    ret = DFSDsetdims(rank, dims);
    RESULT("DFSDsetdims");
    /* individual files */
    MESSAGE(5, printf("Testing arrays in individual files...\n"););

    ret = DFSDsetNT(DFNT_NFLOAT32);
    RESULT("DFSDsetNT");
    ret = DFSDsetdims(rank, dims);
    RESULT("DFSDsetdims");

    ret = DFSDsetdatastrs(datalabel, dataunit, datafmt, coordsys);
    RESULT("DFSDsetdatastrs");
    ret = DFSDsetdimstrs(1, dimlabels[0], dimunits[0], dimfmts[0]);
    RESULT("DFSDsetdimstrs");
    ret = DFSDsetdimstrs(2, dimlabels[1], dimunits[1], dimfmts[1]);
    RESULT("DFSDsetdimstrs");

    ret = DFSDputdata("sdstrings.hdf", rank, dims, (void *)f32);
    RESULT("DFSDputdata");

    ret = DFSDgetdata("sdstrings.hdf", rank, dims, (void *)tf32);
    RESULT("DFSDgetdata");

    ret = DFSDgetdatastrs(in_datalabel, in_dataunit, in_datafmt, in_coordsys);
    RESULT("DFSDgetdatastrs");
    ret = DFSDgetdimstrs(1, in_dimlabels[0], in_dimunits[0], in_dimfmts[0]);
    RESULT("DFSDgetdimstrs");
    ret = DFSDgetdimstrs(2, in_dimlabels[1], in_dimunits[1], in_dimfmts[1]);
    RESULT("DFSDgetdimstrs");

    compare(datalabel, in_datalabel);
    compare(dataunit, in_dataunit);
    compare(datafmt, in_datafmt);
    compare(coordsys, in_coordsys);

    compare(dimlabels[0], in_dimlabels[0]);
    compare(dimunits[0], in_dimunits[0]);
    compare(dimfmts[0], in_dimfmts[0]);

    compare(dimlabels[1], in_dimlabels[1]);
    compare(dimunits[1], in_dimunits[1]);
    compare(dimfmts[1], in_dimfmts[1]);

    if (number_failed > 0) {
        MESSAGE(7, printf("\n\t>>> %d TESTS FAILED <<<\n\n", number_failed);)
    }
    else
        MESSAGE(7, printf("\n\t>>> ALL TESTS PASSED <<<\n\n");)

    num_errs = num_errs + number_failed;
}

static void
compare(const char *outstring, const char *instring)
{
    if (0 == strcmp(outstring, instring))
        MESSAGE(5, printf("Test passed for %s\n", outstring);)
    else {
        MESSAGE(5, printf(">>> Test failed for %s\n", outstring););
        MESSAGE(5, printf("    Input string =  %s\n", instring););
        number_failed++;
    }
}