Repository: ioos/compliance-checker

Issue:
ACDD Test NetCDF file is not included in this repo
The tests aren't very robust (read: only one test), but never the less it shouldn't be hardcoded like this.  That file should be included in the compliance_checker/tests/data folder and referenced from there.  



Discussion:
I agree. Also, something that I would like to see integrated with compliance checker at some point is not to include the netCDF files into the project but just the CDLs. 

For example:

https://github.com/ioos/cc-plugin-ncei/blob/master/cc_plugin_ncei/tests/resources.py

This module will compile a CDL file into a netCDF file if the .nc file doesn't exist, which would allow us to only have to commit the CDL files and not the binary netCDF files.


Resolving patch:
diff --git a/compliance_checker/cf/util.py b/compliance_checker/cf/util.py
--- a/compliance_checker/cf/util.py
+++ b/compliance_checker/cf/util.py
@@ -218,8 +218,8 @@ def get_coordinate(self, coord):
         if coord not in self.ds.variables:
             return
         if coord in self.reference_map:
-            if self.obj.name == coord:
-                self.reference_variables.add(self.obj.name)
+            if self.name == coord:
+                self.reference_variables.add(self.name)
             return self.reference_map[coord]
         return NCGraph(self.ds, coord, self.ds.variables[coord], self.reference_variables, self.reference_map)
 


