Esempio n. 1
0
    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')
Esempio n. 2
0
    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)