fixed lang. top-level unlimited problem and added tests for it

This commit is contained in:
Dennis Heimbigner 2011-02-17 17:36:57 +00:00
parent b9358f5890
commit 2f86aab292
10 changed files with 178 additions and 7 deletions

View File

@ -19,7 +19,8 @@ ref_tst_vlen_data.cdl ref_typescope.cdl sfc_pres_temp.cdl \
simple_xy.cdl small.cdl small2.cdl test0.cdl tst_ncml.cdl \
bigf1.cdl bigf2.cdl bigf3.cdl bigr1.cdl bigr2.cdl bigr3.cdl \
n3time.cdl ref_tst_special_atts3.cdl ref_tst_unlim2.cdl ref_tst_chardata.cdl \
ref_solar.cdl
ref_solar.cdl unlimtest1.cdl unlimtest2.cdl

View File

@ -0,0 +1,11 @@
netcdf unlimtest1 {
dimensions:
npractices = 7 ;
ncounty_ids = UNLIMITED ; // (0 currently)
nyears = 10 ;
ncrops = 3 ;
variables:
int crop_harvest(ncounty_ids, nyears, npractices) ;
data:
crop_harvest = 111, 2011, 13, 1, 2, 3;
}

View File

@ -0,0 +1,28 @@
netcdf unlimtest1 {
types:
compound CROP_HARVESTING_ACREAGE {
ushort county_id ;
ushort year ;
ubyte prac_code ;
ushort planted_acres(3) ;
ushort harvested_acres(3) ;
float yield(3) ;
float percent_comp(3) ;
}; // CROP_HARVESTING_ACREAGE
dimensions:
npractices = 7 ;
ncounty_ids = UNLIMITED ; // (0 currently)
nyears = 10 ;
ncrops = 3 ;
variables:
CROP_HARVESTING_ACREAGE crop_harvest(ncounty_ids, nyears, npractices) ;
crop_harvest:long_name = "crop harvest attributes by\ncounty ID, year and practice" ;
data:
crop_harvest =
{111, 2011, 13,
{1, 2, 3},
{101, 102, 103},
{1.5, 2.5, 3.5},
{0.1, 0.2, 0.3}
} ;
}

View File

@ -18,7 +18,7 @@ ref_tst_string_data.dmp ref_tst_unicode.dmp ref_tst_utf8.dmp \
ref_tst_vlen_data.dmp ref_typescope.dmp sfc_pres_temp.dmp \
simple_xy.dmp small.dmp small2.dmp test0.dmp tst_ncml.dmp \
n3time.dmp ref_tst_special_atts3.dmp ref_tst_chardata.dmp ref_tst_unlim2.dmp \
ref_solar.dmp
ref_solar.dmp unlimtest1.dmp unlimtest2.dmp
# These do not exist because they are not run as usual tests
# bigf1.dmp bigf2.dmp bigf3.dmp bigr1.dmp bigr2.dmp bigr3.dmp gfs1.dmp

View File

@ -0,0 +1,22 @@
netcdf unlimtest1 {
dimensions:
npractices = 7 ;
ncounty_ids = UNLIMITED ; // (1 currently)
nyears = 10 ;
ncrops = 3 ;
variables:
int crop_harvest(ncounty_ids, nyears, npractices) ;
data:
crop_harvest =
111, 2011, 13, 1, 2, 3, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _,
_, _, _, _, _, _, _ ;
}

View File

@ -0,0 +1,103 @@
netcdf unlimtest2 {
types:
compound CROP_HARVESTING_ACREAGE {
ushort county_id ;
ushort year ;
ubyte prac_code ;
ushort planted_acres(3) ;
ushort harvested_acres(3) ;
float yield(3) ;
float percent_comp(3) ;
}; // CROP_HARVESTING_ACREAGE
dimensions:
npractices = 7 ;
ncounty_ids = UNLIMITED ; // (1 currently)
nyears = 10 ;
ncrops = 3 ;
variables:
CROP_HARVESTING_ACREAGE crop_harvest(ncounty_ids, nyears, npractices) ;
crop_harvest:long_name = "crop harvest attributes by\ncounty ID, year and practice" ;
data:
crop_harvest =
{111, 2011, 13, {1, 2, 3}, {101, 102, 103}, {1.5, 2.5, 3.5}, {0.1, 0.2, 0.3}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}},
{65535, 65535, 255, {65535, 65535, 0}, {0, 65535, 65535}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ;
}

View File

@ -32,7 +32,8 @@ ref_tst_small \
small2 \
tst_ncml
n3time \
ref_tst_chardata"
ref_tst_chardata \
unlimtest1"
NONCLASSIC3="\
test0 \
@ -73,7 +74,8 @@ ref_tst_solar_2 \
ref_tst_enum_data \
ref_tst_special_atts \
ref_tst_nans \
ref_solar"
ref_solar \
unlimtest2"
SPECIALTESTS3="ref_tst_special_atts3"

View File

@ -54,13 +54,14 @@ cdata_array(Symbol* vsym,
size_t count;
Symbol* basetype = vsym->typ.basetype;
int lastdim = (index == (rank - 1)); /* last dimension*/
int firstdim = (index == 0); /* first dimension*/
int isunlimited = (odom->declsize[index] == 0);
ASSERT(index >= 0 && index < rank);
count = odom->count[index];
if(isunlimited && issublist(src)) {
if(!firstdim && isunlimited && issublist(src)) {
srcpush(src);
pushed = 1;
}

View File

@ -49,6 +49,7 @@ f77data_array(Symbol* vsym,
{
int i;
int rank = odom->rank;
int firstdim = (index == 0); /* last dimension*/
int lastdim = (index == (rank - 1)); /* last dimension*/
size_t count;
Symbol* basetype = vsym->typ.basetype;
@ -59,7 +60,7 @@ f77data_array(Symbol* vsym,
count = odom->count[index];
if(isunlimited && issublist(src)) {
if(!firstdim && isunlimited && issublist(src)) {
srcpush(src);
pushed = 1;
}

View File

@ -23,6 +23,7 @@ jdata_array(Symbol* vsym,
{
int i;
int rank = odom->rank;
int firstdim = (index == 0); /* first dimension*/
int lastdim = (index == (rank - 1)); /* last dimension*/
size_t count;
Symbol* basetype = vsym->typ.basetype;
@ -33,7 +34,8 @@ jdata_array(Symbol* vsym,
count = odom->count[index];
if(isunlimited && issublist(src)) {
/* Unpack the nested unlimited (unless first dimension)*/
if(!firstdim && isunlimited && issublist(src)) {
srcpush(src);
pushed = 1;
}