def _test_layer(self,layer, attr, typ, tf, attr2=None): if attr2 is None: attr2=attr settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = attr settings.endTimeAttribute = attr2 iface=Mock() timeLayer = timevectorlayer.TimeVectorLayer(settings, iface) # TODO #self.assertEqual(settings, ls.getSettingsFromLayer(timeLayer)) self.tlm.registerTimeLayer(timeLayer) self.assertEquals(len(self.tlm.getActiveVectors()),1) self.assertEquals(len(self.tlm.getActiveRasters()),0) self.assertEquals(timeLayer.getDateType(), typ) if tf is not None: self.assertEquals(timeLayer.getTimeFormat(), tf) expected_datetime = time_util.epoch_to_datetime(self.get_start_time()) self.assertEquals(self.tlm.getCurrentTimePosition(),expected_datetime) self.tlm.setTimeFrameType("seconds") self.assertEquals(layer.featureCount(),1) self.assertEquals(self.tlm.getCurrentTimePosition(),expected_datetime) self.tlm.stepForward() self.assertEquals(layer.featureCount(),1) expected_datetime = time_util.epoch_to_datetime(self.get_start_time()+1) self.assertEquals(self.tlm.getCurrentTimePosition(),expected_datetime) self.tlm.setTimeFrameSize(2) self.assertEquals(layer.featureCount(),2)
def _test_layer(self, layer, attr, typ, tf, attr2=None): if attr2 is None: attr2 = attr settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = attr settings.endTimeAttribute = attr2 iface = Mock() timeLayer = timevectorlayer.TimeVectorLayer(settings, iface) # TODO # self.assertEqual(settings, ls.getSettingsFromLayer(timeLayer)) self.tlm.registerTimeLayer(timeLayer) self.assertEquals(len(self.tlm.getActiveVectors()), 1) self.assertEquals(len(self.tlm.getActiveRasters()), 0) self.assertEquals(timeLayer.getDateType(), typ) if tf is not None: self.assertEquals(timeLayer.getTimeFormat(), tf) expected_datetime = time_util.epoch_to_datetime(self.get_start_time()) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.setTimeFrameType("seconds") self.assertEquals(layer.featureCount(), 1) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.stepForward() self.assertEquals(layer.featureCount(), 1) expected_datetime = time_util.epoch_to_datetime(self.get_start_time() + 1) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.setTimeFrameSize(2) self.assertEquals(layer.featureCount(), 2)
def _test_spatialite_layer(self, attr, layer, is_int=False): timeLayer = timevectorlayer.TimeVectorLayer(layer, attr, attr, True, time_util.DEFAULT_FORMAT, 0) self.tlm.registerTimeLayer(timeLayer) if is_int: self.assertEquals(timeLayer.getDateType(), timevectorlayer.DateTypes.IntegerTimestamps) self.assertEquals(timeLayer.getTimeFormat(), time_util.UTC) else: self.assertEquals(timeLayer.getDateType(), timevectorlayer.DateTypes.DatesAsStrings) self.assertEquals(timeLayer.getTimeFormat(), time_util.DEFAULT_FORMAT) start_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[0], time_util.DEFAULT_FORMAT) self.assertEquals(time_util.epoch_to_datetime(STARTTIME), start_time) self.tlm.setTimeFrameType("minutes") self.tlm.stepForward() assert (start_time + timedelta(minutes=1) == self.tlm.getCurrentTimePosition()) # only one feature is selected now, because there is one feature per minute self.assertEquals(layer.featureCount(), 1) FS = 5 self.tlm.setTimeFrameSize(FS) # we have one feature per minute self.assertEquals(layer.featureCount(), FS) subsetString = layer.subsetString() if is_int: expectedSubsetString = INT_FORMAT.format( attr, self.comparison_op, time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition() + timedelta(minutes=FS)), attr, time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition())) self.assertEquals(subsetString, expectedSubsetString) minimum_bound_seconds = int(subsetString.split(" ")[6]) self.assertEquals( self.tlm.getCurrentTimePosition(), time_util.epoch_to_datetime(minimum_bound_seconds)) if not is_int: self.assertEqual(timeLayer.getTimeFormat(), time_util.DEFAULT_FORMAT) expectedSubsetString = STRING_FORMAT.format( attr, self.comparison_op, time_util.datetime_to_str( self.tlm.getCurrentTimePosition() + timedelta(minutes=FS), timeLayer.getTimeFormat()), attr, time_util.datetime_to_str(self.tlm.getCurrentTimePosition(), timeLayer.getTimeFormat())) self.assertEquals(subsetString, expectedSubsetString) self.tlm.stepForward() self.assertEquals(layer.featureCount(), FS)
def _test_spatialite_layer(self, attr, layer, is_int=False): settings = LayerSettings() settings.layer = layer settings.startTimeAttribute = attr settings.endTimeAttribute = attr timeLayer = timevectorlayer.TimeVectorLayer(settings, iface=Mock()) self.tlm.registerTimeLayer(timeLayer) if is_int: self.assertEquals(timeLayer.getDateType(), timevectorlayer.DateTypes.IntegerTimestamps) self.assertEquals(timeLayer.getTimeFormat(), time_util.UTC) else: self.assertEquals(timeLayer.getDateType(), timevectorlayer.DateTypes.DatesAsStrings) self.assertEquals(timeLayer.getTimeFormat(), time_util.DEFAULT_FORMAT) start_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[0], time_util.PENDING) self.assertEquals(time_util.epoch_to_datetime(STARTTIME), start_time) self.tlm.setTimeFrameType("minutes") self.tlm.stepForward() assert start_time + timedelta(minutes=1) == self.tlm.getCurrentTimePosition() # only one feature is selected now, because there is one feature per minute self.assertEquals(layer.featureCount(), 1) FS = 5 self.tlm.setTimeFrameSize(FS) # we have one feature per minute self.assertEquals(layer.featureCount(), FS) subsetString = layer.subsetString() if is_int: expectedSubsetString = INT_FORMAT.format( attr, self.comparison_op, time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition() + timedelta(minutes=FS)), attr, time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition()), ) self.assertEquals(subsetString, expectedSubsetString) minimum_bound_seconds = int(subsetString.split(" ")[6]) self.assertEquals(self.tlm.getCurrentTimePosition(), time_util.epoch_to_datetime(minimum_bound_seconds)) if not is_int: self.assertEqual(timeLayer.getTimeFormat(), time_util.DEFAULT_FORMAT) expectedSubsetString = STRING_FORMAT.format( attr, self.comparison_op, time_util.datetime_to_str( self.tlm.getCurrentTimePosition() + timedelta(minutes=FS), timeLayer.getTimeFormat() ), attr, time_util.datetime_to_str(self.tlm.getCurrentTimePosition(), timeLayer.getTimeFormat()), ) self.assertEquals(subsetString, expectedSubsetString) self.tlm.stepForward() self.assertEquals(layer.featureCount(), FS)
def test_bc_date_conversions_epoch(self): for datestr in self.bc_dates: print datestr dt = time_util.str_to_datetime(datestr) epoch = time_util.datetime_to_epoch(dt) dt2 = time_util.epoch_to_datetime(epoch) assert (dt == dt2)
def test_date_extraction(self): epoch = 1393786800 bandName = "Band 002 / time={} (seconds since 1970-01-01 00:00:00)".format( epoch) self.assertEqual( cdf.CDFRasterLayer.extract_time_from_bandname(bandName), time_util.epoch_to_datetime(epoch))
def _test_layer(self, layer, attr, typ, tf, attr2=None): if attr2 is None: attr2 = attr timeLayer = timevectorlayer.TimeVectorLayer(layer, attr, attr2, True, time_util.DEFAULT_FORMAT, 0) self.tlm.registerTimeLayer(timeLayer) self.assertEquals(timeLayer.getDateType(), typ) self.assertEquals(timeLayer.getTimeFormat(), tf) expected_datetime = time_util.epoch_to_datetime(self.get_start_time()) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.setTimeFrameType("seconds") self.assertEquals(layer.featureCount(), 1) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.stepForward() self.assertEquals(layer.featureCount(), 1) expected_datetime = time_util.epoch_to_datetime(self.get_start_time() + 1) self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime) self.tlm.setTimeFrameSize(2) self.assertEquals(layer.featureCount(), 2)
def test_date_extraction(self): epoch = 1393786800 bandName = "Band 002 / time={} (seconds since 1970-01-01 00:00:00)".format(epoch) self.assertEqual(cdf.CDFRasterLayer.extract_time_from_bandname(bandName), time_util.epoch_to_datetime(epoch))