Test patch:
diff --git a/compliance_checker/tests/data/2dim-grid.cdl b/compliance_checker/tests/data/2dim-grid.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/2dim-grid.cdl
@@ -0,0 +1,31 @@
+netcdf \2dim-grid {
+dimensions:
+	lev = 5 ;
+	yc = 2 ;
+	xc = 2 ;
+variables:
+	float T(lev, yc, xc) ;
+		T:long_name = "temperature" ;
+		T:units = "K" ;
+		T:coordinates = "lon lat" ;
+	float xc(xc) ;
+		xc:axis = "X" ;
+		xc:long_name = "x-coordinate in Cartesian system" ;
+		xc:units = "m" ;
+	float yc(yc) ;
+		yc:axis = "Y" ;
+		yc:long_name = "y-coordinate in Cartesian system" ;
+		yc:units = "m" ;
+	float lev(lev) ;
+		lev:long_name = "pressure level" ;
+		lev:units = "hPa" ;
+	float lon(yc, xc) ;
+		lon:long_name = "longitude" ;
+		lon:units = "degrees_east" ;
+	float lat(yc, xc) ;
+		lat:long_name = "latitude" ;
+		lat:units = "degrees_north" ;
+	float quality_control(yc, xc) ;
+		quality_control:long_name = "quality control" ;
+		quality_control:flag_meanings = "flag meanings" ;
+}
diff --git a/compliance_checker/tests/data/bad_data_type.cdl b/compliance_checker/tests/data/bad_data_type.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/bad_data_type.cdl
@@ -0,0 +1,57 @@
+netcdf bad_data_type {
+dimensions:
+	time = UNLIMITED ; // (3 currently)
+	latitude = 1 ;
+	longitude = 1 ;
+variables:
+	double time(time) ;
+	double latitude(latitude) ;
+		latitude:units = "Degrees_N" ;
+		latitude:axis = "Y" ;
+		latitude:bounds = "salinity" ;
+	double longitude(longitude) ;
+		longitude:units = "Degrees_E" ;
+		longitude:compress = "longitude latitude" ;
+	int64 temp(time, time) ;
+		temp:_FillValue = -999L ;
+		temp:valid_min = 0L ;
+		temp:valid_max = 10L ;
+		temp:units = "K" ;
+		temp:add_offset = "c" ;
+		temp:scale_factor = 5L ;
+		temp:compress = "time longitudeZZ" ;
+	double salinity(latitude, longitude, time) ;
+		salinity:_FillValue = 1. ;
+		salinity:valid_min = -10L ;
+		salinity:valid_max = 10L ;
+		salinity:institution = 10L ;
+		salinity:units = "Chad Pennington" ;
+		salinity:standard_name = "Chadwick Penington" ;
+		salinity:axis = "Time" ;
+		salinity:coordinates = "latitude longitudeZZ time" ;
+		salinity:add_offset = 5. ;
+		salinity:scale_factor = 5. ;
+	double longitudeZZ(longitude) ;
+		longitudeZZ:_FillValue = 1. ;
+		longitudeZZ:coordinates = "longitude" ;
+
+// global attributes:
+		:featureType = "pointzz" ;
+data:
+
+ time = _, _, _ ;
+
+ latitude = _ ;
+
+ longitude = _ ;
+
+ temp =
+  {1, 0, 1},
+  {1, 1, 0},
+  {_, 1, 0} ;
+
+ salinity =
+  {0.0776476799782908, 0.774116051694633, _} ;
+
+ longitudeZZ = _ ;
+}
diff --git a/compliance_checker/tests/data/bad_missing_data.cdl b/compliance_checker/tests/data/bad_missing_data.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/bad_missing_data.cdl
@@ -0,0 +1,59 @@
+netcdf bad_missing_data {
+dimensions:
+	time = UNLIMITED ; // (3 currently)
+	strlen = 14 ;
+	latitude = 1 ;
+	longitude = 1 ;
+variables:
+	double time(time) ;
+		time:_FillValue = -999.9 ;
+	double latitude(latitude) ;
+		latitude:units = "Degrees_N" ;
+		latitude:axis = "Y" ;
+	double longitude(longitude) ;
+		longitude:units = "Degrees_E" ;
+	int64 temp(time, time) ;
+		temp:_FillValue = -999L ;
+		temp:valid_min = 0L ;
+		temp:valid_max = 10L ;
+		temp:units = "K" ;
+	double salinity(latitude, longitude, time) ;
+		salinity:_FillValue = 1. ;
+		salinity:valid_min = -10L ;
+		salinity:valid_max = 10L ;
+		salinity:institution = 10L ;
+		salinity:units = "Chad Pennington" ;
+		salinity:standard_name = "Chadwick Penington" ;
+		salinity:axis = "Time" ;
+		salinity:coordinates = "latitude longitudeZZ time" ;
+	int64 longitudeZZ(longitude) ;
+		longitudeZZ:_FillValue = 1L ;
+	char geo_regionZ(strlen) ;
+		geo_regionZ:standard_name = "region" ;
+	char geo_region(strlen) ;
+		geo_region:standard_name = "region" ;
+
+// global attributes:
+		:featureType = "point" ;
+data:
+
+ time = 1, _, _ ;
+
+ latitude = _ ;
+
+ longitude = _ ;
+
+ temp =
+  {1, 0, 1},
+  {1, 1, 0},
+  {_, 1, 0} ;
+
+ salinity =
+  {0, _, 2} ;
+
+ longitudeZZ = _ ;
+
+ geo_regionZ = "The_Hood_Dawgz" ;
+
+ geo_region = "Atlantic_Ocean" ;
+}
diff --git a/compliance_checker/tests/data/bad_region.cdl b/compliance_checker/tests/data/bad_region.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/bad_region.cdl
@@ -0,0 +1,55 @@
+netcdf bad_region {
+dimensions:
+	time = UNLIMITED ; // (3 currently)
+	strlen = 14 ;
+	latitude = 1 ;
+	longitude = 1 ;
+variables:
+	double time(time) ;
+	double latitude(latitude) ;
+		latitude:units = "Degrees_N" ;
+		latitude:axis = "Y" ;
+	double longitude(longitude) ;
+		longitude:units = "Degrees_E" ;
+	int64 temp(time, time) ;
+		temp:_FillValue = -999L ;
+		temp:valid_min = 0L ;
+		temp:valid_max = 10L ;
+		temp:units = "K" ;
+	double salinity(latitude, longitude, time) ;
+		salinity:_FillValue = 1. ;
+		salinity:valid_min = -10L ;
+		salinity:valid_max = 10L ;
+		salinity:institution = 10L ;
+		salinity:units = "Chad Pennington" ;
+		salinity:standard_name = "Chadwick Penington" ;
+		salinity:axis = "Time" ;
+		salinity:coordinates = "latitude longitudeZZ time" ;
+	double longitudeZZ(longitude) ;
+		longitudeZZ:_FillValue = 1. ;
+	char geo_regionZ(strlen) ;
+		geo_regionZ:standard_name = "region" ;
+	char geo_region(strlen) ;
+		geo_region:standard_name = "region" ;
+data:
+
+ time = _, _, _ ;
+
+ latitude = _ ;
+
+ longitude = _ ;
+
+ temp =
+  {1, 0, 1},
+  {1, 1, 0},
+  {_, 1, 0} ;
+
+ salinity =
+  {0.65873145682807, 0.715646913770724, _} ;
+
+ longitudeZZ = _ ;
+
+ geo_regionZ = "The_Hood_Dawgz" ;
+
+ geo_region = "Atlantic_Ocean" ;
+}
diff --git a/compliance_checker/tests/data/cont_ragged.cdl b/compliance_checker/tests/data/cont_ragged.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/cont_ragged.cdl
@@ -0,0 +1,65 @@
+netcdf cont_ragged {
+dimensions:
+	profile = 4 ;
+	obs = 10 ;
+	name_strlen = 50 ;
+variables:
+	double lat ;
+		lat:units = "degrees_north" ;
+		lat:long_name = "station latitude" ;
+		lat:standard_name = "latitude" ;
+	double lon ;
+		lon:units = "degrees_east" ;
+		lon:long_name = "station longitude" ;
+		lon:standard_name = "longitude" ;
+	int station_info ;
+		station_info:long_name = "station info" ;
+	char station_name(name_strlen) ;
+		station_name:cf_role = "timeseries_id" ;
+		station_name:long_name = "station name" ;
+	int profile(profile) ;
+		profile:cf_role = "profile_id" ;
+	int time(profile) ;
+		time:long_name = "time" ;
+		time:standard_name = "time" ;
+		time:units = "seconds since 1990-01-01 00:00:00" ;
+		time:missing_value = -999 ;
+	int row_size(profile) ;
+		row_size:long_name = "number of obs in this profile" ;
+		row_size:sample_dimension = "obs" ;
+	float height(obs) ;
+		height:long_name = "height above sea surface" ;
+		height:standard_name = "height" ;
+		height:units = "meters" ;
+		height:axis = "Z" ;
+		height:positive = "up" ;
+	float temperature(obs) ;
+		temperature:standard_name = "sea_water_temperature" ;
+		temperature:long_name = "Water Temperature" ;
+		temperature:units = "Celsius" ;
+		temperature:coordinates = "time lat lon height" ;
+		temperature:missing_value = -999.9f ;
+
+// global attributes:
+		:Conventions = "CF-1.6" ;
+		:featureType = "timeSeriesProfile" ;
+data:
+
+ lat = 37.5 ;
+
+ lon = -76.5 ;
+
+ station_info = 0 ;
+
+ station_name = "Station1" ;
+
+ profile = 0, 1, 2, 3 ;
+
+ time = 0, 3600, 7200, 10800 ;
+
+ row_size = 2, 2, 3, 3 ;
+
+ height = 0.5, 1.5, 0.5, 1.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5 ;
+
+ temperature = 6.7, 6.9, 6.8, 7.9, 6.8, 7.9, 8.4, 5.7, 9.2, 8.3 ;
+}
diff --git a/compliance_checker/tests/data/conv_bad.cdl b/compliance_checker/tests/data/conv_bad.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/conv_bad.cdl
@@ -0,0 +1,8 @@
+netcdf conv_bad {
+
+// global attributes:
+		:featureType = "timeSeries" ;
+		:NCO = "4.4.2" ;
+		:history = "Wed Feb 25 15:12:55 2015: ncatted -a Conventions,global,o,c,NoConvention badconv.nc\nWed Feb 25 15:10:07 2015: ncatted -a Conventions,global,o,c,CF-1.6 ,ACDD awfu.nc\nWed Feb 25 15:09:40 2015: ncks -x -v lat,lon,time,height,water_temp compliance_checker/tests/data/example-grid.nc awfu.nc" ;
+		:Conventions = "NoConvention" ;
+}
diff --git a/compliance_checker/tests/data/conv_multi.cdl b/compliance_checker/tests/data/conv_multi.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/conv_multi.cdl
@@ -0,0 +1,8 @@
+netcdf conv_multi {
+
+// global attributes:
+		:featureType = "timeSeries" ;
+		:NCO = "4.4.2" ;
+		:history = "Wed Feb 25 15:10:07 2015: ncatted -a Conventions,global,o,c,CF-1.6 ,ACDD awfu.nc\nWed Feb 25 15:09:40 2015: ncks -x -v lat,lon,time,height,water_temp compliance_checker/tests/data/example-grid.nc awfu.nc" ;
+		:Conventions = "CF-1.6 ,ACDD" ;
+}
diff --git a/compliance_checker/tests/data/coordinates_and_metadata.cdl b/compliance_checker/tests/data/coordinates_and_metadata.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/coordinates_and_metadata.cdl
@@ -0,0 +1,16 @@
+netcdf coordinates_and_metadata {
+dimensions:
+	time = 5 ;
+	latitude = 1 ;
+	longitude = 1 ;
+variables:
+	double time(time) ;
+	double temp(time) ;
+		temp:ancillary_variables = "temp_quality_control" ;
+		temp:standard_name = "temp" ;
+	double temp_quality_control(time) ;
+		temp_quality_control:standard_name = "temp_quality_control" ;
+
+// global attributes:
+		:featureType = "pointzz" ;
+}
diff --git a/compliance_checker/tests/data/dimensionless.cdl b/compliance_checker/tests/data/dimensionless.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/dimensionless.cdl
@@ -0,0 +1,20 @@
+netcdf dimensionless {
+dimensions:
+	time = UNLIMITED ; // (0 currently)
+	i = 1 ;
+	j = 1 ;
+	k = 1 ;
+	lev = 1 ;
+variables:
+	float ps(time, j, i) ;
+		ps:units = "dbar" ;
+		ps:standard_name = "pressure" ;
+	float ptop ;
+		ptop:long_name = "Boundary atmosphere pressure" ;
+		ptop:units = "dbar" ;
+	float lev(lev) ;
+		lev:long_name = "sigma at layer midpoints" ;
+		lev:positive = "up" ;
+		lev:standard_name = "atmosphere_sigma_coordinate" ;
+		lev:formula_terms = "sigma: lev ps: ps ptop: ptop" ;
+}
diff --git a/compliance_checker/tests/data/example-grid.cdl b/compliance_checker/tests/data/example-grid.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/example-grid.cdl
@@ -0,0 +1,42 @@
+netcdf example-grid {
+dimensions:
+	lat = 20 ;
+	lon = 20 ;
+	time = UNLIMITED ; // (0 currently)
+	height = 2 ;
+variables:
+	double lat(lat) ;
+		lat:units = "degrees_north" ;
+		lat:long_name = "latitude" ;
+		lat:standard_name = "latitude" ;
+		lat:axis = "Y" ;
+	double lon(lon) ;
+		lon:units = "degrees_east" ;
+		lon:long_name = "longitude" ;
+		lon:standard_name = "longitude" ;
+		lon:axis = "X" ;
+	double time(time) ;
+		time:units = "seconds since 1970-01-01" ;
+		time:standard_name = "time" ;
+		time:long_name = "Time, unix time-stamp" ;
+		time:calendar = "standard" ;
+	int height(height) ;
+		height:units = "m" ;
+		height:positive = "down" ;
+		height:axis = "Z" ;
+		height:standard_name = "height" ;
+		height:long_name = "Depth in meters" ;
+	short water_temp(time, height, lat, lon) ;
+		water_temp:_FillValue = -30000s ;
+		water_temp:long_name = "Water Temperature" ;
+		water_temp:standard_name = "sea_water_temperature" ;
+		water_temp:units = "degC" ;
+		water_temp:missing_value = -30000s ;
+		water_temp:scale_factor = 0.001 ;
+		water_temp:add_offset = 20. ;
+		water_temp:NAVO_code = 15L ;
+		water_temp:coordinates = "time height lat lon" ;
+
+// global attributes:
+		:featureType = "timeSeries" ;
+}
diff --git a/compliance_checker/tests/data/index_ragged.cdl b/compliance_checker/tests/data/index_ragged.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/index_ragged.cdl
@@ -0,0 +1,267 @@
+netcdf index_ragged {
+dimensions:
+	obs = UNLIMITED ; // (213 currently)
+	trajectory = 10 ;
+	name_strlen = 50 ;
+variables:
+	float lat(obs) ;
+		lat:units = "degrees_north" ;
+		lat:long_name = "station latitude" ;
+		lat:standard_name = "latitude" ;
+	float lon(obs) ;
+		lon:units = "degrees_east" ;
+		lon:long_name = "station longitude" ;
+		lon:standard_name = "longitude" ;
+	int trajectory_info(trajectory) ;
+		trajectory_info:long_name = "trajectory info" ;
+		trajectory_info:missing_value = -999 ;
+	char trajectory_name(trajectory, name_strlen) ;
+		trajectory_name:cf_role = "trajectory_id" ;
+		trajectory_name:long_name = "trajectory name" ;
+	int trajectory_index(obs) ;
+		trajectory_index:long_name = "index of trajectory this obs belongs to" ;
+		trajectory_index:instance_dimension = "trajectory" ;
+	int time(obs) ;
+		time:long_name = "time of measurement" ;
+		time:standard_name = "time" ;
+		time:units = "seconds since 1990-01-01 00:00:00" ;
+		time:missing_value = -999 ;
+	float z(obs) ;
+		z:long_name = "height above mean sea level" ;
+		z:standard_name = "altitude" ;
+		z:units = "m" ;
+		z:positive = "up" ;
+		z:axis = "Z" ;
+		z:missing_value = -999.9f ;
+	float temperature(obs) ;
+		temperature:long_name = "Air Temperature" ;
+		temperature:standard_name = "air_temperature" ;
+		temperature:units = "Celsius" ;
+		temperature:coordinates = "time lat lon z" ;
+		temperature:missing_value = -999.9f ;
+	float humidity(obs) ;
+		humidity:long_name = "Humidity" ;
+		humidity:standard_name = "specific_humidity" ;
+		humidity:units = "Percent" ;
+		humidity:coordinates = "time lat lon z" ;
+		humidity:missing_value = -999.9f ;
+
+// global attributes:
+		:Conventions = "CF-1.6" ;
+		:featureType = "trajectory" ;
+data:
+
+ lat = 11.25615, 26.10413, 22.41421, 22.18116, 2.177301, 14.65077, 8.425178, 
+    33.27557, 7.699538, 12.65807, 22.59023, 35.84382, 41.75186, 44.95267, 
+    41.49166, 31.4028, 20.86521, 29.92925, 40.79485, 7.187255, 37.35788, 
+    17.61622, 29.03985, 44.19264, 21.68499, 22.39728, 12.24242, 26.04828, 
+    29.84989, 11.87822, 0.4776838, 35.66367, 31.27619, 23.92727, 12.09872, 
+    3.706677, 13.97815, 2.305441, 0.1856368, 0.3515074, 36.93685, 25.41243, 
+    30.47535, 17.78078, 7.249343, 24.00756, 44.45137, 36.97704, 30.41355, 
+    39.9559, 7.445425, 21.05626, 5.065194, 2.547434, 3.349946, 23.44335, 
+    2.681866, 18.70734, 4.612935, 2.512696, 37.66089, 30.70432, 42.76654, 
+    33.08486, 6.084778, 39.70843, 28.33197, 1.223405, 38.01586, 3.699682, 
+    2.316901, 35.92374, 30.71458, 20.204, 4.404234, 13.65772, 22.67983, 
+    17.34453, 15.95195, 19.13686, 43.36827, 36.43596, 16.88155, 5.257358, 
+    7.246674, 1.400879, 15.63431, 42.32153, 15.68266, 33.21914, 40.09315, 
+    28.85555, 20.94757, 12.3212, 36.19291, 30.34604, 32.3859, 30.51254, 
+    3.334529, 11.59718, 8.42951, 28.87055, 3.602655, 34.14508, 37.11425, 
+    41.03566, 24.49625, 6.173713, 8.171118, 32.33793, 37.4291, 24.66317, 
+    40.02692, 40.21726, 2.723573, 27.94735, 28.4283, 20.29399, 33.83424, 
+    33.06853, 21.15303, 12.59542, 37.33821, 37.76236, 30.25255, 13.93048, 
+    1.547064, 7.328507, 9.377513, 29.12751, 3.766602, 40.7905, 16.42247, 
+    35.71611, 15.67354, 26.41485, 8.666093, 3.303721, 3.405675, 19.47607, 
+    20.71446, 9.468412, 36.72459, 3.348803, 44.85631, 39.74762, 29.31821, 
+    4.541548, 11.51457, 41.51421, 40.40759, 4.126002, 36.88403, 22.56794, 
+    16.48313, 38.77134, 32.14177, 17.71075, 3.117972, 2.657588, 15.24631, 
+    2.316706, 9.206306, 6.183945, 19.74638, 3.791813, 32.1823, 0.7473986, 
+    34.80326, 2.932063, 24.79398, 31.73436, 10.17321, 44.13942, 0.4635795, 
+    32.58381, 2.969093, 0.7101297, 6.049965, 23.23353, 19.27657, 37.33231, 
+    6.420473, 24.66804, 0.8633785, 42.47254, 43.24734, 25.53198, 43.51039, 
+    10.20917, 30.8017, 21.22977, 15.69756, 20.59331, 31.61997, 16.75511, 
+    5.537777, 44.28425, 22.34849, 6.084063, 36.75227, 13.18288, 25.23589, 
+    42.4052, 8.214571, 15.91778, 40.54069, 1.812273, 21.60521, 41.05975, 
+    26.5076, 19.88841, 38.60466 ;
+
+ lon = -5.989336, -2.662698, -23.53803, -34.35585, -58.38861, -52.61451, 
+    -0.7129942, -52.05439, -34.31932, -42.76257, -15.92119, -46.72515, 
+    -44.9617, -63.97917, -41.69743, -8.890802, -31.29523, -61.6931, 
+    -52.59704, -50.17197, -37.69957, -57.86943, -70.20708, -58.25657, 
+    -46.1655, -53.94893, -75.69691, -8.550176, -38.24889, -3.490612, 
+    -39.24084, -3.612438, -47.12128, -48.02716, -55.01497, -59.63803, 
+    -38.12038, -50.87202, -30.13649, -14.03829, -7.792219, -72.6375, 
+    -20.88588, -53.71122, -55.1488, -41.42715, -1.574568, -37.43023, 
+    -7.373155, -29.56204, -50.04349, -20.28753, -36.01645, -7.64748, 
+    -49.57981, -2.64897, -9.46538, -46.31868, -2.049518, -64.91229, 
+    -68.88179, -42.89665, -51.48783, -6.27085, -62.04066, -30.79151, 
+    -2.580461, -21.22981, -7.61332, -16.17166, -23.74372, -61.22404, 
+    -72.97459, -20.26349, -20.53997, -3.180203, -49.06118, -37.38556, 
+    -65.62891, -13.13425, -67.3617, -62.12461, -15.67471, -15.32692, 
+    -40.40166, -72.79348, -28.02558, -31.81828, -1.080388, -67.15468, 
+    -72.98028, -17.48965, -61.34195, -35.70835, -1.923249, -21.76571, 
+    -12.04998, -74.69545, -30.8238, -75.83024, -57.93318, -30.22355, 
+    -71.86282, -34.07526, -18.59933, -52.08774, -6.3491, -52.88477, 
+    -15.02928, -41.72115, -10.90716, -13.49223, -66.11868, -19.19154, 
+    -24.1513, -28.1119, -33.80967, -23.85966, -69.89976, -59.48049, -57.7855, 
+    -56.86527, -45.3292, -21.1472, -20.11768, -32.99857, -26.61098, 
+    -34.56091, -58.16519, -65.28774, -3.262689, -27.42458, -44.577, 
+    -18.71307, -75.23668, -50.39792, -37.36423, -59.43841, -13.20477, 
+    -43.58611, -8.478054, -19.66856, -14.8859, -31.48991, -62.27028, 
+    -61.14234, -53.99629, -58.88906, -31.54302, -35.90159, -54.26013, 
+    -41.56313, -59.35286, -49.54479, -57.84679, -2.264266, -7.235641, 
+    -64.94084, -65.73678, -54.36418, -64.24323, -52.50892, -71.1492, 
+    -4.25458, -10.47351, -37.3678, -69.27312, -29.40901, -16.01023, 
+    -12.14635, -41.12995, -56.01423, -65.60724, -74.3843, -69.52895, 
+    -69.94255, -46.57818, -6.044638, -73.67628, -36.0216, -47.81919, 
+    -46.84343, -21.60306, -7.668083, -68.5562, -70.67887, -34.45117, 
+    -60.26342, -64.72975, -40.86289, -26.85923, -61.6675, -52.7378, 
+    -72.34982, -7.364043, -18.06771, -34.36699, -65.99042, -52.3617, 
+    -45.11955, -74.25336, -40.7113, -41.43104, -30.44535, -18.81168, 
+    -26.02182, -15.331, -29.46848, -58.86243, -63.42926, -10.08484, 
+    -26.79434, -1.817341 ;
+
+ trajectory_info = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
+
+ trajectory_name =
+  "Trajectory0",
+  "Trajectory1",
+  "Trajectory2",
+  "Trajectory3",
+  "Trajectory4",
+  "Trajectory5",
+  "Trajectory6",
+  "Trajectory7",
+  "Trajectory8",
+  "Trajectory9" ;
+
+ trajectory_index = 8, 3, 4, 4, 5, 4, 7, 2, 9, 0, 3, 4, 1, 7, 9, 3, 3, 4, 9, 
+    9, 9, 7, 9, 8, 3, 4, 7, 3, 9, 0, 4, 2, 6, 3, 1, 8, 4, 2, 8, 9, 5, 4, 7, 
+    0, 0, 0, 7, 0, 2, 7, 7, 3, 1, 0, 6, 1, 2, 1, 0, 9, 6, 1, 6, 5, 2, 3, 4, 
+    9, 2, 9, 1, 9, 0, 7, 6, 3, 4, 8, 2, 9, 3, 7, 8, 6, 7, 6, 7, 5, 1, 1, 3, 
+    3, 7, 1, 3, 0, 9, 2, 7, 6, 8, 1, 1, 4, 1, 9, 7, 4, 2, 9, 6, 0, 4, 7, 0, 
+    7, 7, 3, 1, 7, 1, 7, 4, 9, 9, 6, 5, 6, 4, 8, 9, 7, 0, 5, 7, 9, 5, 8, 4, 
+    1, 2, 9, 8, 0, 7, 2, 4, 0, 3, 5, 2, 0, 6, 4, 7, 4, 6, 0, 4, 4, 6, 7, 2, 
+    8, 6, 6, 4, 2, 1, 7, 7, 1, 3, 2, 7, 9, 8, 4, 2, 1, 2, 7, 1, 7, 2, 1, 5, 
+    6, 7, 8, 5, 8, 9, 8, 9, 2, 3, 3, 3, 5, 7, 6, 9, 2, 1, 9, 2, 5, 0, 1, 9, 
+    5, 0 ;
+
+ time = 72000, 111600, 68400, 122400, 162000, 144000, 57600, 36000, 68400, 
+    118800, 21600, 43200, 28800, 108000, 154800, 10800, 136800, 158400, 
+    46800, 158400, 104400, 176400, 36000, 104400, 82800, 28800, 158400, 
+    118800, 133200, 136800, 64800, 79200, 90000, 50400, 90000, 144000, 18000, 
+    36000, 122400, 165600, 172800, 169200, 86400, 3600, 118800, 129600, 
+    115200, 100800, 25200, 129600, 108000, 64800, 21600, 10800, 21600, 18000, 
+    36000, 169200, 79200, 68400, 158400, 54000, 28800, 64800, 46800, 147600, 
+    169200, 111600, 79200, 100800, 151200, 154800, 39600, 126000, 46800, 
+    25200, 136800, 7200, 97200, 79200, 165600, 162000, 118800, 0, 25200, 
+    169200, 169200, 72000, 133200, 122400, 154800, 169200, 82800, 18000, 
+    133200, 144000, 64800, 104400, 68400, 72000, 154800, 90000, 75600, 10800, 
+    32400, 97200, 46800, 172800, 90000, 133200, 3600, 25200, 151200, 36000, 
+    75600, 129600, 151200, 108000, 111600, 151200, 172800, 3600, 28800, 
+    68400, 136800, 90000, 93600, 0, 176400, 82800, 86400, 165600, 154800, 
+    39600, 93600, 115200, 21600, 43200, 61200, 93600, 61200, 50400, 104400, 
+    158400, 147600, 75600, 0, 133200, 0, 126000, 50400, 140400, 108000, 
+    147600, 25200, 126000, 90000, 165600, 100800, 86400, 3600, 97200, 72000, 
+    118800, 144000, 54000, 21600, 86400, 162000, 86400, 154800, 122400, 
+    28800, 93600, 28800, 43200, 172800, 18000, 165600, 151200, 3600, 25200, 
+    54000, 162000, 133200, 28800, 18000, 43200, 86400, 176400, 172800, 
+    104400, 18000, 14400, 151200, 36000, 111600, 3600, 133200, 154800, 
+    147600, 50400, 0, 158400, 118800, 176400, 133200, 133200, 154800, 129600, 
+    136800, 86400, 14400 ;
+
+ z = 12.51808, 7.372036, 5.799932, 20.12702, 1.764841, 19.18218, 4.44464, 
+    0.03310063, 29.50963, 8.532058, 16.35266, 13.58115, 28.27637, 4.366767, 
+    20.38323, 3.586328, 11.11897, 22.30022, 16.46136, 16.86729, 4.325697, 
+    16.50045, 2.312687, 25.4671, 26.26118, 22.33489, 29.15273, 17.85277, 
+    13.19439, 5.735756, 22.62788, 9.360034, 12.95132, 11.07303, 7.477769, 
+    28.16613, 27.99436, 22.90513, 28.66971, 15.94959, 21.66013, 14.11007, 
+    25.57854, 16.84065, 0.415791, 12.5649, 2.325282, 1.742066, 24.94547, 
+    16.64068, 26.13454, 13.14445, 8.728339, 20.30043, 20.88193, 0.08922961, 
+    11.32374, 19.46538, 23.49089, 23.33969, 16.94271, 13.68294, 28.23238, 
+    5.902096, 13.79568, 0.3863254, 16.6489, 7.460392, 1.204016, 21.68154, 
+    17.06803, 12.06111, 15.4019, 26.2678, 9.876749, 29.56433, 14.53347, 
+    6.870228, 29.69398, 2.245085, 28.9268, 4.583749, 29.69282, 13.04906, 
+    1.512483, 22.88785, 13.26198, 22.86892, 12.05387, 21.77244, 20.18067, 
+    20.21082, 18.28759, 9.992888, 4.024284, 11.44874, 18.03653, 0.142246, 
+    24.32986, 21.6673, 22.37223, 24.45863, 1.028929, 11.27909, 12.96912, 
+    29.51361, 16.17835, 16.55074, 16.81288, 0.9152418, 4.687667, 12.44715, 
+    15.05259, 23.95142, 8.311193, 5.329725, 9.22603, 2.188019, 5.634934, 
+    14.02315, 2.931201, 21.93977, 8.667504, 21.51781, 0.1166571, 8.247705, 
+    15.02659, 17.7737, 0.7352603, 5.177349, 24.14933, 15.98668, 6.480564, 
+    5.164011, 9.530041, 21.05122, 18.45421, 7.870076, 0.4085527, 8.535103, 
+    17.55896, 16.71356, 10.36592, 10.28535, 10.61128, 7.40977, 0.4369197, 
+    8.551613, 20.86436, 2.689621, 23.69171, 24.28577, 26.60997, 9.152925, 
+    5.37336, 10.43244, 29.37995, 0.6106723, 24.26659, 23.86881, 21.48618, 
+    0.09007654, 18.17645, 4.797531, 7.067278, 14.12353, 13.73014, 27.95491, 
+    3.776026, 16.52352, 1.692304, 11.92638, 25.06545, 10.02483, 28.19705, 
+    9.880977, 3.647643, 1.075158, 19.46502, 3.479654, 24.82868, 26.67636, 
+    24.10556, 7.428996, 28.01834, 10.31546, 11.68204, 23.85533, 28.76868, 
+    9.559212, 6.03133, 2.056599, 12.88738, 14.75593, 13.85003, 25.33521, 
+    23.70653, 24.96098, 24.8398, 17.94507, 6.896889, 17.03668, 28.3191, 
+    29.14639, 7.3838, 4.964994, 9.436576, 21.62823, 20.98346, 11.14172, 
+    7.991476, 29.63633, 22.9028 ;
+
+ temperature = 14.90271, 24.24385, 1.494066, 6.831084, 27.893, 33.67621, 
+    20.69297, 19.61122, 17.45888, 1.446625, 5.125631, 35.8677, 12.99567, 
+    28.21161, 31.1266, 12.29142, 39.75038, 6.404823, 17.65268, 23.69756, 
+    14.05361, 13.79113, 29.22715, 24.8389, 22.293, 18.33682, 34.71552, 
+    21.25107, 27.40752, 19.85405, 1.102716, 26.13454, 20.0989, 34.58173, 
+    10.09682, 34.69993, 21.41687, 24.60953, 2.707067, 28.78928, 36.26309, 
+    7.720104, 20.29351, 6.168052, 16.10084, 37.99405, 0.5267054, 15.17727, 
+    16.9081, 2.68189, 21.16533, 35.04569, 8.063735, 16.21928, 4.422824, 
+    7.724518, 17.27993, 39.00298, 32.56659, 14.87465, 15.83106, 13.7587, 
+    13.87703, 38.87086, 3.104527, 27.18122, 3.531546, 38.92941, 32.89718, 
+    15.72652, 9.8498, 30.11894, 35.62276, 6.708208, 32.10239, 15.3041, 
+    25.26304, 34.48993, 20.19512, 0.2903271, 3.622684, 2.85062, 12.61744, 
+    23.07567, 0.5586658, 22.41853, 22.86525, 3.229707, 3.379141, 8.767585, 
+    9.436486, 9.661129, 33.93568, 28.27926, 28.42878, 23.78411, 17.47237, 
+    29.69628, 7.52533, 3.482231, 6.826304, 21.11233, 2.944838, 36.02184, 
+    16.79605, 13.76455, 38.61915, 33.59118, 20.93422, 16.73082, 37.01011, 
+    9.472145, 0.05421121, 35.55663, 14.59343, 17.78524, 10.66914, 31.76535, 
+    22.87287, 15.78297, 30.92633, 1.031407, 32.86114, 19.20944, 35.08533, 
+    14.45549, 5.093784, 4.045129, 36.97565, 16.91204, 25.10888, 1.929165, 
+    36.06869, 16.66244, 31.84952, 3.524928, 1.354704, 10.48365, 27.1373, 
+    12.30132, 2.691948, 27.47651, 13.98832, 16.22222, 4.994209, 31.78442, 
+    13.77028, 2.929394, 29.53318, 31.14371, 11.47821, 31.36297, 22.94642, 
+    24.2277, 16.57454, 32.16871, 19.67619, 5.641278, 3.958635, 31.70868, 
+    30.52293, 20.18705, 39.97938, 30.04643, 17.13696, 3.175597, 1.988845, 
+    27.89935, 32.00631, 16.65858, 18.483, 9.31581, 19.38959, 39.51171, 
+    24.08715, 16.227, 22.69785, 36.4146, 1.840191, 11.65769, 36.54749, 
+    12.34812, 37.90659, 28.72273, 12.70363, 34.74529, 12.26348, 2.720131, 
+    2.401074, 6.551149, 25.93415, 29.62659, 21.72955, 16.11036, 2.032868, 
+    1.986544, 14.58139, 10.11439, 10.15086, 22.30464, 17.00665, 39.1347, 
+    21.63502, 3.290949, 38.27164, 21.9019, 17.38786, 22.71373, 25.47452, 
+    32.77483, 38.94097, 21.50251, 23.38549 ;
+
+ humidity = 37.23755, 12.86247, 20.66832, 55.93755, 28.2276, 47.91003, 
+    46.91182, 70.05315, 64.52536, 35.24868, 6.144204, 25.3432, 35.19174, 
+    6.857599, 73.46922, 68.64112, 31.69522, 16.41469, 32.78758, 44.50916, 
+    19.58626, 67.18636, 38.4418, 29.44308, 58.00679, 21.86452, 51.05852, 
+    45.4691, 8.350641, 18.38804, 44.15499, 64.43467, 64.32681, 19.34761, 
+    0.09478192, 62.03254, 21.54085, 52.27968, 32.77289, 68.97393, 20.62231, 
+    20.59801, 65.2218, 79.25449, 69.70883, 54.40137, 15.02394, 17.44944, 
+    61.93802, 71.51801, 11.04534, 7.114886, 10.6127, 15.91914, 1.093509, 
+    40.47393, 31.31579, 61.54602, 32.63131, 58.71174, 74.66438, 29.86826, 
+    44.8269, 6.804867, 51.10857, 47.32163, 39.24802, 29.47629, 49.44198, 
+    12.47171, 54.50966, 66.37208, 79.22325, 73.69112, 59.76095, 28.07529, 
+    40.53505, 61.64103, 1.367835, 29.19541, 24.63598, 13.36296, 19.15088, 
+    17.24242, 58.86948, 10.36386, 15.20454, 56.35379, 8.099169, 23.769, 
+    24.79614, 14.69656, 50.11193, 25.35903, 59.18938, 51.97684, 44.87966, 
+    56.51338, 76.7057, 37.08824, 18.17326, 36.34776, 57.81669, 15.94002, 
+    31.54479, 66.87031, 12.56461, 67.00338, 58.19665, 57.84406, 22.33975, 
+    51.16273, 16.50468, 11.02816, 79.05337, 68.78816, 37.46039, 31.49598, 
+    66.92045, 53.46638, 35.19886, 49.43015, 29.39922, 13.55865, 71.05666, 
+    13.83892, 45.22563, 0.02646556, 15.81763, 63.98837, 0.5120609, 10.33802, 
+    53.50613, 24.63119, 6.965268, 47.22089, 36.78447, 35.98283, 35.40593, 
+    34.8849, 49.4609, 53.93727, 3.188482, 66.85195, 44.25605, 45.74578, 
+    45.21314, 39.30257, 0.7206169, 54.77544, 22.18368, 51.29797, 38.16368, 
+    73.97604, 35.80253, 71.73385, 50.23185, 9.621942, 74.90228, 78.32967, 
+    8.03379, 10.05789, 79.54096, 38.2582, 26.61588, 36.16071, 7.350058, 
+    25.95598, 14.06559, 75.5065, 65.43004, 78.54383, 48.77426, 18.51248, 
+    71.97946, 45.68407, 26.03132, 51.98213, 23.95672, 74.53979, 43.14886, 
+    49.58644, 27.06123, 25.66633, 28.73472, 60.32231, 49.05508, 16.17089, 
+    11.29831, 24.5825, 15.77298, 0.8424936, 13.64856, 55.91599, 38.14489, 
+    44.76837, 68.57007, 2.255769, 50.99001, 30.59435, 36.69022, 25.05376, 
+    28.26003, 10.82617, 5.319588, 22.8674, 38.64904, 67.63327, 63.17289, 
+    66.06119, 69.17253, 18.88459, 10.31085 ;
+}
diff --git a/compliance_checker/tests/data/ints64.cdl b/compliance_checker/tests/data/ints64.cdl
--- a/compliance_checker/tests/data/ints64.cdl
+++ b/compliance_checker/tests/data/ints64.cdl
@@ -1,18 +1,20 @@
 netcdf ints64 {
 dimensions:
-    time = 10 ;
+	time = 10 ;
 variables:
-    uint64 time(time) ;
-        time:units = "seconds since 1970-01-01" ;
-        time:standard_name = "time" ;
-        time:calendar = "gregorian" ;
-    uint64 temp_counts(time) ;
-        temp_counts:units = "1" ;
+	uint64 time(time) ;
+		time:units = "seconds since 1970-01-01" ;
+		time:standard_name = "time" ;
+		time:calendar = "gregorian" ;
+	uint64 temp_counts(time) ;
+		temp_counts:units = "1" ;
 
 // global attributes:
 		:featureType = "timeSeries" ;
 data:
 
-time = 1406689200, 1406692800, 1406696400, 1406700000, 1406703600 ;
-temp_counts = 1, 2, 3, 4, 5 ;
+ time = 1406689200, 1406692800, 1406696400, 1406700000, 1406703600, _, _, _, 
+    _, _ ;
+
+ temp_counts = 1, 2, 3, 4, 5, _, _, _, _, _ ;
 }
