def test_with_overloads(self): rd = self.test_data.get_rd('cancm4_tas') field = rd.get() # loaded calendar should match file metadata self.assertEqual(field.temporal.calendar, '365_day') # the overloaded calendar in the request dataset should still be None self.assertEqual(rd.t_calendar, None) dataset = [{'time_region': None, 'uri': [rd.uri], 'alias': u'tas', 't_units': u'days since 1940-01-01 00:00:00', 'variable': u'tas', 't_calendar': u'will_not_work'}] rdc = RequestDatasetCollection(dataset) rd2 = RequestDataset(**dataset[0]) # the overloaded calendar should be passed to the request dataset self.assertEqual(rd2.t_calendar, 'will_not_work') self.assertEqual(rdc.first().t_calendar, 'will_not_work') # when this bad calendar value is used it should raise an exception with self.assertRaises(ValueError): rdc.first().get().temporal.value_datetime dataset = [{'time_region': None, 'uri': [rd.uri], 'alias': u'tas', 't_units': u'days since 1940-01-01 00:00:00', 'variable': u'tas'}] rdc = RequestDatasetCollection(dataset) # ensure the overloaded units are properly passed self.assertEqual(rdc.first().get().temporal.units, 'days since 1940-01-01 00:00:00') # the calendar was not overloaded and the value should be read from the metadata self.assertEqual(rdc.first().get().temporal.calendar, '365_day')
def test(self): env.DIR_DATA = ocgis.env.DIR_TEST_DATA daymet = self.test_data.get_rd('daymet_tmax') tas = self.test_data.get_rd('cancm4_tas') uris = [daymet.uri, tas.uri] variables = ['foo1', 'foo2'] rdc = RequestDatasetCollection() for uri, variable in zip(uris, variables): rd = RequestDataset(uri, variable) rdc.update(rd) self.assertEqual([1, 2], [rd.did for rd in rdc.values()]) variables = ['foo1', 'foo1'] rdc = RequestDatasetCollection() for ii, (uri, variable) in enumerate(zip(uris, variables)): rd = RequestDataset(uri, variable) if ii == 1: with self.assertRaises(KeyError): rdc.update(rd) else: rdc.update(rd) aliases = ['a1', 'a2'] for uri, variable, alias in zip(uris, variables, aliases): rd = RequestDataset(uri, variable, alias=alias) rdc.update(rd) for row in rdc.values(): self.assertIsInstance(row, RequestDataset) self.assertIsInstance(rdc.first(), RequestDataset) self.assertIsInstance(rdc['a2'], RequestDataset)