mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-11 16:40:36 +08:00
234 lines
6.2 KiB
C++
234 lines
6.2 KiB
C++
!/*********************************************************************
|
|
! * Copyright 1996, UCAR/Unidata
|
|
! * See netcdf/COPYRIGHT file for copying and redistribution conditions.
|
|
! * $Id: tests.inc,v 1.16 2009/04/02 18:29:21 dmh Exp $
|
|
! *********************************************************************/
|
|
!!!!
|
|
! Do not tabify this unless you like hitting the 72 char limit !!!
|
|
!!!
|
|
#ifndef UD_TESTS_INC
|
|
#define UD_TESTS_INC
|
|
|
|
|
|
!/* The following prevents non-FORTRAN code from appearing in the output. */
|
|
#if defined(__osf__)
|
|
# undef _POSIX_SOURCE
|
|
# define _POSIX_SOURCE
|
|
#endif
|
|
|
|
#define NO_NETCDF_2 1
|
|
|
|
#include "nfconfig.inc"
|
|
|
|
!/* Parameters of test data */
|
|
|
|
#ifdef NF_INT1_T
|
|
# define NF_B 1
|
|
#else
|
|
# define NF_B 0
|
|
#endif
|
|
#ifdef NF_INT2_T
|
|
# define NF_S 1
|
|
#else
|
|
# define NF_S 0
|
|
#endif
|
|
! Total number of FORTRAN types:
|
|
#define NUM_FORTRAN_TYPES (3 + NF_S + NF_B)
|
|
#undef NF_B
|
|
#undef NF_S
|
|
|
|
#define NTYPES 6
|
|
#define NDIMS 5
|
|
#define NVARS 136
|
|
#define NRECS 2
|
|
#define NGATTS NTYPES
|
|
#define RECDIM 1
|
|
#define MAX_RANK 3
|
|
#define MAX_NELS 64
|
|
#define MAX_DIM_LEN 4
|
|
#define MAX_NATTS 3
|
|
|
|
|
|
!/*
|
|
! * Limits of external types (based on those in ncx.h):
|
|
! */
|
|
#define X_CHAR_MIN 0
|
|
#define X_CHAR_MAX 127
|
|
#define X_INT1_MIN (-128)
|
|
#define X_INT1_MAX 127
|
|
#define X_INT2_MIN (-32768)
|
|
#define X_INT2_MAX 32767
|
|
#define X_INT_MIN (-2147483647-1)
|
|
#define X_INT_MAX 2147483647
|
|
#if 0
|
|
#define X_REAL_MAX 3.4028234663852886e+38
|
|
#else
|
|
#define X_REAL_MAX 3.4028234663852886e+37
|
|
#endif
|
|
#define X_REAL_MIN (-X_FLOAT_MAX)
|
|
#if 0
|
|
#define X_DOUBLE_MAX 1.7976931348623157E+308
|
|
#else
|
|
#define X_DOUBLE_MAX 1.7976931348623157D+200
|
|
#endif
|
|
#define X_DOUBLE_MIN (-X_DOUBLE_MAX)
|
|
|
|
#define X_BYTE_MIN X_INT1_MIN
|
|
#define X_BYTE_MAX X_INT1_MAX
|
|
#define X_SHORT_MIN X_INT2_MIN
|
|
#define X_SHORT_MAX X_INT2_MAX
|
|
#define X_FLOAT_MIN X_REAL_MIN
|
|
#define X_FLOAT_MAX X_REAL_MAX
|
|
|
|
|
|
!/*
|
|
! * Examples of invalid argument values:
|
|
! */
|
|
#define BAD_ID -1
|
|
#define BAD_DIMID -1
|
|
#define BAD_VARID -2
|
|
#define BAD_ATTNUM -1
|
|
#define BAD_TYPE 0
|
|
#define BAD_FILLMODE -1
|
|
#define BAD_NAME 'a/b'
|
|
|
|
|
|
!/*
|
|
! * Internal data types:
|
|
! */
|
|
#define NFT_UNSPECIFIED 0
|
|
#define NFT_TEXT 16
|
|
#define NFT_CHAR NFT_TEXT
|
|
#define NFT_INT1 17
|
|
#define NFT_INT2 18
|
|
#define NFT_INT 20
|
|
#define NFT_REAL 36
|
|
#define NFT_DOUBLE 40
|
|
|
|
|
|
!/*
|
|
! * Define a macro for trimming trailing blanks from character variables.
|
|
! */
|
|
#define TRIM(string) string(1:len_trim(string))
|
|
|
|
|
|
!
|
|
! FORTRAN GETARG() subroutine:
|
|
!
|
|
#ifdef __hpux
|
|
# define getarg getarg_
|
|
#endif
|
|
|
|
|
|
#endif /* UD_TESTS_INC */
|
|
|
|
|
|
#include "netcdf.inc"
|
|
|
|
|
|
! /* Global variables - filenames */
|
|
|
|
CHARACTER*80 testfile !/* netCDF read-only test data */
|
|
CHARACTER*80 scratch !/* netCDF test file for writing */
|
|
|
|
! /* Global variables - command-line arguments */
|
|
|
|
LOGICAL CREATE_FILE
|
|
LOGICAL READONLY
|
|
LOGICAL VERBOSE
|
|
INTEGER NFAILS
|
|
INTEGER MAX_NMPT !/* max num messages per test */
|
|
|
|
! /* Global variables - test data */
|
|
|
|
CHARACTER*2 DIM_NAME(NDIMS)
|
|
INTEGER DIM_LEN(NDIMS)
|
|
CHARACTER*(2+MAX_RANK) VAR_NAME(NVARS)
|
|
INTEGER VAR_TYPE(NVARS)
|
|
INTEGER VAR_RANK(NVARS)
|
|
INTEGER VAR_DIMID(MAX_RANK,NVARS)
|
|
INTEGER VAR_SHAPE(MAX_RANK,NVARS)
|
|
INTEGER VAR_NELS(NVARS)
|
|
INTEGER VAR_NATTS(NVARS)
|
|
CHARACTER*2 ATTNAME(MAX_NATTS,NVARS)
|
|
CHARACTER*2 GATT_NAME(NGATTS)
|
|
INTEGER ATTTYPE(NGATTS,NVARS)
|
|
INTEGER GATT_TYPE(NGATTS)
|
|
INTEGER ATTLEN(MAX_NATTS,NVARS)
|
|
INTEGER GATT_LEN(NGATTS)
|
|
|
|
! /* Miscellaneous global variables: */
|
|
CHARACTER*80 PROGNAME !/* name of the program */
|
|
INTEGER NFAILSTOTAL
|
|
|
|
! /* Common blocks for global variables: */
|
|
|
|
COMMON /LOGCOM/ CREATE_FILE,
|
|
* READONLY, !/* don't try to change files */
|
|
* VERBOSE !/* print details of tests */
|
|
|
|
COMMON /TXTCOM/ TESTFILE,
|
|
* SCRATCH,
|
|
* DIM_NAME,
|
|
* VAR_NAME,
|
|
* ATTNAME,
|
|
* GATT_NAME,
|
|
* PROGNAME
|
|
|
|
COMMON /INTCOM/ NFAILS, !/* number of failures in
|
|
* ! * specific test */
|
|
* DIM_LEN,
|
|
* VAR_TYPE,
|
|
* VAR_RANK,
|
|
* VAR_DIMID,
|
|
* VAR_SHAPE,
|
|
* VAR_NELS,
|
|
* VAR_NATTS,
|
|
* ATTTYPE,
|
|
* GATT_TYPE,
|
|
* ATTLEN,
|
|
* GATT_LEN,
|
|
* MAX_NMPT,
|
|
* NFAILSTOTAL
|
|
|
|
|
|
! /* Functions for accessing attribute test data */
|
|
! /* varid is -1 for NC_GLOBAL so can do global atts in same loop */
|
|
|
|
!/* EXTERNAL ATT_NAME */
|
|
|
|
INTEGER VARID
|
|
INTEGER NATTS
|
|
CHARACTER*2 ATT_NAME
|
|
INTEGER ATT_TYPE
|
|
INTEGER ATT_LEN
|
|
|
|
|
|
LOGICAL INRANGE
|
|
LOGICAL INRANGE_UCHAR
|
|
LOGICAL INRANGE_FLOAT
|
|
|
|
LOGICAL INRANGE3
|
|
LOGICAL IN_INTERNAL_RANGE
|
|
LOGICAL EQUAL
|
|
LOGICAL INT_VEC_EQ
|
|
INTEGER ROLL
|
|
INTEGER INDEX2INDEXES
|
|
INTEGER INDEX2NCINDEXES
|
|
INTEGER INDEXES2INDEX
|
|
INTEGER NC2DBL
|
|
INTEGER DBL2NC
|
|
INTEGER LEN_TRIM
|
|
DOUBLEPRECISION HASH
|
|
DOUBLEPRECISION HASH4
|
|
DOUBLEPRECISION HASH_TEXT
|
|
DOUBLEPRECISION HASH_INT1
|
|
DOUBLEPRECISION HASH_INT2
|
|
DOUBLEPRECISION HASH_INT
|
|
DOUBLEPRECISION HASH_REAL
|
|
DOUBLEPRECISION HASH_DOUBLE
|
|
DOUBLEPRECISION INTERNAL_MIN
|
|
DOUBLEPRECISION INTERNAL_MAX
|
|
DOUBLEPRECISION EXTERNAL_MIN
|
|
DOUBLEPRECISION EXTERNAL_MAX
|