@@ -173,6 +173,43 @@ def test_create_file(self):
173173 ds_global_attributes = OrderedDict ((k , dataset .getncattr (k )) for k in dataset .ncattrs ())
174174 self .assertEqual (self .global_attributes , ds_global_attributes )
175175
176+ def test_fill_values (self ):
177+ template = DatasetTemplate (dimensions = {'X' : 10 })
178+ template .variables ['X' ] = {'dimensions' : ['X' ],
179+ 'type' : 'float32' ,
180+ 'attributes' : {'_FillValue' : - 999. }
181+ }
182+ x = np .array ([- 999. , - 999. , - 999. , - 999. , - 999. , 1. , 2. , 3. , 4. , 5 ])
183+ template .variables ['X' ]['values' ] = x
184+ template .to_netcdf (self .temp_nc_file )
185+
186+ dataset = Dataset (self .temp_nc_file )
187+ dsx = dataset .variables ['X' ]
188+ self .assertEqual (- 999. , dsx ._FillValue )
189+ self .assertIsInstance (dsx [:], np .ma .MaskedArray )
190+ self .assertTrue (dsx [:5 ].mask .all ())
191+ self .assertTrue ((dsx [5 :] == x [5 :]).all ())
192+
193+ def test_fill_values_from_masked_array (self ):
194+ template = DatasetTemplate (dimensions = {'X' : 10 })
195+ template .variables ['X' ] = {'dimensions' : ['X' ],
196+ 'type' : 'float32' ,
197+ 'attributes' : {'_FillValue' : - 999. }
198+ }
199+ x = np .array ([- 4 , - 3 , - 2 , - 1 , 0 , 1. , 2. , 3. , 4. , 5 ])
200+ template .variables ['X' ]['values' ] = np .ma .masked_array (x ,
201+ mask = [True , True , True , True , True ,
202+ False , False , False , False , False ]
203+ )
204+ template .to_netcdf (self .temp_nc_file )
205+
206+ dataset = Dataset (self .temp_nc_file )
207+ dsx = dataset .variables ['X' ]
208+ self .assertEqual (- 999. , dsx ._FillValue )
209+ self .assertIsInstance (dsx [:], np .ma .MaskedArray )
210+ self .assertTrue (dsx [:5 ].mask .all ())
211+ self .assertTrue ((dsx [5 :] == x [5 :]).all ())
212+
176213# TODO: add data from multiple numpy arrays
177214# e.g. template.add_data(TIME=time_values, TEMP=temp_values, PRES=pres_values)
178215# TODO: add data from Pandas dataframe (later...)
0 commit comments