Skip to content

Commit a308567

Browse files
committed
unittests for adding attributes, dimensions, variables and variable values
1 parent 04fb50a commit a308567

1 file changed

Lines changed: 47 additions & 8 deletions

File tree

test_ncwriter/test_template.py

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from collections import OrderedDict
22
import json
3+
import numpy as np
34
import os
45
import unittest
56

@@ -46,19 +47,57 @@ def test_init_from_partial_template(self):
4647
self.assertEqual(tdict['variables'], template.variables)
4748
self.assertEqual(tdict['global_attributes'], template.global_attributes)
4849

50+
# TODO: def test_json_validation(self):
51+
4952
# TODO: create template from other formats (later...)
5053

51-
# TODO: add global attributes
52-
# e.g. template.title = 'Test dataset'
54+
def test_add_global_attributes(self):
55+
template = DatasetTemplate()
56+
template.global_attributes.update(self.global_attributes)
57+
self.assertEqual(self.global_attributes, template.global_attributes)
58+
59+
def test_add_dimensions(self):
60+
template = DatasetTemplate.from_json(TEMPLATE_PARTIAL_JSON)
61+
template.dimensions['TIME'] = 100
62+
template.dimensions['DEPTH'] = 10
63+
self.assertEqual(OrderedDict([('TIME', 100), ('DEPTH', 10)]), template.dimensions)
64+
65+
def test_update_dimensions(self):
66+
template = DatasetTemplate.from_json(TEMPLATE_JSON)
67+
template.dimensions['TIME'] = 100
68+
template.dimensions['DEPTH'] = 10
69+
self.assertDictContainsSubset(OrderedDict([('TIME', 100), ('DEPTH', 10)]), template.dimensions)
70+
71+
def test_add_variables(self):
72+
template = DatasetTemplate.from_json(TEMPLATE_PARTIAL_JSON)
73+
template.variables['TIME'] = self.variables['TIME']
74+
self.assertEqual(['TEMP', 'TIME'], template.variables.keys())
75+
self.assertEqual(self.variables['TIME'], template.variables['TIME'])
5376

54-
# TODO: add dimensions
55-
# e.g. template.dimensions['TIME'] = 100
77+
def test_add_variable_dimensions(self):
78+
template = DatasetTemplate.from_json(TEMPLATE_PARTIAL_JSON)
79+
template.variables['TEMP']['dims'] = ['TIME', 'DEPTH']
80+
self.assertEqual(['TIME', 'DEPTH'], template.variables['TEMP']['dims'])
5681

57-
# TODO: add variables
58-
# TODO: add variable attributes
59-
# e.g. template.variables['PRES']['units'] = 'dbar'
82+
def test_add_variable_attributes(self):
83+
template = DatasetTemplate.from_json(TEMPLATE_PARTIAL_JSON)
84+
template.variables['TEMP']['attr'].update([('units', 'Kelvin'),
85+
('comment', 'ok')
86+
])
87+
self.assertEqual(OrderedDict([('standard_name', 'sea_water_temperature'),
88+
('units', 'Kelvin'),
89+
('comment', 'ok')
90+
]),
91+
template.variables['TEMP']['attr']
92+
)
93+
94+
def test_set_variable_values(self):
95+
template = DatasetTemplate.from_json(TEMPLATE_JSON)
96+
temp_val = np.arange(10, dtype=np.float32)
97+
template.variables['TEMP']['values'] = temp_val
98+
self.assertTrue(all(template.variables['TEMP']['values'] == temp_val))
6099

61-
# TODO: add data from numpy arrays
100+
# TODO: add data from multiple numpy arrays
62101
# e.g. template.add_data(TIME=time_values, TEMP=temp_values, PRES=pres_values)
63102
# TODO: add data from Pandas dataframe (later...)
64103
# e.g. template.add_data(dataframe)

0 commit comments

Comments
 (0)