def test_vector_with_int_timestamps(self): layer = Mock() layer.subsetString.return_value = "" layer.minimumValue.return_value = 60 layer.maximumValue.return_value = 260 layer.uniqueValues.return_value = [60, 260] settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = self.from_attr settings.endTimeAttribute = self.to_attr vector = TimeVectorLayer(settings, iface=Mock()) assert (vector.getTimeFormat() == UTC) td = timedelta(minutes=5) currTime = datetime(1970, 1, 1, 0, 3, 0) vector.setTimeRestriction(currTime, td) layer.setSubsetString.assert_called_with( INT_FORMAT.format(self.from_attr, self.comparison_op, datetime_to_epoch(currTime + td), self.to_attr, datetime_to_epoch(currTime))) currTime = datetime(1980, 1, 1, 0, 0, 2) vector.setTimeRestriction(currTime, td) layer.setSubsetString.assert_called_with( INT_FORMAT.format(self.from_attr, self.comparison_op, datetime_to_epoch(currTime + td), self.to_attr, datetime_to_epoch(currTime)))
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_vector(self): layer = Mock() layer.subsetString.return_value = "" layer.minimumValue.return_value = "1970-01-01 00:01:00" layer.maximumValue.return_value = "1970-01-01 00:04:20" layer.uniqueValues.return_value = [ "1970-01-01 00:04:20", "1970-01-01 00:01:00" ] settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = self.from_attr settings.endTimeAttribute = self.to_attr vector = TimeVectorLayer(settings, iface=Mock()) assert (vector.getTimeFormat() == DEFAULT_FORMAT) td = timedelta(minutes=5) vector.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2), td) layer.setSubsetString.assert_called_with( STRING_FORMAT.format(self.from_attr, self.comparison_op, "1970-01-01 00:05:02", self.to_attr, "1970-01-01 " "00:00:02")) vector.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2), td) layer.setSubsetString.assert_called_with( STRING_FORMAT.format(self.from_attr, self.comparison_op, "1980-01-01 00:05:02", self.to_attr, "1980-01-01 " "00:00:02"))
def registerTweetsTimeLayer(self, fromAttr="T", toAttr="T"): self.layer = QgsVectorLayer( os.path.join(testcfg.TEST_DATA_DIR, 'tweets.shp'), 'tweets', 'ogr') settings = ls.LayerSettings() settings.layer = self.layer settings.startTimeAttribute = fromAttr settings.endTimeAttribute = toAttr self.timeLayer = timevectorlayer.TimeVectorLayer(settings, iface=Mock()) self.assertTrue(not self.timeLayer.hasTimeRestriction()) self.tlm.registerTimeLayer(self.timeLayer) # refresh will have set the time restriction self.assertTrue(self.timeLayer.hasTimeRestriction())
def test_archaeological_range_queries(self): try: layer = self.getArchaelogicalLayer() self.ctrl.setArchaeology(1) assert (time_util.is_archaelogical()) settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = "year" settings.endTimeAttribute = "endyear" iface = Mock() timeLayer = timevectorlayer.TimeVectorLayer(settings, iface) self.tlm.registerTimeLayer(timeLayer) self.assertEquals(len(self.tlm.getActiveVectors()), 1) self.assertEquals(timeLayer.getDateType(), time_util.DateTypes.DatesAsStringsArchaelogical) self.assertEquals(timeLayer.getTimeFormat(), bcdate_util.BC_FORMAT) self.tlm.setTimeFrameType("years") self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-452)) self.assertEquals(layer.featureCount(), 0) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-400)) self.assertEquals(layer.featureCount(), 1) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-352)) self.assertEquals(layer.featureCount(), 2) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-9)) self.assertEquals(layer.featureCount(), 2) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(180)) self.assertEquals(layer.featureCount(), 0) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(1)) self.assertEquals(layer.featureCount(), 2) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(333)) self.assertEquals(layer.featureCount(), 1) self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-450)) self.tlm.setTimeFrameSize(500) self.assertEquals(layer.featureCount(), 4) self.tlm.setTimeFrameSize(1000) self.assertEquals(layer.featureCount(), 5) # expected_datetime = time_util.epoch_to_datetime(self.get_start_time()) #self.assertEquals(self.tlm.getCurrentTimePosition(),expected_datetime) #self.assertEquals(layer.featureCount(),1) #self.tlm.stepForward() #self.tlm.setTimeFrameSize(2) self.tlm.clearTimeLayerList() self.ctrl.setArchaeology(0) except Exception, e: self.tlm.clearTimeLayerList() self.ctrl.setArchaeology(0) raise e
def test_raster_with_int_timetstamps(self): layer = Mock() renderer = Mock() layer.renderer.return_value = renderer settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = 60 settings.endTimeAttribute = 260 raster = TimeRasterLayer(settings, iface=Mock()) assert (raster.getTimeFormat() == UTC) raster.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2), timedelta(minutes=5)) renderer.setOpacity.assert_called_with(1) raster.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2), timedelta(minutes=5)) renderer.setOpacity.assert_called_with(0)
def test_raster(self): layer = Mock() renderer = Mock() layer.renderer.return_value = renderer settings = ls.LayerSettings() settings.layer = layer settings.startTimeAttribute = "1970-01-01 00:00:01" settings.endTimeAttribute = "1970-11-01 06:45:26" raster = TimeRasterLayer(settings, iface=Mock()) assert (raster.getTimeFormat() == DEFAULT_FORMAT) raster.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2), timedelta(minutes=5)) renderer.setOpacity.assert_called_with(1) raster.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2), timedelta(minutes=5)) renderer.setOpacity.assert_called_with(0)
def test_export_exports_last_frame(self): settings = ls.LayerSettings() settings.layer = self.layer settings.startTimeAttribute = DATE_COL settings.endTimeAttribute = DATE_COL iface = Mock() timeLayer = timevectorlayer.TimeVectorLayer(settings, iface) self.tlm.registerTimeLayer(timeLayer) tmpdir = tempfile.mkdtemp() self.tlm.setTimeFrameType("seconds") start_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[0]) end_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[1]) self.ctrl.exportVideo(tmpdir, 100, False) screenshots_generated = glob.glob( os.path.join(tmpdir, FRAME_FILENAME_PREFIX + "*")) # import ipdb; ipdb.set_trace() last_fn = self.ctrl.generateFrameFilename( tmpdir, len(screenshots_generated) - 1, end_time) self.assertEquals(6, len(screenshots_generated)) self.assertIn(last_fn, screenshots_generated) print screenshots_generated shutil.rmtree(tmpdir)