diff --git a/compliance_checker/tests/data/mapping.cdl b/compliance_checker/tests/data/mapping.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/mapping.cdl
@@ -0,0 +1,167 @@
+netcdf mapping {
+dimensions:
+	time = 1534804 ;
+	locations = 1 ;
+	name_strlen1 = 12 ;
+	name_strlen2 = 24 ;
+variables:
+	char platform_id(locations, name_strlen1) ;
+		platform_id:long_name = "platform identification code" ;
+		platform_id:cf_role = "timeseries_id" ;
+		platform_id:standard_name = "platform_id" ;
+	char platform_name(locations, name_strlen2) ;
+		platform_name:long_name = "platform name" ;
+		platform_name:standard_name = "platform_name" ;
+	float lon(locations) ;
+		lon:long_name = "station longitude" ;
+		lon:units = "degrees_east" ;
+		lon:standard_name = "longitude" ;
+		lon:grid_mapping = "wgs84" ;
+	float lat(locations) ;
+		lat:long_name = "station latitude" ;
+		lat:units = "degrees_north" ;
+		lat:standard_name = "latitude" ;
+		lat:grid_mapping = "wgs84" ;
+	int wgs84 ;
+		wgs84:name = "WGS 84" ;
+		wgs84:epsg = 4326. ;
+		wgs84:grid_mapping_name = "latitude_longitude" ;
+		wgs84:semi_major_axis = 6378137. ;
+		wgs84:semi_minor_axis = 6356752.31424783 ;
+		wgs84:inverse_flattening = 298.2572236 ;
+		wgs84:proj4_params = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs " ;
+		wgs84:EPSG_code = "EPSG:4326" ;
+		wgs84:projection_name = "Latitude Longitude" ;
+		wgs84:wkt = "" ;
+		wgs84:comment = "value is equal to EPSG code" ;
+	int epsg ;
+		epsg:name = "Amersfoort / RD New" ;
+		epsg:epsg = 7415. ;
+		epsg:epsg_name = "Oblique Stereographic" ;
+		epsg:grid_mapping_name = "stereographic" ;
+		epsg:semi_major_axis = 6377397.155 ;
+		epsg:semi_minor_axis = 6356078.96281819 ;
+		epsg:inverse_flattening = 299.1528128 ;
+		epsg:latitude_of_projection_origin = 52.0922178 ;
+		epsg:longitude_of_projection_origin = 5.23155 ;
+		epsg:false_northing = 463000. ;
+		epsg:scale_factor_at_projection_origin = 0.9999079 ;
+		epsg:proj4_params = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.4174,50.3319,465.5542,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725 +no_defs" ;
+		epsg:EPSG_code = "EPSG:7415" ;
+		epsg:projection_name = "Amersfoort / RD New" ;
+		epsg:wkt = "" ;
+		epsg:comment = "value is equal to EPSG code" ;
+	float x(locations) ;
+		x:long_name = "station x" ;
+		x:units = "m" ;
+		x:standard_name = "projection_x_coordinate" ;
+		x:grid_mapping = "epsg" ;
+	float y(locations) ;
+		y:long_name = "station y" ;
+		y:units = "m" ;
+		y:standard_name = "projection_y_coordinate" ;
+		y:grid_mapping = "epsg" ;
+	float z(locations) ;
+		z:long_name = "station depth" ;
+		z:units = "meters" ;
+		z:standard_name = "height_above_reference_ellipsoid" ;
+		z:positive = "up" ;
+		z:axis = "Z" ;
+	double time(time) ;
+		time:long_name = "time" ;
+		time:units = "days since 1970-01-01 00:00:00 +01:00" ;
+		time:standard_name = "time" ;
+		time:_FillValue = NaN ;
+	float sea_surface_height(locations, time) ;
+		sea_surface_height:actual_range = -2.44, 3.63 ;
+		sea_surface_height:long_name = "Water height with respect to normal amsterdam level in surface water" ;
+		sea_surface_height:name = "sea_surface_height" ;
+		sea_surface_height:units = "m" ;
+		sea_surface_height:standard_name = "sea_surface_height" ;
+		sea_surface_height:alt_standard_name = NaN ;
+		sea_surface_height:suggested_standard_name = "water_surface_height" ;
+		sea_surface_height:donar_wnsnum = 1. ;
+		sea_surface_height:donar_units = "cm" ;
+		sea_surface_height:donar_wns_oms = "Waterhoogte in cm t.o.v. normaal amsterdams peil in oppervlaktewater    " ;
+		sea_surface_height:donar_parcode = "WATHTE" ;
+		sea_surface_height:Aquo_Grootheid_code = "WATHTE" ;
+		sea_surface_height:Aquo_Grootheid_omschrijving = "Waterhoogte" ;
+		sea_surface_height:Aquo_ChemischeStof_code = NaN ;
+		sea_surface_height:Aquo_ChemischeStof_omschrijving = NaN ;
+		sea_surface_height:Aquo_CASnummer = NaN ;
+		sea_surface_height:Aquo_Object_code = NaN ;
+		sea_surface_height:Aquo_Object_omschrijving = NaN ;
+		sea_surface_height:Aquo_Eenheid_code = "m" ;
+		sea_surface_height:Aquo_Eenheid_omschrijving = "meter" ;
+		sea_surface_height:Aquo_Hoedanigheid_code = "NAP" ;
+		sea_surface_height:Aquo_Hoedanigheid_omschrijving = "t.o.v. Normaal Amsterdams Peil" ;
+		sea_surface_height:Aquo_Compartiment_code = "OW" ;
+		sea_surface_height:Aquo_Compartiment_omschrijving = "Oppervlaktewater" ;
+		sea_surface_height:Aquo_WNS_code = NaN ;
+		sea_surface_height:sdn_standard_name = "P01/185/ASLVNPZZ" ;
+		sea_surface_height:sdn_prefLabel = "Surface elevation (NAP datum) of the water body" ;
+		sea_surface_height:sdn_units = "P061/current/ULAA" ;
+		sea_surface_height:_FillValue = NaNf ;
+		sea_surface_height:cell_methods = "time: point area: point" ;
+		sea_surface_height:coordinates = "lat lon" ;
+	double time_x(time) ;
+	double time_y(time) ;
+
+// global attributes:
+		:title = "" ;
+		:institution = "Rijkswaterstaat" ;
+		:source = "surface observation" ;
+		:history = "Source: http://live.waterbase.nl/wswaterbase/cgi-bin/wbGETDATA?ggt=id1&site=MIV&lang=nl&a=getData&gaverder=GaVerder&from=164810240000&loc=BROUWHVSGT08&to=201403270000&fmt=text, tranformation to netCDF: $HeadURL: https://svn.oss.deltares.nl/repos/openearthtools/trunk/matlab/applications/Rijkswaterstaat/rws_waterbase2nc.m $ $Revision: 8953 $ $Date: 2013-07-30 12:24:21 +0200 (Tue, 30 Jul 2013) $ $Author: boer_g $" ;
+		:references = "<http://www.waterbase.nl>,<http://openearth.deltares.nl>" ;
+		:email = "<servicedesk-data@rws.nl>" ;
+		:comment = "The structure of this netCDF file is described in: https://cf-pcmdi.llnl.gov/trac/wiki/PointObservationConventions, http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#id2867470" ;
+		:version = "" ;
+		:Conventions = "CF-1.6, UM Aquo 2010 proof of concept, SeaDataNet proof of concept" ;
+		:featureType = "timeSeries" ;
+		:terms_for_use = "These data can be used freely for research purposes provided that the following source is acknowledged: Rijkswaterstaat." ;
+		:disclaimer = "This data is made available in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." ;
+		:stationname = "Brouwershavensche Gat 08" ;
+		:location = "Brouwershavensche Gat 08" ;
+		:donar_code = "brouwhvsgt08" ;
+		:locationcode = "brouwhvsgt08" ;
+		:waarnemingssoort = "Waterhoogte in cm t.o.v. normaal amsterdams peil in oppervlaktewater" ;
+		:reference_level = "NVT" ;
+		:vat = "Vlotterniveaumeter - type DNM" ;
+		:geospatial_lat_min = 51.7507542236064 ;
+		:geospatial_lat_max = 51.7507542236064 ;
+		:geospatial_lon_min = 3.81148275244255 ;
+		:geospatial_lon_max = 3.81148275244255 ;
+		:time_coverage_start = "1980-01-01P00:00:00" ;
+		:time_coverage_end = "2014-03-08P00:50:00" ;
+		:geospatial_lat_units = "degrees_north" ;
+		:geospatial_lon_units = "degrees_east" ;
+data:
+
+ platform_id =
+  "brouwhvsgt08" ;
+
+ platform_name =
+  "Brouwershavensche Gat 08" ;
+
+ lon = 3.811483 ;
+
+ lat = 51.75076 ;
+
+ wgs84 = 4326 ;
+
+ epsg = 7415 ;
+
+ x = 46197 ;
+
+ y = 419184 ;
+
+ z = NaNf ;
+
+ time = 3652, 3652.04166666663, 3652.08333333337 ;
+
+ sea_surface_height = 0, 0, 0 ;
+
+ time_x = _, _, _ ;
+
+ time_y = _, _, _ ;
+}
diff --git a/compliance_checker/tests/data/non-comp/bad-rhgrid.cdl b/compliance_checker/tests/data/non-comp/bad-rhgrid.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/non-comp/bad-rhgrid.cdl
@@ -0,0 +1,42 @@
+netcdf bad-rhgrid {
+dimensions:
+	londim = 20 ;
+	latdim = 20 ;
+	rgrid = 20 ;
+	ijgrid = 20 ;
+variables:
+	float PSa(rgrid) ;
+		PSa:long_name = "surface pressure" ;
+		PSa:units = "Pa" ;
+		PSa:coordinates = "longitude lat" ;
+		PSa:description = "longitude is not an auxiliary coordinate" ;
+	float PSb(rgrid) ;
+		PSb:long_name = "surface pressure" ;
+		PSb:units = "Pa" ;
+		PSb:coordinates = "lon latitude" ;
+		PSb:description = "latitude does not have a shared dimension with PSb" ;
+	float PSc(ijgrid) ;
+		PSc:long_name = "surface pressure" ;
+		PSc:units = "Pa" ;
+		PSc:coordinates = "lon_i lat_j" ;
+		PSc:description = "ijgrid does not define compress" ;
+	float lon(rgrid) ;
+		lon:long_name = "longitude" ;
+		lon:units = "degrees_east" ;
+	float lat(rgrid) ;
+		lat:long_name = "latitude" ;
+		lat:units = "degrees_north" ;
+	float latitude(latdim) ;
+		latitude:long_name = "latitude" ;
+		latitude:units = "degrees_north" ;
+	float rgrid(rgrid) ;
+		rgrid:compress = "latdim londim" ;
+	float lon_i(ijgrid) ;
+		lon_i:long_name = "longitude" ;
+		lon_i:units = "degrees_east" ;
+	float lat_j(ijgrid) ;
+		lat_j:long_name = "latitude" ;
+		lat_j:units = "degrees_north" ;
+	float ijgrid(ijgrid) ;
+		ijgrid:description = "lacks a compress" ;
+}
diff --git a/compliance_checker/tests/data/non-comp/bad.cdl b/compliance_checker/tests/data/non-comp/bad.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/non-comp/bad.cdl
@@ -0,0 +1,58 @@
+netcdf bad {
+dimensions:
+	_poor_dim = 1 ;
+	lat = 10 ;
+	lon = 10 ;
+	height = 1 ;
+	lev = 1 ;
+	time = 1 ;
+	sigma = 5 ;
+variables:
+	float _poor_dim(_poor_dim) ;
+	float lat(lat) ;
+		lat:standard_name = "latitude" ;
+	float lat_uv(lat) ;
+		lat_uv:units = "degreesN" ;
+		lat_uv:standard_name = "latitude" ;
+	float lat_like(lat) ;
+		lat_like:standard_name = "latitude" ;
+		lat_like:units = "N" ;
+	float lon(lon) ;
+		lon:standard_name = "longitude" ;
+	float lon_uv(lon) ;
+		lon_uv:standard_name = "longitude" ;
+		lon_uv:units = "degreesE" ;
+	float lon_like(lon) ;
+		lon_like:standard_name = "longitude" ;
+		lon_like:units = "E" ;
+	int height(height) ;
+		height:description = "no units" ;
+		height:standard_name = "height" ;
+	int depth(height) ;
+		depth:description = "not pressure and no positive" ;
+		depth:units = "1" ;
+		depth:standard_name = "depth" ;
+	int depth2(height) ;
+		depth2:description = "has incorrect \"positive\" attr" ;
+		depth2:positive = "negative" ;
+		depth2:units = "1" ;
+		depth2:axis = "Z" ;
+		depth2:standard_name = "depth" ;
+	float lev1(lev) ;
+		lev1:standard_name = "atmosphere_ln_pressure_coordinate" ;
+		lev1:description = "Missing formula_terms" ;
+	float lev2(lev) ;
+		lev2:standard_name = "atmosphere_hybrid_height_coordinate" ;
+		lev2:formula_terms = "a: var1 b: var2 orog: var3" ;
+		lev2:description = "Missing variables from formula_terms" ;
+	double bad_time_1(time) ;
+		bad_time_1:standard_name = "time" ;
+		bad_time_1:description = "lacks units" ;
+	double bad_time_2(time) ;
+		bad_time_2:units = "seconds" ;
+		bad_time_2:description = "incorrect units" ;
+		bad_time_2:standard_name = "time" ;
+		bad_time_2:calendar = "nope" ;
+	float column_temp(time, sigma) ;
+		column_temp:description = "sigma is not a coordinate variable" ;
+}
diff --git a/compliance_checker/tests/data/non-comp/bad2dim.cdl b/compliance_checker/tests/data/non-comp/bad2dim.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/non-comp/bad2dim.cdl
@@ -0,0 +1,35 @@
+netcdf bad2dim {
+dimensions:
+	lev = 5 ;
+	yc = 2 ;
+	xc = 2 ;
+	x = 1 ;
+variables:
+	float T(lev, yc, xc) ;
+		T:long_name = "Temperature" ;
+		T:units = "K" ;
+		T:coordinates = "lon lat" ;
+		T:description = "lat is missing" ;
+	float C(lev, yc, xc) ;
+		C:long_name = "Conductivity" ;
+		C:units = "S m-1" ;
+		C:coordinates = "lon lat_p" ;
+		C:description = "Dims don\'t match coordinates" ;
+	float xc(xc) ;
+		xc:axis = "X" ;
+		xc:long_name = "x-coordinate in Cartesian system" ;
+		xc:units = "m" ;
+	float yc(yc) ;
+		yc:axis = "Y" ;
+		yc:long_name = "y-coordinate in Cartesian system" ;
+		yc:units = "m" ;
+	float lev(lev) ;
+		lev:long_name = "pressure level" ;
+		lev:units = "hPa" ;
+	float lon(yc, xc) ;
+		lon:long_name = "longitude" ;
+		lon:units = "degrees_east" ;
+	float lat_p(yc, x) ;
+		lat_p:long_name = "latitude_proj" ;
+		lat_p:units = "degrees_north" ;
+}
diff --git a/compliance_checker/tests/data/non-comp/self_referencing.cdl b/compliance_checker/tests/data/non-comp/self_referencing.cdl
--- a/compliance_checker/tests/data/non-comp/self_referencing.cdl
+++ b/compliance_checker/tests/data/non-comp/self_referencing.cdl
@@ -1,4 +1,4 @@
-netcdf temp {
+netcdf self_referencing {
 dimensions:
 	TIME = UNLIMITED ; // (22 currently)
 	h_num = 15 ;
diff --git a/compliance_checker/tests/data/non-comp/time_units.cdl b/compliance_checker/tests/data/non-comp/time_units.cdl
--- a/compliance_checker/tests/data/non-comp/time_units.cdl
+++ b/compliance_checker/tests/data/non-comp/time_units.cdl
@@ -1,16 +1,15 @@
 netcdf time_units {
 dimensions:
-    time = 10 ;
+	time = 10 ;
 variables:
-    uint64 time(time) ;
-        time:units = "seconds since 1970-01-01" ;
-        time:standard_name = "time" ;
-        time:calendar = "gregorian" ;
-    float temperature(time) ;
-        temperature:units = "days since 1970-01-01" ;
-        temperature:standard_name = "sea_water_temperature" ;
+	uint64 time(time) ;
+		time:units = "seconds since 1970-01-01" ;
+		time:standard_name = "time" ;
+		time:calendar = "gregorian" ;
+	float temperature(time) ;
+		temperature:units = "days since 1970-01-01" ;
+		temperature:standard_name = "sea_water_temperature" ;
 
 // global attributes:
 		:featureType = "timeSeries" ;
 }
-
diff --git a/compliance_checker/tests/data/rhgrid.cdl b/compliance_checker/tests/data/rhgrid.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/rhgrid.cdl
@@ -0,0 +1,19 @@
+netcdf rhgrid {
+dimensions:
+	londim = 128 ;
+	latdim = 64 ;
+	rgrid = 6144 ;
+variables:
+	float PS(rgrid) ;
+		PS:long_name = "surface pressure" ;
+		PS:units = "Pa" ;
+		PS:coordinates = "lon lat" ;
+	float lon(rgrid) ;
+		lon:long_name = "longitude" ;
+		lon:units = "degrees_east" ;
+	float lat(rgrid) ;
+		lat:long_name = "latitude" ;
+		lat:units = "degrees_north" ;
+	float rgrid(rgrid) ;
+		rgrid:compress = "latdim londim" ;
+}
diff --git a/compliance_checker/tests/data/ru07-20130824T170228_rt0.cdl b/compliance_checker/tests/data/ru07-20130824T170228_rt0.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/ru07-20130824T170228_rt0.cdl
@@ -0,0 +1,768 @@
+netcdf ru07-20130824T170228_rt0 {
+dimensions:
+	time = UNLIMITED ; // (188 currently)
+	trajectory = 1 ;
+	time_uv = 1 ;
+variables:
+	double time(time) ;
+		time:_FillValue = 9.96920996838687e+36 ;
+		time:axis = "T" ;
+		time:calendar = "gregorian" ;
+		time:long_name = "Time" ;
+		time:observation_type = "measured" ;
+		time:sensor_name = "m_present_time" ;
+		time:standard_name = "time" ;
+		time:units = "seconds since 1970-01-01 00:00:00 UTC" ;
+	byte time_qc(time) ;
+		time_qc:_FillValue = -127b ;
+		time_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		time_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		time_qc:long_name = "time Quality Flag" ;
+		time_qc:standard_name = "time status_flag" ;
+		time_qc:valid_max = 9b ;
+		time_qc:valid_min = 0b ;
+	double time_uv(time_uv) ;
+		time_uv:_FillValue = 9.96920996838687e+36 ;
+		time_uv:axis = "T" ;
+		time_uv:calendar = "gregorian" ;
+		time_uv:long_name = "Approximate time midpoint of each segment" ;
+		time_uv:observation_type = "estimated" ;
+		time_uv:standard_name = "time" ;
+		time_uv:units = "seconds since 1970-01-01 00:00:00 UTC" ;
+	short trajectory(trajectory) ;
+		trajectory:_FillValue = -32767s ;
+		trajectory:cf_role = "trajectory_id" ;
+		trajectory:comment = "A trajectory can span multiple data files each containing a single segment." ;
+		trajectory:long_name = "Unique identifier for each trajectory feature contained in the file" ;
+	short segment_id(time) ;
+		segment_id:_FillValue = -32767s ;
+		segment_id:comment = "Sequential segment number within a trajectory/deployment. A segment corresponds to the set of data collected between 2 gps fixes obtained when the glider surfaces." ;
+		segment_id:long_name = "Segment ID" ;
+		segment_id:observation_type = "calculated" ;
+		segment_id:valid_max = 999 ;
+		segment_id:valid_min = 1 ;
+	short profile_id(time) ;
+		profile_id:_FillValue = -32767s ;
+		profile_id:comment = "Sequential profile number within the current segment. A profile is defined as a single dive or climb" ;
+		profile_id:long_name = "Profile ID" ;
+		profile_id:observation_type = "calculated" ;
+		profile_id:valid_max = 999 ;
+		profile_id:valid_min = 1 ;
+	double depth(time) ;
+		depth:_FillValue = 9.96920996838687e+36 ;
+		depth:ancillary_variables = "depth_qc" ;
+		depth:axis = "Z" ;
+		depth:instrument = "instrument_ctd" ;
+		depth:long_name = "Depth" ;
+		depth:observation_type = "calculated" ;
+		depth:platform = "platform" ;
+		depth:positive = "down" ;
+		depth:reference_datum = "sea-surface" ;
+		depth:sensor_name = "drv_proInds" ;
+		depth:standard_name = "depth" ;
+		depth:units = "meters" ;
+		depth:valid_max = 2000 ;
+		depth:valid_min = 0 ;
+	byte depth_qc(time) ;
+		depth_qc:_FillValue = -127b ;
+		depth_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		depth_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		depth_qc:long_name = "depth Quality Flag" ;
+		depth_qc:standard_name = "depth status_flag" ;
+		depth_qc:valid_max = 9b ;
+		depth_qc:valid_min = 0b ;
+	double lat(time) ;
+		lat:_FillValue = 9.96920996838687e+36 ;
+		lat:ancillary_variables = "lat_qc" ;
+		lat:axis = "Y" ;
+		lat:comment = "Some values are linearly interpolated between measured coordinates.  See lat_qc" ;
+		lat:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
+		lat:flag_meanings = "" ;
+		lat:long_name = "Latitude" ;
+		lat:observation_type = "measured" ;
+		lat:platform = "platform" ;
+		lat:reference = "WGS84" ;
+		lat:sensor_name = "" ;
+		lat:standard_name = "latitude" ;
+		lat:units = "degrees_north" ;
+		lat:valid_max = 90. ;
+		lat:valid_min = -90. ;
+	byte lat_qc(time) ;
+		lat_qc:_FillValue = -127b ;
+		lat_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		lat_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		lat_qc:long_name = "lat Quality Flag" ;
+		lat_qc:standard_name = "lat status_flag" ;
+		lat_qc:valid_max = 9b ;
+		lat_qc:valid_min = 0b ;
+	double lon(time) ;
+		lon:_FillValue = 9.96920996838687e+36 ;
+		lon:ancillary_variables = "lon_qc" ;
+		lon:axis = "X" ;
+		lon:comment = "Some values are linearly interpolated between measured coordinates.  See lon_qc" ;
+		lon:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
+		lon:flag_meanings = "" ;
+		lon:long_name = "Longitude" ;
+		lon:observation_type = "measured" ;
+		lon:platform = "platform" ;
+		lon:reference = "WGS84" ;
+		lon:sensor_name = "" ;
+		lon:standard_name = "longitude" ;
+		lon:units = "degrees_east" ;
+		lon:valid_max = 180. ;
+		lon:valid_min = -180. ;
+	byte lon_qc(time) ;
+		lon_qc:_FillValue = -127b ;
+		lon_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		lon_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		lon_qc:long_name = "lon Quality Flag" ;
+		lon_qc:standard_name = "lon status_flag" ;
+		lon_qc:valid_max = 9b ;
+		lon_qc:valid_min = 0b ;
+	double pressure(time) ;
+		pressure:_FillValue = 9.96920996838687e+36 ;
+		pressure:accuracy = "" ;
+		pressure:ancillary_variables = "pressure_qc" ;
+		pressure:axis = "Z" ;
+		pressure:instrument = "instrument_ctd" ;
+		pressure:long_name = "Pressure" ;
+		pressure:observation_type = "calculated" ;
+		pressure:platform = "platform" ;
+		pressure:positive = "down" ;
+		pressure:precision = "" ;
+		pressure:reference_datum = "sea-surface" ;
+		pressure:resolution = "" ;
+		pressure:sensor_name = "" ;
+		pressure:standard_name = "pressure" ;
+		pressure:units = "dbar" ;
+		pressure:valid_max = 2000 ;
+		pressure:valid_min = 0 ;
+	byte pressure_qc(time) ;
+		pressure_qc:_FillValue = -127b ;
+		pressure_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		pressure_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		pressure_qc:long_name = "pressure Quality Flag" ;
+		pressure_qc:standard_name = "pressure status_flag" ;
+		pressure_qc:valid_max = 9b ;
+		pressure_qc:valid_min = 0b ;
+	double conductivity(time) ;
+		conductivity:_FillValue = 9.96920996838687e+36 ;
+		conductivity:accuracy = "" ;
+		conductivity:ancillary_variables = "conductivity_qc" ;
+		conductivity:coordinates = "lon lat depth time" ;
+		conductivity:instrument = "instrument_ctd" ;
+		conductivity:long_name = "Conductivity" ;
+		conductivity:observation_type = "measured" ;
+		conductivity:platform = "platform" ;
+		conductivity:precision = "" ;
+		conductivity:resolution = "" ;
+		conductivity:sensor_name = "" ;
+		conductivity:standard_name = "sea_water_electrical_conductivity" ;
+		conductivity:units = "S m-1" ;
+		conductivity:valid_max = 10. ;
+		conductivity:valid_min = 0. ;
+	byte conductivity_qc(time) ;
+		conductivity_qc:_FillValue = -127b ;
+		conductivity_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		conductivity_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		conductivity_qc:long_name = "conductivity Quality Flag" ;
+		conductivity_qc:standard_name = "conductivity status_flag" ;
+		conductivity_qc:valid_max = 9b ;
+		conductivity_qc:valid_min = 0b ;
+	double density(time) ;
+		density:_FillValue = 9.96920996838687e+36 ;
+		density:ancillary_variables = "density_qc" ;
+		density:coordinates = "lon lat depth time" ;
+		density:instrument = "instrument_ctd" ;
+		density:long_name = "Density" ;
+		density:observation_type = "calculated" ;
+		density:platform = "platform" ;
+		density:sensor_name = "" ;
+		density:standard_name = "sea_water_density" ;
+		density:units = "kg m-3" ;
+		density:valid_max = 1040. ;
+		density:valid_min = 1015. ;
+	byte density_qc(time) ;
+		density_qc:_FillValue = -127b ;
+		density_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		density_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		density_qc:long_name = "density Quality Flag" ;
+		density_qc:standard_name = "density status_flag" ;
+		density_qc:valid_max = 9b ;
+		density_qc:valid_min = 0b ;
+	double salinity(time) ;
+		salinity:_FillValue = 9.96920996838687e+36 ;
+		salinity:ancillary_variables = "salinity_qc" ;
+		salinity:coordinates = "lon lat depth time" ;
+		salinity:instrument = "instrument_ctd" ;
+		salinity:long_name = "Salinity" ;
+		salinity:observation_type = "calculated" ;
+		salinity:platform = "platform" ;
+		salinity:sensor_name = "" ;
+		salinity:standard_name = "sea_water_salinity" ;
+		salinity:units = "1e-3" ;
+		salinity:valid_max = 40. ;
+		salinity:valid_min = 0. ;
+	byte salinity_qc(time) ;
+		salinity_qc:_FillValue = -127b ;
+		salinity_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		salinity_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		salinity_qc:long_name = "salinity Quality Flag" ;
+		salinity_qc:standard_name = "salinity status_flag" ;
+		salinity_qc:valid_max = 9b ;
+		salinity_qc:valid_min = 0b ;
+	double temperature(time) ;
+		temperature:_FillValue = 9.96920996838687e+36 ;
+		temperature:accuracy = "" ;
+		temperature:ancillary_variables = "temperature_qc" ;
+		temperature:coordinates = "lon lat depth time" ;
+		temperature:instrument = "instrument_ctd" ;
+		temperature:long_name = "Temperature" ;
+		temperature:observation_type = "measured" ;
+		temperature:platform = "platform" ;
+		temperature:precision = "" ;
+		temperature:resolution = "" ;
+		temperature:sensor_name = "" ;
+		temperature:standard_name = "sea_water_temperature" ;
+		temperature:units = "Celsius" ;
+		temperature:valid_max = 40. ;
+		temperature:valid_min = -5. ;
+	byte temperature_qc(time) ;
+		temperature_qc:_FillValue = -127b ;
+		temperature_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		temperature_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		temperature_qc:long_name = "temperature Quality Flag" ;
+		temperature_qc:standard_name = "temperature status_flag" ;
+		temperature_qc:valid_max = 9b ;
+		temperature_qc:valid_min = 0b ;
+	double lat_uv(time_uv) ;
+		lat_uv:_FillValue = 9.96920996838687e+36 ;
+		lat_uv:axis = "Y" ;
+		lat_uv:comment = "Values are interpolated to provide the center latitude of the segment" ;
+		lat_uv:long_name = "Center Latitude for Depth-Averaged Current" ;
+		lat_uv:observation_type = "calculated" ;
+		lat_uv:platform = "platform" ;
+		lat_uv:standard_name = "latitude" ;
+		lat_uv:units = "degrees_north" ;
+		lat_uv:valid_max = 90. ;
+		lat_uv:valid_min = -90. ;
+	double lon_uv(time_uv) ;
+		lon_uv:_FillValue = 9.96920996838687e+36 ;
+		lon_uv:axis = "X" ;
+		lon_uv:comment = "Values are interpolated to provide the center longitude of the segment" ;
+		lon_uv:long_name = "Center Longitude for Depth-Averaged Current" ;
+		lon_uv:observation_type = "calculated" ;
+		lon_uv:platform = "platform" ;
+		lon_uv:standard_name = "longitude" ;
+		lon_uv:units = "degrees_east" ;
+		lon_uv:valid_max = 180. ;
+		lon_uv:valid_min = -180. ;
+	double u(time_uv) ;
+		u:_FillValue = 9.96920996838687e+36 ;
+		u:coordinates = "lon_uv lat_uv time_uv" ;
+		u:long_name = "Eastward Sea Water Velocity" ;
+		u:observation_type = "calculated" ;
+		u:platform = "platform" ;
+		u:sensor_name = "" ;
+		u:standard_name = "eastward_sea_water_velocity" ;
+		u:units = "m s-1" ;
+		u:valid_max = 10. ;
+		u:valid_min = -10. ;
+	byte u_qc(time_uv) ;
+		u_qc:_FillValue = -127b ;
+		u_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		u_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		u_qc:long_name = "u Quality Flag" ;
+		u_qc:standard_name = "u status_flag" ;
+		u_qc:valid_max = 9b ;
+		u_qc:valid_min = 0b ;
+	double v(time_uv) ;
+		v:_FillValue = 9.96920996838687e+36 ;
+		v:coordinates = "lon_uv lat_uv time_uv" ;
+		v:long_name = "Northward Sea Water Velocity" ;
+		v:observation_type = "calculated" ;
+		v:platform = "platform" ;
+		v:sensor_name = "" ;
+		v:standard_name = "northward_sea_water_velocity" ;
+		v:units = "m s-1" ;
+		v:valid_max = 10. ;
+		v:valid_min = -10. ;
+	byte v_qc(time_uv) ;
+		v_qc:_FillValue = -127b ;
+		v_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
+		v_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
+		v_qc:long_name = "v Quality Flag" ;
+		v_qc:standard_name = "v status_flag" ;
+		v_qc:valid_max = 9b ;
+		v_qc:valid_min = 0b ;
+	byte platform ;
+		platform:_FillValue = -127b ;
+		platform:comment = "Slocum Glider ru29" ;
+		platform:id = "ru29" ;
+		platform:instrument = "instrument_ctd" ;
+		platform:long_name = "Slocum Glider ru29" ;
+		platform:type = "platform" ;
+		platform:wmo_id = "ru29" ;
+	byte instrument_ctd ;
+		instrument_ctd:_FillValue = -127b ;
+		instrument_ctd:calibration_date = "2000-01-01" ;
+		instrument_ctd:calibration_report = "" ;
+		instrument_ctd:comment = "Slocum Glider ru29" ;
+		instrument_ctd:factory_calibrated = "" ;
+		instrument_ctd:long_name = "Seabird SBD 41CP Conductivity, Temperature, Depth Sensor" ;
+		instrument_ctd:make_model = "Seabird SBE 41CP" ;
+		instrument_ctd:platform = "platform" ;
+		instrument_ctd:serial_number = "0098" ;
+		instrument_ctd:user_calibrated = "" ;
+
+// global attributes:
+		:Conventions = "CF-1.6" ;
+		:Metadata_Conventions = "Unidata Dataset Discovery v1.0" ;
+		:acknowledgment = "This deployment partially supported by ..." ;
+		:cdm_data_type = "Trajectory" ;
+		:comment = "This file is intended to be used as a template only.  Data is not to be used for scientific purposes." ;
+		:contributor_name = "Scott Glenn, Oscar Schofield, John Kerfoot" ;
+		:contributor_role = "Principal Investigator, Principal Investigator, Data Manager" ;
+		:creator_email = "kerfoot@marine.rutgers.edu" ;
+		:creator_name = "John Kerfoot" ;
+		:creator_url = "http://marine.rutgers.edu/cool/auvs" ;
+		:date_created = "2013-09-05 12:55 UTC" ;
+		:date_issued = "2013-09-05 12:55 UTC" ;
+		:date_modified = "2013-09-05 12:55 UTC" ;
+		:featureType = "trajectory" ;
+		:format_version = "IOOS_Glider_NetCDF_Trajectory_Template_v0.0" ;
+		:geospatial_lat_max = 34.85172 ;
+		:geospatial_lat_min = 34.85033 ;
+		:geospatial_lat_resolution = "point" ;
+		:geospatial_lat_units = "degrees_north" ;
+		:geospatial_lon_max = -120.78092 ;
+		:geospatial_lon_min = -120.7855 ;
+		:geospatial_lon_resolution = "point" ;
+		:geospatial_lon_units = "degrees_east" ;
+		:geospatial_vertical_max = 589. ;
+		:geospatial_vertical_min = 1.1 ;
+		:geospatial_vertical_positive = "down" ;
+		:geospatial_vertical_resolution = "point" ;
+		:geospatial_vertical_units = "meters" ;
+		:history = "Created 2013-09-05 12:55 UTC" ;
+		:id = "ru07-20130824T170228" ;
+		:institution = "Institute of Marine & Coastal Sciences, Rutgers University" ;
+		:keywords = "Oceans > Ocean Pressure > Water Pressure, Oceans > Ocean Temperature > Water Temperature, Oceans > Salinity/Density > Conductivity, Oceans > Salinity/Density > Density, Oceans > Salinity/Density > Salinity" ;
+		:keywords_vocabulary = "GCMD Science Keywords" ;
+		:license = "This data may be redistributed and used without restriction." ;
+		:metadata_link = "" ;
+		:naming_authority = "edu.rutgers.marine" ;
+		:processing_level = "Dataset taken from glider native file format" ;
+		:project = "Deployment not project based" ;
+		:publisher_email = "kerfoot@marine.rutgers.edu" ;
+		:publisher_name = "John Kerfoot" ;
+		:publisher_url = "http://marine.rutgers.edu/cool/auvs" ;
+		:references = "" ;
+		:sea_name = "South Atlantic Ocean" ;
+		:source = "Observational data from a profiling glider" ;
+		:source_file = "/home/kerfoot/sandbox/glider/deployments-test/2013/ru07-383/ascii/queue/ru07_2013_234_0_29_sbd.dat" ;
+		:standard_name_vocabulary = "CF-v25" ;
+		:summary = "The Rutgers University Coastal Ocean Observation Lab has deployed autonomous underwater gliders around the world since 1990. Gliders are small, free-swimming, unmanned vehicles that use changes in buoyancy to move vertically and horizontally through the water column in a saw-tooth pattern. They are deployed for days to several months and gather detailed information about the physical, chemical and biological processes of the world\'s The Slocum glider was designed and oceans. built by Teledyne Webb Research Corporation, Falmouth, MA, USA." ;
+		:time_coverage_end = "2013-08-24 17:43 UTC" ;
+		:time_coverage_resolution = "point" ;
+		:time_coverage_start = "2013-08-24 17:02 UTC" ;
+		:title = "Slocum Glider Dataset" ;
+data:
+
+ time = 1377363748.7959, 1377363783.24022, 1377363817.68454, 
+    1377363851.40164, 1377363866.51892, 1377363876.6824, 1377363881.9743, 
+    1377363887.2435, 1377363892.6467, 1377363897.90735, 1377363902.8327, 
+    1377363907.73877, 1377363912.64548, 1377363917.54712, 1377363945.1362, 
+    1377363949.80057, 1377363981.64453, 1377363991.11032, 1377363995.77243, 
+    1377364014.02328, 1377364036.78885, 1377364045.96667, 1377364077.78964, 
+    1377364082.44727, 1377364109.7428, 1377364123.47406, 1377364128.14075, 
+    1377364141.86166, 1377364173.68921, 1377364205.53354, 1377364219.24554, 
+    1377364237.48477, 1377364246.67844, 1377364264.91901, 1377364269.57162, 
+    1377364278.74234, 1377364301.4946, 1377364306.15146, 1377364310.80038, 
+    1377364329.05484, 1377364333.72025, 1377364356.47162, 1377364365.659, 
+    1377364388.43823, 1377364397.64044, 1377364402.29065, 1377364425.05624, 
+    1377364429.71921, 1377364434.37262, 1377364439.03082, 1377364448.49078, 
+    1377364462.34445, 1377364494.18002, 1377364526.00192, 1377364539.69675, 
+    1377364557.92694, 1377364585.20895, 1377364589.86646, 1377364621.69489, 
+    1377364630.87344, 1377364640.06091, 1377364653.77045, 1377364667.46655, 
+    1377364676.65338, 1377364685.8327, 1377364713.12415, 1377364717.78302, 
+    1377364722.43051, 1377364749.71091, 1377364767.96875, 1377364781.66605, 
+    1377364813.49545, 1377364845.32516, 1377364859.03354, 1377364877.26532, 
+    1377364904.55557, 1377364909.2092, 1377364941.0506, 1377364950.23141, 
+    1377364972.98743, 1377364995.7514, 1377365000.40643, 1377365005.06345, 
+    1377365027.83096, 1377365037.0155, 1377365041.66803, 1377365068.96698, 
+    1377365078.18463, 1377365087.3634, 1377365101.0885, 1377365114.7952, 
+    1377365128.9093, 1377365133.56378, 1377365160.90884, 1377365165.56274, 
+    1377365174.75507, 1377365179.42117, 1377365193.13345, 1377365197.79224, 
+    1377365225.10651, 1377365229.76382, 1377365257.06308, 1377365261.71875, 
+    1377365270.91141, 1377365289.15744, 1377365293.81036, 1377365316.58292, 
+    1377365321.23795, 1377365325.88464, 1377365353.19705, 1377365357.85007, 
+    1377365362.52054, 1377365385.29651, 1377365389.95038, 1377365408.19427, 
+    1377365417.37469, 1377365422.02917, 1377365435.7345, 1377365440.39029, 
+    1377365449.58527, 1377365454.24121, 1377365463.42041, 1377365478.96631, 
+    1377365483.61685, 1377365488.27075, 1377365502.02463, 1377365515.73047, 
+    1377365520.39044, 1377365547.69708, 1377365552.34726, 1377365570.87177, 
+    1377365585.8685, 1377365595.04446, 1377365613.26611, 1377365617.91678, 
+    1377365640.67453, 1377365645.32715, 1377365649.9863, 1377365677.27158, 
+    1377365681.92215, 1377365686.57394, 1377365709.34821, 1377365714.00394, 
+    1377365732.22302, 1377365741.40097, 1377365746.04822, 1377365750.69846, 
+    1377365773.45889, 1377365778.12924, 1377365800.8967, 1377365805.54971, 
+    1377365810.20114, 1377365823.90808, 1377365837.61951, 1377365842.27322, 
+    1377365869.5799, 1377365874.23172, 1377365896.99866, 1377365911.11948, 
+    1377365915.92065, 1377365944.017, 1377365958.11673, 1377365962.9061, 
+    1377365976.99832, 1377365981.9126, 1377365986.80225, 1377365991.68677, 
+    1377365996.5769, 1377366001.8627, 1377366010.93268, 1377366016.19458, 
+    1377366021.45059, 1377366026.70206, 1377366031.94858, 1377366037.18253, 
+    1377366042.42999, 1377366057.66693, 1377366082.76797, 1377366099.90509, 
+    1377366105.7998, 1377366111.18082, 1377366147.26401, 1377366152.52194, 
+    1377366157.79568, 1377366162.96686, 1377366201.23584, 1377366211.74408, 
+    1377366237.759 ;
+
+ time_qc = 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;
+
+ time_uv = 1377365070.83583 ;
+
+ trajectory = 1 ;
+
+ segment_id = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
+
+ profile_id = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
+    2, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ depth = 0.17, 1.07176470588235, 1.97352941176471, 2.87529411764706, 
+    3.77705882352941, 4.67882352941176, 5.58058823529412, 6.48235294117647, 
+    7.38411764705882, 8.28588235294118, 9.18764705882353, 10.0894117647059, 
+    10.9911764705882, 11.8929411764706, 12.7947058823529, 13.6964705882353, 
+    14.5982352941176, 15.5, 16.4041666666667, 17.3083333333333, 18.2125, 
+    19.1166666666667, 20.0208333333333, 20.925, 21.8291666666667, 
+    22.7333333333333, 23.6375, 24.5416666666667, 25.4458333333333, 26.35, 
+    27.2541666666667, 28.1583333333333, 29.0625, 29.9666666666667, 
+    30.8708333333333, 31.775, 32.6791666666667, 33.5833333333333, 34.4875, 
+    35.3916666666667, 36.2958333333333, 37.2, 38.1041666666667, 
+    39.0083333333333, 39.9125, 40.8166666666667, 41.7208333333333, 42.625, 
+    43.5291666666667, 44.4333333333333, 45.3375, 46.2416666666667, 
+    47.1458333333333, 48.05, 48.9541666666667, 49.8583333333333, 50.7625, 
+    51.6666666666667, 52.5708333333333, 53.475, 54.3791666666667, 
+    55.2833333333333, 56.1875, 57.0916666666667, 57.9958333333333, 58.9, 
+    58.8105769230769, 58.7211538461538, 58.6317307692308, 58.5423076923077, 
+    58.4528846153846, 58.3634615384615, 58.2740384615385, 58.1846153846154, 
+    58.0951923076923, 58.0057692307692, 57.9163461538462, 57.8269230769231, 
+    57.7375, 57.6480769230769, 57.5586538461538, 57.4692307692308, 
+    57.3798076923077, 57.2903846153846, 57.2009615384615, 57.1115384615385, 
+    57.0221153846154, 56.9326923076923, 56.8432692307692, 56.7538461538462, 
+    56.6644230769231, 56.575, 56.4855769230769, 56.3961538461538, 
+    56.3067307692308, 56.2173076923077, 56.1278846153846, 56.0384615384615, 
+    55.9490384615385, 55.8596153846154, 55.7701923076923, 55.6807692307692, 
+    55.5913461538462, 55.5019230769231, 55.4125, 55.3230769230769, 
+    55.2336538461538, 55.1442307692308, 55.0548076923077, 54.9653846153846, 
+    54.8759615384615, 54.7865384615385, 54.6971153846154, 54.6076923076923, 
+    54.5182692307692, 54.4288461538462, 54.3394230769231, 54.25, 
+    53.429696969697, 52.6093939393939, 51.7890909090909, 50.9687878787879, 
+    50.1484848484848, 49.3281818181818, 48.5078787878788, 47.6875757575758, 
+    46.8672727272727, 46.0469696969697, 45.2266666666667, 44.4063636363636, 
+    43.5860606060606, 42.7657575757576, 41.9454545454545, 41.1251515151515, 
+    40.3048484848485, 39.4845454545455, 38.6642424242424, 37.8439393939394, 
+    37.0236363636364, 36.2033333333333, 35.3830303030303, 34.5627272727273, 
+    33.7424242424242, 32.9221212121212, 32.1018181818182, 31.2815151515151, 
+    30.4612121212121, 29.6409090909091, 28.8206060606061, 28.000303030303, 
+    27.18, 26.359696969697, 25.5393939393939, 24.7190909090909, 
+    23.8987878787879, 23.0784848484848, 22.2581818181818, 21.4378787878788, 
+    20.6175757575758, 19.7972727272727, 18.9769696969697, 18.1566666666667, 
+    17.3363636363636, 16.5160606060606, 15.6957575757576, 14.8754545454545, 
+    14.0551515151515, 13.2348484848485, 12.4145454545455, 11.5942424242424, 
+    10.7739393939394, 9.95363636363636, 9.13333333333333, 8.3130303030303, 
+    7.49272727272727, 6.67242424242424, 5.85212121212121, 5.03181818181818, 
+    4.21151515151515, 3.39121212121212, 2.57090909090909, 1.75060606060606, 
+    0.93030303030303, 0.11, _, _, _, _ ;
+
+ depth_qc = 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, _, _, _, _ ;
+
+ lat = 34.85172, 34.8515836666667, 34.8514473333333, 34.851311, 
+    34.8511746666667, 34.8510383333333, 34.85103, 34.851015, 34.851, 
+    34.8509583333333, 34.8509483333333, 34.8509333333333, 34.8509183333333, 
+    34.8509033333333, 34.8509005777778, 34.8508978222222, 34.8508950666667, 
+    34.8508923111111, 34.8508895555556, 34.8508868, 34.8508840444444, 
+    34.8508812888889, 34.8508785333333, 34.8508757777778, 34.8508730222222, 
+    34.8508702666667, 34.8508675111111, 34.8508647555556, 34.850862, 
+    34.8508592444445, 34.8508564888889, 34.8508537333333, 34.8508509777778, 
+    34.8508482222222, 34.8508454666667, 34.8508427111111, 34.8508399555556, 
+    34.8508372, 34.8508344444444, 34.8508316888889, 34.8508289333333, 
+    34.8508261777778, 34.8508234222222, 34.8508206666667, 34.8508179111111, 
+    34.8508151555556, 34.8508124, 34.8508096444444, 34.8508068888889, 
+    34.8508041333333, 34.8508013777778, 34.8507986222222, 34.8507958666667, 
+    34.8507931111111, 34.8507903555556, 34.8507876, 34.8507848444444, 
+    34.8507820888889, 34.8507793333333, 34.8507765777778, 34.8507738222222, 
+    34.8507710666667, 34.8507683111111, 34.8507655555556, 34.8507628, 
+    34.8507600444444, 34.8507572888889, 34.8507545333333, 34.8507517777778, 
+    34.8507490222222, 34.8507462666667, 34.8507435111111, 34.8507407555556, 
+    34.850738, 34.8507352444444, 34.8507324888889, 34.8507297333333, 
+    34.8507269777778, 34.8507242222222, 34.8507214666667, 34.8507187111111, 
+    34.8507159555556, 34.8507132, 34.8507104444444, 34.8507076888889, 
+    34.8507049333333, 34.8507021777778, 34.8506994222222, 34.8506966666667, 
+    34.8506939111111, 34.8506911555556, 34.8506884, 34.8506856444444, 
+    34.8506828888889, 34.8506801333333, 34.8506773777778, 34.8506746222222, 
+    34.8506718666667, 34.8506691111111, 34.8506663555556, 34.8506636, 
+    34.8506608444444, 34.8506580888889, 34.8506553333333, 34.8506525777778, 
+    34.8506498222222, 34.8506470666667, 34.8506443111111, 34.8506415555556, 
+    34.8506388, 34.8506360444444, 34.8506332888889, 34.8506305333333, 
+    34.8506277777778, 34.8506250222222, 34.8506222666667, 34.8506195111111, 
+    34.8506167555556, 34.850614, 34.8506112444444, 34.8506084888889, 
+    34.8506057333333, 34.8506029777778, 34.8506002222222, 34.8505974666667, 
+    34.8505947111111, 34.8505919555556, 34.8505892, 34.8505864444444, 
+    34.8505836888889, 34.8505809333333, 34.8505781777778, 34.8505754222222, 
+    34.8505726666667, 34.8505699111111, 34.8505671555556, 34.8505644, 
+    34.8505616444444, 34.8505588888889, 34.8505561333333, 34.8505533777778, 
+    34.8505506222222, 34.8505478666667, 34.8505451111111, 34.8505423555556, 
+    34.8505396, 34.8505368444444, 34.8505340888889, 34.8505313333333, 
+    34.8505285777778, 34.8505258222222, 34.8505230666667, 34.8505203111111, 
+    34.8505175555556, 34.8505148, 34.8505120444444, 34.8505092888889, 
+    34.8505065333333, 34.8505037777778, 34.8505010222222, 34.8504982666667, 
+    34.8504955111111, 34.8504927555556, 34.85049, 34.8504716666667, 34.85046, 
+    34.8504466666667, 34.8504366666667, 34.85041, 34.8504083333333, 
+    34.850395, 34.8503866666667, 34.8503766666667, 34.8503633333333, 
+    34.850355, 34.8503266666667, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ lat_qc = 0, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ lon = -120.780966666667, -120.780959666667, -120.780952666667, 
+    -120.780945666667, -120.780938666667, -120.780931666667, -120.780925, 
+    -120.780918333333, -120.780928333333, -120.78102, -120.780991666667, 
+    -120.78099, -120.781019309211, -120.781048618421, -120.781077927632, 
+    -120.781107236842, -120.781136546053, -120.781165855263, 
+    -120.781195164474, -120.781224473684, -120.781253782895, 
+    -120.781283092105, -120.781312401316, -120.781341710526, 
+    -120.781371019737, -120.781400328947, -120.781429638158, 
+    -120.781458947368, -120.781488256579, -120.781517565789, -120.781546875, 
+    -120.781576184211, -120.781605493421, -120.781634802632, 
+    -120.781664111842, -120.781693421053, -120.781722730263, 
+    -120.781752039474, -120.781781348684, -120.781810657895, 
+    -120.781839967105, -120.781869276316, -120.781898585526, 
+    -120.781927894737, -120.781957203947, -120.781986513158, 
+    -120.782015822368, -120.782045131579, -120.782074440789, -120.78210375, 
+    -120.782133059211, -120.782162368421, -120.782191677632, 
+    -120.782220986842, -120.782250296053, -120.782279605263, 
+    -120.782308914474, -120.782338223684, -120.782367532895, 
+    -120.782396842105, -120.782426151316, -120.782455460526, 
+    -120.782484769737, -120.782514078947, -120.782543388158, 
+    -120.782572697368, -120.782602006579, -120.782631315789, -120.782660625, 
+    -120.782689934211, -120.782719243421, -120.782748552632, 
+    -120.782777861842, -120.782807171053, -120.782836480263, 
+    -120.782865789474, -120.782895098684, -120.782924407895, 
+    -120.782953717105, -120.782983026316, -120.783012335526, 
+    -120.783041644737, -120.783070953947, -120.783100263158, 
+    -120.783129572368, -120.783158881579, -120.783188190789, -120.7832175, 
+    -120.783246809211, -120.783276118421, -120.783305427632, 
+    -120.783334736842, -120.783364046053, -120.783393355263, 
+    -120.783422664474, -120.783451973684, -120.783481282895, 
+    -120.783510592105, -120.783539901316, -120.783569210526, 
+    -120.783598519737, -120.783627828947, -120.783657138158, 
+    -120.783686447368, -120.783715756579, -120.783745065789, -120.783774375, 
+    -120.783803684211, -120.783832993421, -120.783862302632, 
+    -120.783891611842, -120.783920921053, -120.783950230263, 
+    -120.783979539474, -120.784008848684, -120.784038157895, 
+    -120.784067467105, -120.784096776316, -120.784126085526, 
+    -120.784155394737, -120.784184703947, -120.784214013158, 
+    -120.784243322368, -120.784272631579, -120.784301940789, -120.78433125, 
+    -120.784360559211, -120.784389868421, -120.784419177632, 
+    -120.784448486842, -120.784477796053, -120.784507105263, 
+    -120.784536414474, -120.784565723684, -120.784595032895, 
+    -120.784624342105, -120.784653651316, -120.784682960526, 
+    -120.784712269737, -120.784741578947, -120.784770888158, 
+    -120.784800197368, -120.784829506579, -120.784858815789, -120.784888125, 
+    -120.784917434211, -120.784946743421, -120.784976052632, 
+    -120.785005361842, -120.785034671053, -120.785063980263, 
+    -120.785093289474, -120.785122598684, -120.785151907895, 
+    -120.785181217105, -120.785210526316, -120.785239835526, 
+    -120.785269144737, -120.785298453947, -120.785327763158, 
+    -120.785357072368, -120.785386381579, -120.785415690789, -120.785445, 
+    -120.785438333333, -120.785443333333, -120.785441666667, 
+    -120.785453333333, -120.785463333333, -120.785471666667, 
+    -120.785473333333, -120.785478333333, -120.785485, -120.785486666667, 
+    -120.785496666667, -120.78549, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ lon_qc = 0, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ pressure = 0.17, 1.07176470588235, 1.97352941176471, 2.87529411764706, 
+    3.77705882352941, 4.67882352941176, 5.58058823529412, 6.48235294117647, 
+    7.38411764705882, 8.28588235294118, 9.18764705882353, 10.0894117647059, 
+    10.9911764705882, 11.8929411764706, 12.7947058823529, 13.6964705882353, 
+    14.5982352941176, 15.5, 16.4041666666667, 17.3083333333333, 18.2125, 
+    19.1166666666667, 20.0208333333333, 20.925, 21.8291666666667, 
+    22.7333333333333, 23.6375, 24.5416666666667, 25.4458333333333, 26.35, 
+    27.2541666666667, 28.1583333333333, 29.0625, 29.9666666666667, 
+    30.8708333333333, 31.775, 32.6791666666667, 33.5833333333333, 34.4875, 
+    35.3916666666667, 36.2958333333333, 37.2, 38.1041666666667, 
+    39.0083333333333, 39.9125, 40.8166666666667, 41.7208333333333, 42.625, 
+    43.5291666666667, 44.4333333333333, 45.3375, 46.2416666666667, 
+    47.1458333333333, 48.05, 48.9541666666667, 49.8583333333333, 50.7625, 
+    51.6666666666667, 52.5708333333333, 53.475, 54.3791666666667, 
+    55.2833333333333, 56.1875, 57.0916666666667, 57.9958333333333, 58.9, 
+    58.8105769230769, 58.7211538461538, 58.6317307692308, 58.5423076923077, 
+    58.4528846153846, 58.3634615384615, 58.2740384615385, 58.1846153846154, 
+    58.0951923076923, 58.0057692307692, 57.9163461538462, 57.8269230769231, 
+    57.7375, 57.6480769230769, 57.5586538461538, 57.4692307692308, 
+    57.3798076923077, 57.2903846153846, 57.2009615384615, 57.1115384615385, 
+    57.0221153846154, 56.9326923076923, 56.8432692307692, 56.7538461538462, 
+    56.6644230769231, 56.575, 56.4855769230769, 56.3961538461538, 
+    56.3067307692308, 56.2173076923077, 56.1278846153846, 56.0384615384615, 
+    55.9490384615385, 55.8596153846154, 55.7701923076923, 55.6807692307692, 
+    55.5913461538462, 55.5019230769231, 55.4125, 55.3230769230769, 
+    55.2336538461538, 55.1442307692308, 55.0548076923077, 54.9653846153846, 
+    54.8759615384615, 54.7865384615385, 54.6971153846154, 54.6076923076923, 
+    54.5182692307692, 54.4288461538462, 54.3394230769231, 54.25, 
+    53.429696969697, 52.6093939393939, 51.7890909090909, 50.9687878787879, 
+    50.1484848484848, 49.3281818181818, 48.5078787878788, 47.6875757575758, 
+    46.8672727272727, 46.0469696969697, 45.2266666666667, 44.4063636363636, 
+    43.5860606060606, 42.7657575757576, 41.9454545454545, 41.1251515151515, 
+    40.3048484848485, 39.4845454545455, 38.6642424242424, 37.8439393939394, 
+    37.0236363636364, 36.2033333333333, 35.3830303030303, 34.5627272727273, 
+    33.7424242424242, 32.9221212121212, 32.1018181818182, 31.2815151515151, 
+    30.4612121212121, 29.6409090909091, 28.8206060606061, 28.000303030303, 
+    27.18, 26.359696969697, 25.5393939393939, 24.7190909090909, 
+    23.8987878787879, 23.0784848484848, 22.2581818181818, 21.4378787878788, 
+    20.6175757575758, 19.7972727272727, 18.9769696969697, 18.1566666666667, 
+    17.3363636363636, 16.5160606060606, 15.6957575757576, 14.8754545454545, 
+    14.0551515151515, 13.2348484848485, 12.4145454545455, 11.5942424242424, 
+    10.7739393939394, 9.95363636363636, 9.13333333333333, 8.3130303030303, 
+    7.49272727272727, 6.67242424242424, 5.85212121212121, 5.03181818181818, 
+    4.21151515151515, 3.39121212121212, 2.57090909090909, 1.75060606060606, 
+    0.93030303030303, 0.11, _, _, _, _ ;
+
+ pressure_qc = 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, _, _, _, _ ;
+
+ conductivity = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ conductivity_qc = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ density = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ density_qc = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ salinity = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ salinity_qc = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ temperature = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ temperature_qc = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 
+    _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ;
+
+ lat_uv = _ ;
+
+ lon_uv = _ ;
+
+ u = _ ;
+
+ u_qc = _ ;
+
+ v = _ ;
+
+ v_qc = _ ;
+
+ platform = _ ;
+
+ instrument_ctd = _ ;
+}
diff --git a/compliance_checker/tests/data/scalar_coordinate_variable.cdl b/compliance_checker/tests/data/scalar_coordinate_variable.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/scalar_coordinate_variable.cdl
@@ -0,0 +1,18 @@
+netcdf scalar_coordinate_variable {
+dimensions:
+	TIME = 10 ;
+	METER = UNLIMITED ; // (0 currently)
+	DISTANCE = 1 ;
+	VERTICAL = 1 ;
+variables:
+	double VERTICAL ;
+	double HEIGHT ;
+		HEIGHT:coordinates = "TIME METER DISTANCE" ;
+	double DEPTH ;
+		DEPTH:coordinates = "LATITUDE LONGITUDE" ;
+	double LONGITUDE ;
+	double LATITUDE ;
+	double TIME(TIME) ;
+	double METER(METER) ;
+	double DISTANCE ;
+}
diff --git a/compliance_checker/tests/data/self-referencing-var.cdl b/compliance_checker/tests/data/self-referencing-var.cdl
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/data/self-referencing-var.cdl
@@ -0,0 +1,26 @@
+netcdf self-referencing-var {
+dimensions:
+	TIME = 2 ;
+variables:
+	float DEPTH(TIME) ;
+		DEPTH:coordinates = "TIME LATITUDE LONGITUDE NOMINAL_DEPTH DEPTH" ;
+		DEPTH:standard_name = "depth" ;
+		DEPTH:units = "metres" ;
+		DEPTH:reference_datum = "sea surface" ;
+		DEPTH:positive = "down" ;
+	float TEMP(TIME) ;
+		TEMP:coordinates = "TIME LATITUDE LONGITUDE NOMINAL_DEPTH DEPTH" ;
+		TEMP:standard_name = "sea_water_temperature" ;
+		TEMP:units = "Celsius" ;
+	double TIME(TIME) ;
+		TIME:standard_name = "time" ;
+		TIME:units = "days since 1950-01-01 00:00:00 UTC" ;
+		TIME:calendar = "gregorian" ;
+data:
+
+ DEPTH = -0.02751586, 0.03094603 ;
+
+ TEMP = 26.7101, 23.9961 ;
+
+ TIME = 23625.281099537, 23626 ;
+}
diff --git a/compliance_checker/tests/data/units_check.cdl b/compliance_checker/tests/data/units_check.cdl
--- a/compliance_checker/tests/data/units_check.cdl
+++ b/compliance_checker/tests/data/units_check.cdl
@@ -1,39 +1,34 @@
 netcdf units_check {
 dimensions:
-    time = 1 ;
+	time = 1 ;
 variables:
-    uint64 time(time) ;
-        time:units = "seconds since 1970-01-01" ;
-        time:standard_name = "time" ;
-        time:calendar = "gregorian" ;
-
-    float latitude ;
-        latitude:units = "degrees_north" ;
-        latitude:standard_name = "latitude" ;
-        latitude:long_name = "Latitude" ;
-    float longitude ;
-        longitude:units = "degrees_east" ;
-        longitude:standard_name = "longitude" ;
-        longitude:long_name = "Longitude" ;
-
-    float temperature(time) ;
-        temperature:units = "deg_C" ;
-        temperature:standard_name = "sea_water_temperature" ;
-        temperature:long_name = "Seawater Temperature" ;
-
-    int crs; 
-        crs:grid_mapping_name = "latitude_longitude"; 
-        crs:epsg_code = "EPSG:4326" ; 
-        crs:semi_major_axis = 6378137.0 ; 
-        crs:inverse_flattening = 298.257223563 ; 
-
-    int platform ;
-        platform:long_name = "Annapolis" ;
-        platform:comment = "CBIBS Annapolis Buoy" ;
-        platform:wmo_code = "44041" ;
+	uint64 time(time) ;
+		time:units = "seconds since 1970-01-01" ;
+		time:standard_name = "time" ;
+		time:calendar = "gregorian" ;
+	float latitude ;
+		latitude:units = "degrees_north" ;
+		latitude:standard_name = "latitude" ;
+		latitude:long_name = "Latitude" ;
+	float longitude ;
+		longitude:units = "degrees_east" ;
+		longitude:standard_name = "longitude" ;
+		longitude:long_name = "Longitude" ;
+	float temperature(time) ;
+		temperature:units = "deg_C" ;
+		temperature:standard_name = "sea_water_temperature" ;
+		temperature:long_name = "Seawater Temperature" ;
+	int crs ;
+		crs:grid_mapping_name = "latitude_longitude" ;
+		crs:epsg_code = "EPSG:4326" ;
+		crs:semi_major_axis = 6378137. ;
+		crs:inverse_flattening = 298.257223563 ;
+	int platform ;
+		platform:long_name = "Annapolis" ;
+		platform:comment = "CBIBS Annapolis Buoy" ;
+		platform:wmo_code = "44041" ;
 
 // global attributes:
-        :featureType = "timeSeries" ;
-        :platform = "platform" ;
+		:featureType = "timeSeries" ;
+		:platform = "platform" ;
 }
-
diff --git a/compliance_checker/tests/data/valid_coordinates.cdl b/compliance_checker/tests/data/valid_coordinates.cdl
--- a/compliance_checker/tests/data/valid_coordinates.cdl
+++ b/compliance_checker/tests/data/valid_coordinates.cdl
@@ -1,6 +1,6 @@
-netcdf \3051B-A {
+netcdf valid_coordinates {
 dimensions:
-	time = UNLIMITED ; // (40 currently)
+	time = UNLIMITED ; // (0 currently)
 	maxStrlen64 = 64 ;
 variables:
 	char feature_type_instance(maxStrlen64) ;
@@ -19,7 +19,6 @@ variables:
 		time:standard_name = "time" ;
 		time:long_name = "time of measurement" ;
 		time:calendar = "gregorian" ;
-		time:_ChunkSizes = 1000 ;
 	double z ;
 		z:_FillValue = -9999.9 ;
 		z:grid_mapping = "crs" ;
@@ -54,7 +53,6 @@ variables:
 		CD_310:serial_number = "SD-003" ;
 		CD_310:actual_max = 358.189f ;
 		CD_310:grid_mapping = "crs" ;
-		CD_310:_ChunkSizes = 1000 ;
 	double CS_300(time) ;
 		CS_300:_FillValue = -9999.9 ;
 		CS_300:coordinates = "time z latitude longitude" ;
@@ -70,7 +68,6 @@ variables:
 		CS_300:serial_number = "SD-003" ;
 		CS_300:actual_max = 16.7648f ;
 		CS_300:grid_mapping = "crs" ;
-		CS_300:_ChunkSizes = 1000 ;
 	double C_50(time) ;
 		C_50:_FillValue = -9999.9 ;
 		C_50:coordinates = "time z latitude longitude" ;
@@ -87,7 +84,6 @@ variables:
 		C_50:serial_number = "C-228" ;
 		C_50:actual_max = 30.9131f ;
 		C_50:grid_mapping = "crs" ;
-		C_50:_ChunkSizes = 1000 ;
 	double P_4022(time) ;
 		P_4022:_FillValue = -9999.9 ;
 		P_4022:coordinates = "time z latitude longitude" ;
@@ -103,7 +99,6 @@ variables:
 		P_4022:serial_number = "P-1558" ;
 		P_4022:actual_max = 4228.21f ;
 		P_4022:grid_mapping = "crs" ;
-		P_4022:_ChunkSizes = 1000 ;
 	double P_4023(time) ;
 		P_4023:_FillValue = -9999.9 ;
 		P_4023:coordinates = "time z latitude longitude" ;
@@ -119,7 +114,6 @@ variables:
 		P_4023:serial_number = "P-1558" ;
 		P_4023:actual_max = 4228.f ;
 		P_4023:grid_mapping = "crs" ;
-		P_4023:_ChunkSizes = 1000 ;
 	double SDP_850(time) ;
 		SDP_850:_FillValue = -9999.9 ;
 		SDP_850:coordinates = "time z latitude longitude" ;
@@ -136,7 +130,6 @@ variables:
 		SDP_850:serial_number = "P-1558" ;
 		SDP_850:actual_max = 1.79197f ;
 		SDP_850:grid_mapping = "crs" ;
-		SDP_850:_ChunkSizes = 1000 ;
 	double S_40(time) ;
 		S_40:_FillValue = -9999.9 ;
 		S_40:coordinates = "time z latitude longitude" ;
@@ -152,7 +145,6 @@ variables:
 		S_40:serial_number = "" ;
 		S_40:actual_max = 32.3591f ;
 		S_40:grid_mapping = "crs" ;
-		S_40:_ChunkSizes = 1000 ;
 	double TRN_107(time) ;
 		TRN_107:_FillValue = -9999.9 ;
 		TRN_107:coordinates = "time z latitude longitude" ;
@@ -167,7 +159,6 @@ variables:
 		TRN_107:serial_number = "NT-050" ;
 		TRN_107:actual_max = 1.70164f ;
 		TRN_107:grid_mapping = "crs" ;
-		TRN_107:_ChunkSizes = 1000 ;
 	double T_20(time) ;
 		T_20:_FillValue = -9999.9 ;
 		T_20:coordinates = "time z latitude longitude" ;
@@ -183,7 +174,6 @@ variables:
 		T_20:serial_number = "T-0004" ;
 		T_20:actual_max = 4.68896f ;
 		T_20:grid_mapping = "crs" ;
-		T_20:_ChunkSizes = 1000 ;
 	double comp_1404(time) ;
 		comp_1404:_FillValue = -9999.9 ;
 		comp_1404:coordinates = "time z latitude longitude" ;
@@ -199,7 +189,6 @@ variables:
 		comp_1404:serial_number = "" ;
 		comp_1404:actual_max = 226.406f ;
 		comp_1404:grid_mapping = "crs" ;
-		comp_1404:_ChunkSizes = 1000 ;
 	double lowr_4003(time) ;
 		lowr_4003:_FillValue = -9999.9 ;
 		lowr_4003:coordinates = "time z latitude longitude" ;
@@ -214,7 +203,6 @@ variables:
 		lowr_4003:serial_number = "SD-003" ;
 		lowr_4003:actual_max = 9.22f ;
 		lowr_4003:grid_mapping = "crs" ;
-		lowr_4003:_ChunkSizes = 1000 ;
 	double tran_4010(time) ;
 		tran_4010:_FillValue = -9999.9 ;
 		tran_4010:coordinates = "time z latitude longitude" ;
@@ -229,7 +217,6 @@ variables:
 		tran_4010:serial_number = "NT-050" ;
 		tran_4010:actual_max = 1.74803f ;
 		tran_4010:grid_mapping = "crs" ;
-		tran_4010:_ChunkSizes = 1000 ;
 	double u_1205(time) ;
 		u_1205:_FillValue = -9999.9 ;
 		u_1205:coordinates = "time z latitude longitude" ;
@@ -245,7 +232,6 @@ variables:
 		u_1205:serial_number = "SD-003" ;
 		u_1205:actual_max = 0.99513f ;
 		u_1205:grid_mapping = "crs" ;
-		u_1205:_ChunkSizes = 1000 ;
 	double upr_4001(time) ;
 		upr_4001:_FillValue = -9999.9 ;
 		upr_4001:coordinates = "time z latitude longitude" ;
@@ -260,7 +246,6 @@ variables:
 		upr_4001:serial_number = "SD-003" ;
 		upr_4001:actual_max = 12.6294f ;
 		upr_4001:grid_mapping = "crs" ;
-		upr_4001:_ChunkSizes = 1000 ;
 	double v_1206(time) ;
 		v_1206:_FillValue = -9999.9 ;
 		v_1206:coordinates = "time z latitude longitude" ;
@@ -276,7 +261,6 @@ variables:
 		v_1206:serial_number = "SD-003" ;
 		v_1206:actual_max = 16.6106f ;
 		v_1206:grid_mapping = "crs" ;
-		v_1206:_ChunkSizes = 1000 ;
 	double van_1403(time) ;
 		van_1403:_FillValue = -9999.9 ;
 		van_1403:coordinates = "time z latitude longitude" ;
@@ -292,14 +276,12 @@ variables:
 		van_1403:serial_number = "" ;
 		van_1403:actual_max = 199.687f ;
 		van_1403:grid_mapping = "crs" ;
-		van_1403:_ChunkSizes = 1000 ;
 
 // global attributes:
 		:project_summary = "A pilot study to determine the effect of winter storms on sediment movement at two potential dredge spoil disposal areas." ;
 		:VAR_FILL = "" ;
 		:DATA_TYPE = "TIME" ;
-		:DELTA_T = "7.50 minutes\r\n",
-			"" ;
+		:DELTA_T = "7.50 minutes\r\n" ;
 		:DEPTH_CONST = 0 ;
 		:days = 0 ;
 		:DATA_SUBTYPE = "" ;
@@ -332,35 +314,13 @@ variables:
 		:institution = "USGS Woods Hole Coastal and Marine Science Center" ;
 		:MOORING = 305 ;
 		:contributor_name = "B. Butman" ;
-		:DATA_CMNT = " CAPE COD BAY, SITE B.  MV APPLIED.  TRUNCATED AT GAP.  E.S.T.\r\n",
-			"" ;
+		:DATA_CMNT = " CAPE COD BAY, SITE B.  MV APPLIED.  TRUNCATED AT GAP.  E.S.T.\r\n" ;
 		:project_title = "Currents and Sediment Transport in Cape Cod Bay" ;
 		:creator_name = "Rich Signell" ;
 		:COMPOSITE = 0 ;
 		:COORD_SYSTEM = "GEOGRAPHICAL" ;
 		:longitude = -70.24289f ;
-		:summary = "3051B-A        start time =  8 Apr 1986  23:33:45  cycles = 40\n",
-			"               stop  time =  9 Apr 1986  04:26:15  # days = 0\n",
-			"Expt. = \'USGS\'  sampling interval = 7.50 minutes\n",
-			"Lat =  41.927555\n",
-			"Lon = -70.242889  File created:  10:56 JUL 16,\'86\n",
-			"depth = 30m  Mag.var = -15.000000\n",
-			"#  Variable     Units        Codes Depth   Inst.   Minimum   Maximum\n",
-			"-- ------------ ------------ ----- ------- ------ --------- ---------\n",
-			" 1 TIME         SECONDS      T     \n",
-			" 2 U.1          CMS/SEC      R       28.60 SD-003    -2.627     0.995\n",
-			" 3 V.1          CMS/SEC      R       28.60 SD-003     2.540    16.611\n",
-			" 4 VDIR.1       DEG          R       28.60 SD-003     4.861   358.189\n",
-			" 5 VSPD.1       CMS/SEC      R       28.60 SD-003     2.689    16.765\n",
-			" 6 INT_ROTOR1   CMS/SEC      R       28.60 SD-003     3.013    12.629\n",
-			" 7 INT_ROTOR2   CMS/SEC      R       28.60 SD-003     2.431     9.220\n",
-			" 8 VANE         ANG.DEG.     R       28.60          129.375   199.687\n",
-			" 9 COMPASS      ANG.DEG.     R       28.60          226.406   226.406\n",
-			"10 TEMPERATURE  DEG.CELC     R       28.60 T-0004     4.265     4.689\n",
-			"11 PRESSURE-I   MILLIBARS    R       28.60 P-1558  3943.594  4228.212\n",
-			"12 PRESSURE-B   MILLIBARS    R       28.60 P-1558  3942.611  4227.998\n",
-			"13 PSDEV  14 CONDUCTIVITY MHOS15 SALINITY     PPT          R  TIME is expressed as YEAR-MONTH-DAY  HOUR.MINUTE.SECOND\n",
-			"" ;
+		:summary = "3051B-A        start time =  8 Apr 1986  23:33:45  cycles = 40\n               stop  time =  9 Apr 1986  04:26:15  # days = 0\nExpt. = \'USGS\'  sampling interval = 7.50 minutes\nLat =  41.927555\nLon = -70.242889  File created:  10:56 JUL 16,\'86\ndepth = 30m  Mag.var = -15.000000\n#  Variable     Units        Codes Depth   Inst.   Minimum   Maximum\n-- ------------ ------------ ----- ------- ------ --------- ---------\n 1 TIME         SECONDS      T     \n 2 U.1          CMS/SEC      R       28.60 SD-003    -2.627     0.995\n 3 V.1          CMS/SEC      R       28.60 SD-003     2.540    16.611\n 4 VDIR.1       DEG          R       28.60 SD-003     4.861   358.189\n 5 VSPD.1       CMS/SEC      R       28.60 SD-003     2.689    16.765\n 6 INT_ROTOR1   CMS/SEC      R       28.60 SD-003     3.013    12.629\n 7 INT_ROTOR2   CMS/SEC      R       28.60 SD-003     2.431     9.220\n 8 VANE         ANG.DEG.     R       28.60          129.375   199.687\n 9 COMPASS      ANG.DEG.     R       28.60          226.406   226.406\n10 TEMPERATURE  DEG.CELC     R       28.60 T-0004     4.265     4.689\n11 PRESSURE-I   MILLIBARS    R       28.60 P-1558  3943.594  4228.212\n12 PRESSURE-B   MILLIBARS    R       28.60 P-1558  3942.611  4227.998\n13 PSDEV  14 CONDUCTIVITY MHOS15 SALINITY     PPT          R  TIME is expressed as YEAR-MONTH-DAY  HOUR.MINUTE.SECOND\n" ;
 		:creator_phone = "+1 (508) 548-8700" ;
 		:VAR_DESC = "attn v     upper lower vane compass temp int.p pres psdev con sal trans   " ;
 		:EXPERIMENT = "?" ;
@@ -369,21 +329,7 @@ variables:
 		:WATER_MASS = "?" ;
 		:cycles = 40 ;
 		:INST_TYPE = "SD-003 T-0004 P-1558 C-228 NT-050 " ;
-		:history = "Original file creation date was 10:56 JUL 16,\'86\r\n",
-			"Converted to EPIC/NetCDF Fri Dec  6 15:29:21 1996\n",
-			"\n",
-			"Original ascii file was a3051b01.ascChanged epic code 310 to 310 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 300 to 300 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4020 to 4001 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4028 to 4003 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4023 to 1403 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4002 to 1404 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 20 to 20 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4026 to 4022 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4027 to 4023 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 4025 to 850 on Thu Apr 24 18:18:14 1997\n",
-			"Changed epic code 107 to 107 on Thu Apr 24 18:18:14 1997\n",
-			"" ;
+		:history = "Original file creation date was 10:56 JUL 16,\'86\r\nConverted to EPIC/NetCDF Fri Dec  6 15:29:21 1996\n\nOriginal ascii file was a3051b01.ascChanged epic code 310 to 310 on Thu Apr 24 18:18:14 1997\nChanged epic code 300 to 300 on Thu Apr 24 18:18:14 1997\nChanged epic code 4020 to 4001 on Thu Apr 24 18:18:14 1997\nChanged epic code 4028 to 4003 on Thu Apr 24 18:18:14 1997\nChanged epic code 4023 to 1403 on Thu Apr 24 18:18:14 1997\nChanged epic code 4002 to 1404 on Thu Apr 24 18:18:14 1997\nChanged epic code 20 to 20 on Thu Apr 24 18:18:14 1997\nChanged epic code 4026 to 4022 on Thu Apr 24 18:18:14 1997\nChanged epic code 4027 to 4023 on Thu Apr 24 18:18:14 1997\nChanged epic code 4025 to 850 on Thu Apr 24 18:18:14 1997\nChanged epic code 107 to 107 on Thu Apr 24 18:18:14 1997\n" ;
 		:Conventions = "CF-1.6" ;
 		:date_created = "2015-09-14T18:40:00Z" ;
 		:geospatial_lat_min = 41.92756f ;
diff --git a/compliance_checker/tests/resources.py b/compliance_checker/tests/resources.py
new file mode 100644
--- /dev/null
+++ b/compliance_checker/tests/resources.py
@@ -0,0 +1,45 @@
+from pkg_resources import resource_filename
+import os
+import subprocess
+
+def get_filename(path):
+    '''
+    Returns the path to a valid dataset
+    '''
+    filename = resource_filename('compliance_checker', path)
+    if not os.path.exists(filename):
+        cdl_path = filename.replace('.nc', '.cdl')
+        generate_dataset(cdl_path, filename)
+    return filename
+
+def generate_dataset(cdl_path, nc_path):
+    subprocess.call(['ncgen','-o', nc_path, cdl_path])
+
+STATIC_FILES = {
+    'rutgers'                    : get_filename('tests/data/ru07-20130824T170228_rt0.nc'),
+    'conv_multi'                 : get_filename('tests/data/conv_multi.nc'),
+    'conv_bad'                   : get_filename('tests/data/conv_bad.nc'),
+    'example-grid'               : get_filename('tests/data/example-grid.nc'),
+    'badname'                    : get_filename('tests/data/non-comp/badname.netcdf'),
+    'bad'                        : get_filename('tests/data/non-comp/bad.nc'),
+    'dimensionless'              : get_filename('tests/data/dimensionless.nc'),
+    '2dim'                       : get_filename('tests/data/2dim-grid.nc'),
+    'bad2dim'                    : get_filename('tests/data/non-comp/bad2dim.nc'),
+    'rhgrid'                     : get_filename('tests/data/rhgrid.nc'),
+    'bad-rhgrid'                 : get_filename('tests/data/non-comp/bad-rhgrid.nc'),
+    'bad_data_type'              : get_filename('tests/data/bad_data_type.nc'),
+    'mapping'                    : get_filename('tests/data/mapping.nc'),
+    'bad_region'                 : get_filename('tests/data/bad_region.nc'),
+    'featureType'                : get_filename('tests/data/example-grid.nc'),
+    'cont_ragged'                : get_filename('tests/data/cont_ragged.nc'),
+    'index_ragged'               : get_filename('tests/data/index_ragged.nc'),
+    'bad_missing_data'           : get_filename('tests/data/bad_missing_data.nc'),
+    'self-referencing-var'       : get_filename('tests/data/self-referencing-var.nc'),
+    'scalar_coordinate_variable' : get_filename('tests/data/scalar_coordinate_variable.nc'),
+    'coordinates_and_metadata'   : get_filename('tests/data/coordinates_and_metadata.nc'),
+    'ints64'                     : get_filename('tests/data/ints64.nc'),
+    'units_check'                : get_filename('tests/data/units_check.nc'),
+    'self_referencing'           : get_filename('tests/data/non-comp/self_referencing.nc'),
+    'time_units'                 : get_filename('tests/data/non-comp/time_units.nc'),
+    'valid_coordinates'          : get_filename('tests/data/valid_coordinates.nc')
+              }
diff --git a/compliance_checker/tests/test_cf.py b/compliance_checker/tests/test_cf.py
--- a/compliance_checker/tests/test_cf.py
+++ b/compliance_checker/tests/test_cf.py
@@ -5,43 +5,12 @@
 from compliance_checker.cf.util import is_vertical_coordinate, is_time_variable, units_convertible, units_temporal, NCGraph
 from netCDF4 import Dataset
 from tempfile import gettempdir
-from pkg_resources import resource_filename
+from compliance_checker.tests.resources import STATIC_FILES
 
 import unittest
 import os
 import re
 
-
-static_files = {
-    'rutgers'                    : resource_filename('compliance_checker', 'tests/data/ru07-20130824T170228_rt0.nc'),
-    'conv_multi'                 : resource_filename('compliance_checker', 'tests/data/conv_multi.nc'),
-    'conv_bad'                   : resource_filename('compliance_checker', 'tests/data/conv_bad.nc'),
-    'example-grid'               : resource_filename('compliance_checker', 'tests/data/example-grid.nc'),
-    'badname'                    : resource_filename('compliance_checker', 'tests/data/non-comp/badname.netcdf'),
-    'bad'                        : resource_filename('compliance_checker', 'tests/data/non-comp/bad.nc'),
-    'dimensionless'              : resource_filename('compliance_checker', 'tests/data/dimensionless.nc'),
-    '2dim'                       : resource_filename('compliance_checker', 'tests/data/2dim-grid.nc'),
-    'bad2dim'                    : resource_filename('compliance_checker', 'tests/data/non-comp/bad2dim.nc'),
-    'rhgrid'                     : resource_filename('compliance_checker', 'tests/data/rhgrid.nc'),
-    'bad-rhgrid'                 : resource_filename('compliance_checker', 'tests/data/non-comp/bad-rhgrid.nc'),
-    'bad_data_type'              : resource_filename('compliance_checker', 'tests/data/bad_data_type.nc'),
-    'mapping'                    : resource_filename('compliance_checker', 'tests/data/mapping.nc'),
-    'bad_region'                 : resource_filename('compliance_checker', 'tests/data/bad_region.nc'),
-    'featureType'                : resource_filename('compliance_checker', 'tests/data/example-grid.nc'),
-    'cont_ragged'                : resource_filename('compliance_checker', 'tests/data/cont_ragged.nc'),
-    'index_ragged'               : resource_filename('compliance_checker', 'tests/data/index_ragged.nc'),
-    'bad_missing_data'           : resource_filename('compliance_checker', 'tests/data/bad_missing_data.nc'),
-    'self-referencing-var'       : resource_filename('compliance_checker', 'tests/data/self-referencing-var.nc'),
-    'scalar_coordinate_variable' : resource_filename('compliance_checker', 'tests/data/scalar_coordinate_variable.nc'),
-    'coordinates_and_metadata'   : resource_filename('compliance_checker', 'tests/data/coordinates_and_metadata.nc'),
-    'ints64'                     : resource_filename('compliance_checker', 'tests/data/ints64.nc'),
-    'units_check'                : resource_filename('compliance_checker', 'tests/data/units_check.nc'),
-    'self_referencing'           : resource_filename('compliance_checker', 'tests/data/non-comp/self_referencing.nc'),
-    'time_units'                 : resource_filename('compliance_checker', 'tests/data/non-comp/time_units.nc'),
-    'valid_coordinates'          : resource_filename('compliance_checker', 'tests/data/valid_coordinates.nc'),
-}
-
-
 class MockVariable(object):
     '''
     For mocking a dataset variable
@@ -130,11 +99,11 @@ def test_check_data_types(self):
         """
         2.2 The netCDF data types char, byte, short, int, float or real, and double are all acceptable
         """
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_data_types(dataset)
         self.assertTrue(result.value)
 
-        dpair = self.load_dataset(static_files['bad_data_type'])
+        dpair = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_data_types(dpair)
         assert result.value == (5, 6)
 
@@ -144,14 +113,14 @@ def test_naming_conventions(self):
 
         Variable, dimension and attribute names should begin with a letter and be composed of letters, digits, and underscores.
         '''
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_naming_conventions(dataset)
         num_var = len(dataset.variables)
 
         expected = (num_var,) * 2
         self.assertEqual(result.value, expected)
 
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         result = self.cf.check_naming_conventions(dataset)
         num_var = len(dataset.variables)
         expected = (num_var - 1, num_var)
@@ -162,7 +131,7 @@ def test_check_names_unique(self):
         """
         2.3 names should not be distinguished purely by case, i.e., if case is disregarded, no two names should be the same.
         """
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_names_unique(dataset)
 
         num_var = len(dataset.variables)
@@ -177,7 +146,7 @@ def test_check_dimension_names(self):
         2.4 A variable may have any number of dimensions, including zero, and the dimensions must all have different names.
         """
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_dimension_names(dataset)
         assert result.value == (5, 6)
 
@@ -188,7 +157,7 @@ def test_check_dimension_order(self):
         then X in the CDL definition corresponding to the file. All other dimensions should, whenever possible, be placed to the
         left of the spatiotemporal dimensions.
         """
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_dimension_order(dataset)
         assert result.value == (11, 12)
 
@@ -197,7 +166,7 @@ def test_check_fill_value_outside_valid_range(self):
         2.5.1 The _FillValue should be outside the range specified by valid_range (if used) for a variable.
         """
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_fill_value_outside_valid_range(dataset)
         assert sum((result.value for result in results)) == 1
         assert len(results) == 2
@@ -207,17 +176,17 @@ def test_check_conventions_are_cf_16(self):
         2.6.1 the NUG defined global attribute Conventions to the string value "CF-1.6"
         """
         # :Conventions = "CF-1.6"
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_conventions_are_cf_16(dataset)
         self.assertTrue(result.value)
 
         # :Conventions = "CF-1.6 ,ACDD" ;
-        dataset = self.load_dataset(static_files['conv_multi'])
+        dataset = self.load_dataset(STATIC_FILES['conv_multi'])
         result = self.cf.check_conventions_are_cf_16(dataset)
         self.assertTrue(result.value)
 
         # :Conventions = "NoConvention"
-        dataset = self.load_dataset(static_files['conv_bad'])
+        dataset = self.load_dataset(STATIC_FILES['conv_bad'])
         result = self.cf.check_conventions_are_cf_16(dataset)
         self.assertFalse(result.value)
 
@@ -226,12 +195,12 @@ def test_check_convention_globals(self):
         2.6.2 title/history global attributes, must be strings. Do not need to exist.
         """
         # check for pass
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_convention_globals(dataset)
         for each in result:
             self.assertTrue(each.value)
         # check if it doesn't exist that we pass
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_convention_globals(dataset)
         for each in result:
             self.assertTrue(each.value)
@@ -251,12 +220,12 @@ def test_check_convention_possibly_var_attrs(self):
         - if std name specified, must be consistent with standard name table, must also be consistent with a
           specified cell_methods attribute if present
         """
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         result = self.cf.check_convention_possibly_var_attrs(dataset)
         for each in result:
             self.assertTrue(each.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_convention_possibly_var_attrs(dataset)
         for each in result:
             self.assertFalse(each.value)
@@ -267,18 +236,18 @@ def test_check_standard_name(self):
         string value comprised of a standard name optionally followed by one or more blanks and a
         standard name modifier
         """
-        dataset = self.load_dataset(static_files['2dim'])
+        dataset = self.load_dataset(STATIC_FILES['2dim'])
         result = self.cf.check_standard_name(dataset)
         for each in result:
             self.assertTrue(each.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_standard_name(dataset)
         for each in result:
             self.assertFalse(each.value)
 
     def test_check_flags(self):
-        dataset = self.load_dataset(static_files['self_referencing'])
+        dataset = self.load_dataset(STATIC_FILES['self_referencing'])
         results = self.cf.check_flags(dataset)
         scored, out_of, messages = self.get_results(results)
 
@@ -290,12 +259,12 @@ def test_check_flags(self):
 
     def test_check_bad_units(self):
 
-        dataset = self.load_dataset(static_files['2dim'])
+        dataset = self.load_dataset(STATIC_FILES['2dim'])
         result = self.cf.check_units(dataset)
         for each in result:
             self.assertTrue(each.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_units(dataset)
         for each in result:
             self.assertFalse(each.value)
@@ -306,19 +275,19 @@ def test_coordinate_types(self):
 
         We strongly recommend that coordinate variables be used for all coordinate types whenever they are applicable.
         '''
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_coordinate_vars_for_all_coordinate_types(dataset)
         for each in result:
             self.assertTrue(each.value)
 
     def test_check_coordinate_axis_attr(self):
 
-        dataset = self.load_dataset(static_files['2dim'])
+        dataset = self.load_dataset(STATIC_FILES['2dim'])
         result = self.cf.check_coordinate_axis_attr(dataset)
         for each in result:
             self.assertTrue(each.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         result = self.cf.check_coordinate_axis_attr(dataset)
         for each in result:
             if each.name[1] in ['time', 'latitude']:
@@ -332,7 +301,7 @@ def test_latitude(self):
         Section 4.1 Latitude Coordinate
         '''
         # Check compliance
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_latitude(dataset)
         for r in results:
             if isinstance(r.value, tuple):
@@ -341,7 +310,7 @@ def test_latitude(self):
                 self.assertTrue(r.value)
 
         # Verify non-compliance
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_latitude(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -358,7 +327,7 @@ def test_longitude(self):
         Section 4.2 Longitude Coordinate
         '''
         # Check compliance
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_longitude(dataset)
         for r in results:
             if isinstance(r.value, tuple):
@@ -367,7 +336,7 @@ def test_longitude(self):
                 self.assertTrue(r.value)
 
         # Verify non-compliance
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_longitude(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -416,13 +385,13 @@ def test_vertical_coordinate(self):
         '''
         # Check compliance
 
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_vertical_coordinate(dataset)
         for r in results:
             self.assertTrue(r.value)
 
         # Check non-compliance
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_vertical_coordinate(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -436,13 +405,13 @@ def test_vertical_dimension(self):
         Section 4.3.1 Dimensional Vertical Coordinate
         '''
         # Check for compliance
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_dimensional_vertical_coordinate(dataset)
         for r in results:
             self.assertTrue(r.value)
 
         # Check for non-compliance
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_dimensional_vertical_coordinate(dataset)
         for r in results:
             self.assertFalse(r.value)
@@ -497,13 +466,13 @@ def test_dimensionless_vertical(self):
         Section 4.3.2
         '''
         # Check affirmative compliance
-        dataset = self.load_dataset(static_files['dimensionless'])
+        dataset = self.load_dataset(STATIC_FILES['dimensionless'])
         results = self.cf.check_dimensionless_vertical_coordinate(dataset)
         for r in results:
             self.assertTrue(r.value)
 
         # Check negative compliance
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_dimensionless_vertical_coordinate(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -535,12 +504,12 @@ def test_is_time_variable(self):
         self.assertTrue(is_time_variable('maybe_time', var4))
 
     def test_check_time_coordinate(self):
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_time_coordinate(dataset)
         for r in results:
             self.assertTrue(r.value)
 
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_time_coordinate(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -551,12 +520,12 @@ def test_check_time_coordinate(self):
         assert out_of == 3
 
     def test_check_calendar(self):
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_calendar(dataset)
         for r in results:
             self.assertTrue(r.value)
 
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_calendar(dataset)
         scored, out_of, messages = self.get_results(results)
 
@@ -567,7 +536,7 @@ def test_self_referencing(self):
         '''
         This test captures a check where a coordinate has circular references
         '''
-        dataset = self.load_dataset(static_files['self_referencing'])
+        dataset = self.load_dataset(STATIC_FILES['self_referencing'])
         results = self.cf.check_two_dimensional(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -575,7 +544,7 @@ def test_self_referencing(self):
         assert scored == 1
         assert out_of == 3
 
-        dataset = self.load_dataset(static_files['valid_coordinates'])
+        dataset = self.load_dataset(STATIC_FILES['valid_coordinates'])
         results = self.cf.check_two_dimensional(dataset)
         scored, out_of, messages = self.get_results(results)
         assert out_of == 4
@@ -583,12 +552,12 @@ def test_self_referencing(self):
         assert "Variable CD_310's coordinate references itself" not in messages
 
     def test_check_independent_axis_dimensions(self):
-        dataset = self.load_dataset(static_files['example-grid'])
+        dataset = self.load_dataset(STATIC_FILES['example-grid'])
         results = self.cf.check_independent_axis_dimensions(dataset)
         for r in results:
             self.assertTrue(r.value)
 
-        dataset = self.load_dataset(static_files['bad'])
+        dataset = self.load_dataset(STATIC_FILES['bad'])
         results = self.cf.check_independent_axis_dimensions(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -606,12 +575,12 @@ def test_check_independent_axis_dimensions(self):
         assert out_of == 11
 
     def test_check_two_dimensional(self):
-        dataset = self.load_dataset(static_files['2dim'])
+        dataset = self.load_dataset(STATIC_FILES['2dim'])
         results = self.cf.check_two_dimensional(dataset)
         for r in results:
             self.assertTrue(r.value)
         # Need the bad testing
-        dataset = self.load_dataset(static_files['bad2dim'])
+        dataset = self.load_dataset(STATIC_FILES['bad2dim'])
         results = self.cf.check_two_dimensional(dataset)
 
         scored, out_of, messages = self.get_results(results)
@@ -621,12 +590,12 @@ def test_check_two_dimensional(self):
         assert "Variable C's coordinate, lat_p, does not share dimension x with the variable" in messages
 
     def test_check_reduced_horizontal_grid(self):
-        dataset = self.load_dataset(static_files['rhgrid'])
+        dataset = self.load_dataset(STATIC_FILES['rhgrid'])
         results = self.cf.check_reduced_horizontal_grid(dataset)
         rd = { r.name[1] : r.value for r in results }
         self.assertTrue(rd['PS'])
 
-        dataset = self.load_dataset(static_files['bad-rhgrid'])
+        dataset = self.load_dataset(STATIC_FILES['bad-rhgrid'])
         results = self.cf.check_reduced_horizontal_grid(dataset)
         rd = { r.name[1] : (r.value, r.msgs) for r in results }
 
@@ -638,14 +607,14 @@ def test_check_reduced_horizontal_grid(self):
         assert 'PSc' not in list(rd.keys())
 
     def test_check_horz_crs_grid_mappings_projections(self):
-        dataset = self.load_dataset(static_files['mapping'])
+        dataset = self.load_dataset(STATIC_FILES['mapping'])
         results = self.cf.check_horz_crs_grid_mappings_projections(dataset)
         rd = { r.name[1] : r.value for r in results }
         assert rd['wgs84'] == (3, 3)
         assert rd['epsg']  == (7, 8)
 
     def test_check_scalar_coordinate_system(self):
-        dataset = self.load_dataset(static_files['scalar_coordinate_variable'])
+        dataset = self.load_dataset(STATIC_FILES['scalar_coordinate_variable'])
         results = self.cf.check_scalar_coordinate_system(dataset)
         self.assertEqual(len(results), 2)
         for r in results:
@@ -657,25 +626,25 @@ def test_check_scalar_coordinate_system(self):
                 self.assertTrue(False, 'Unexpected variable in results of check_scalar_coordinate_system')
 
     def test_check_geographic_region(self):
-        dataset = self.load_dataset(static_files['bad_region'])
+        dataset = self.load_dataset(STATIC_FILES['bad_region'])
         results = self.cf.check_geographic_region(dataset)
 
         self.assertFalse(results[0].value)
         self.assertTrue(results[1].value)
 
     def test_check_alternative_coordinates(self):
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_alternative_coordinates(dataset)
         self.assertTrue(results[0].value)
 
     # def test_check_cell_boundaries(self):
-    #    dataset = self.load_dataset(static_files['bad_data_type'])
+    #    dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
     #    results = self.cf.check_cell_boundaries(dataset)
     #    print results
     #    self.assertTrue(results[0].value)
 
     def test_check_packed_data(self):
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_packed_data(dataset)
         self.assertEqual(len(results), 4)
         self.assertFalse(results[0].value)
@@ -684,81 +653,81 @@ def test_check_packed_data(self):
         self.assertFalse(results[3].value)
 
     def test_check_compression(self):
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_compression(dataset)
         assert results[0].value == (2, 2)
         assert results[1].value == (0, 2)
 
     def test_check_all_features_are_same_type(self):
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         results = self.cf.check_all_features_are_same_type(dataset)
         assert results is None
 
-        dataset = self.load_dataset(static_files['featureType'])
+        dataset = self.load_dataset(STATIC_FILES['featureType'])
         results = self.cf.check_all_features_are_same_type(dataset)
         self.assertTrue(results.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_all_features_are_same_type(dataset)
         self.assertFalse(results.value)
 
     def test_check_orthogonal_multidim_array(self):
-        dataset = self.load_dataset(static_files['rutgers'])
+        dataset = self.load_dataset(STATIC_FILES['rutgers'])
         results = self.cf.check_orthogonal_multidim_array(dataset)
         for each in results:
             self.assertTrue(each.value)
 
     def test_check_incomplete_multidim_array(self):
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_incomplete_multidim_array(dataset)
         for each in results:
             self.assertTrue(each.value)
 
     def test_check_contiguous_ragged_array(self):
-        dataset = self.load_dataset(static_files['cont_ragged'])
+        dataset = self.load_dataset(STATIC_FILES['cont_ragged'])
         results = self.cf.check_contiguous_ragged_array(dataset)
         for each in results:
             self.assertTrue(each.value)
 
     def test_check_indexed_ragged_array(self):
-        dataset = self.load_dataset(static_files['index_ragged'])
+        dataset = self.load_dataset(STATIC_FILES['index_ragged'])
         results = self.cf.check_indexed_ragged_array(dataset)
         for each in results:
             self.assertTrue(each.value)
 
     def test_check_feature_type(self):
-        dataset = self.load_dataset(static_files['index_ragged'])
+        dataset = self.load_dataset(STATIC_FILES['index_ragged'])
         results = self.cf.check_feature_type(dataset)
         self.assertTrue(results.value)
 
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_feature_type(dataset)
         self.assertFalse(results.value)
 
     def test_check_coordinates_and_metadata(self):
-        dataset = self.load_dataset(static_files['bad_data_type'])
+        dataset = self.load_dataset(STATIC_FILES['bad_data_type'])
         results = self.cf.check_coordinates_and_metadata(dataset)
         self.assertFalse(results[0].value)
         self.assertTrue(results[1].value)
         self.assertFalse(results[2].value)
 
-        dataset = self.load_dataset(static_files['index_ragged'])
+        dataset = self.load_dataset(STATIC_FILES['index_ragged'])
         results = self.cf.check_coordinates_and_metadata(dataset)
         self.assertTrue(results[-1].value)
 
-        dataset = self.load_dataset(static_files['coordinates_and_metadata'])
+        dataset = self.load_dataset(STATIC_FILES['coordinates_and_metadata'])
         results = self.cf.check_coordinates_and_metadata(dataset)
         self.assertTrue(len(results) == 2)
         self.assertFalse(results[0].value)
         self.assertFalse(results[1].value)
 
     def test_check_missing_data(self):
-        dataset = self.load_dataset(static_files['index_ragged'])
+        dataset = self.load_dataset(STATIC_FILES['index_ragged'])
         results = self.cf.check_missing_data(dataset)
         for each in results:
             self.assertTrue(each.value)
 
-        dataset = self.load_dataset(static_files['bad_missing_data'])
+        dataset = self.load_dataset(STATIC_FILES['bad_missing_data'])
         results = self.cf.check_missing_data(dataset)
         for each in results:
             self.assertFalse(each.value)
@@ -767,7 +736,7 @@ def test_check_units(self):
         '''
         Ensure that container variables are not checked for units but geophysical variables are
         '''
-        dataset = self.load_dataset(static_files['units_check'])
+        dataset = self.load_dataset(STATIC_FILES['units_check'])
         results = self.cf.check_units(dataset)
 
         # We don't keep track of the variables names for checks that passed, so
@@ -779,7 +748,7 @@ def test_check_units(self):
         assert messages == []
 
     def test_64bit(self):
-        dataset = self.load_dataset(static_files['ints64'])
+        dataset = self.load_dataset(STATIC_FILES['ints64'])
         suite = CheckSuite()
         suite.checkers = {
             'cf'        : CFBaseCheck
@@ -787,7 +756,7 @@ def test_64bit(self):
         suite.run(dataset, 'cf')
 
     def test_time_units(self):
-        dataset = self.load_dataset(static_files['time_units'])
+        dataset = self.load_dataset(STATIC_FILES['time_units'])
         results = self.cf.check_units(dataset)
         scored, out_of, messages = self.get_results(results)
         assert 'units are days since 1970-01-01, standard_name units should be K' in messages