def test_ambiguous_format_resolution_yyymmdd_vs_epoch(self):
     val = "20140306"
     dt = time_util.str_to_datetime(val, "%Y%m%d")
     assert (dt == datetime(2014, 3, 6))
     dt = time_util.str_to_datetime(val, time_util.UTC)
     assert (dt == datetime.utcfromtimestamp(int(val)))
     dt = time_util.str_to_datetime(val, time_util.PENDING)
     assert (dt == datetime.utcfromtimestamp(int(val)))
 def test_ambiguous_format_resolution_years_vs_epoch(self):
     val="1600"
     dt = time_util.str_to_datetime(val, "%Y")
     assert(dt == datetime(1600,1,1))
     dt = time_util.str_to_datetime(val, time_util.UTC)
     assert(dt == datetime.utcfromtimestamp(int(val)))
     dt = time_util.str_to_datetime(val, time_util.PENDING) # if not specified, will infer as epoch
     assert(dt == datetime.utcfromtimestamp(int(val)))
 def test_ambiguous_format_resolution_years_vs_epoch(self):
     val = "1600"
     dt = time_util.str_to_datetime(val, "%Y")
     assert (dt == datetime(1600, 1, 1))
     dt = time_util.str_to_datetime(val, time_util.UTC)
     assert (dt == datetime.utcfromtimestamp(int(val)))
     dt = time_util.str_to_datetime(val,
                                    time_util.PENDING)  # if not specified, will infer as epoch
     assert (dt == datetime.utcfromtimestamp(int(val)))
 def test_export(self):
     self.registerTweetsTimeLayer()
     tmpdir = tempfile.mkdtemp()
     self.tlm.setTimeFrameType("hours")
     start_time = time_util.str_to_datetime(self.timeLayer.getMinMaxValues()[0])
     end_time = time_util.str_to_datetime(self.timeLayer.getMinMaxValues()[1])
     layer_duration_in_hours = (end_time-start_time).total_seconds() / 3600.0
     self.ctrl.exportVideoAtPath(tmpdir)
     screenshots_generated =  glob.glob(os.path.join(tmpdir, FRAME_FILENAME_PREFIX+"*"))
     self.assertEqual(len(screenshots_generated), math.ceil(layer_duration_in_hours + 1))
     for i in range(int(math.ceil(layer_duration_in_hours + 1))):
         fn = self.ctrl.generate_frame_filename(tmpdir,i, start_time + timedelta(hours=i))
         self.assertIn(fn, screenshots_generated)
     shutil.rmtree(tmpdir)
 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)
Exemple #6
0
 def test_str_to_bcdate_wrong_digits_when_set_to_default(self):
     self.assertEqual(conf.DEFAULT_DIGITS,
                      bcdate_util.getGlobalDigitSetting())
     dateStrs = ["00005 BC", "123 AD"]
     for dateStr in dateStrs:
         with self.assertRaises(time_util.UnsupportedFormatException):
             dt = time_util.str_to_datetime(dateStr)
Exemple #7
0
 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_str_with_microseconds_returns_float(self):
     dtstr ="2013-06-14 11:30:23.100000"
     dt = time_util.str_to_datetime(dtstr,time_util.PENDING) # test that inference works correctly
     assert(dt.microsecond==100000)
     numeric = time_util.datetime_to_epoch(dt)
     assert(int(numeric)<float(numeric))
     assert(numeric == 1371209423.1)
 def test_str_to_bcdate_wrong_digits_when_explicitly_set(self):
     time_util.setArchDigits(5)
     self.assertEqual(5, bcdate_util.getGlobalDigitSetting())
     dateStrs = ["0005 BC", "123 AD"]
     for dateStr in dateStrs:
         with self.assertRaises(time_util.UnsupportedFormatException):
             dt = time_util.str_to_datetime(dateStr)
     time_util.setArchDigits(conf.DEFAULT_DIGITS)
 def test_str_with_microseconds_returns_float(self):
     dtstr = "2013-06-14 11:30:23.100000"
     dt = time_util.str_to_datetime(dtstr,
                                    time_util.PENDING)  # test that inference works correctly
     assert (dt.microsecond == 100000)
     numeric = time_util.datetime_to_epoch(dt)
     assert (int(numeric) < float(numeric))
     assert (numeric == 1371209423.1)
    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_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.generate_frame_filename(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)
 def test_export(self):
     self.registerTweetsTimeLayer()
     tmpdir = tempfile.mkdtemp()
     self.tlm.setTimeFrameType("hours")
     start_time = time_util.str_to_datetime(
         self.timeLayer.getMinMaxValues()[0])
     end_time = time_util.str_to_datetime(
         self.timeLayer.getMinMaxValues()[1])
     layer_duration_in_hours = (end_time -
                                start_time).total_seconds() / 3600.0
     self.ctrl.exportVideo(tmpdir, 100, False)
     screenshots_generated = glob.glob(
         os.path.join(tmpdir, FRAME_FILENAME_PREFIX + "*"))
     self.assertEqual(len(screenshots_generated),
                      math.ceil(layer_duration_in_hours + 1))
     for i in range(int(math.ceil(layer_duration_in_hours + 1))):
         fn = self.ctrl.generate_frame_filename(
             tmpdir, i, start_time + timedelta(hours=i))
         self.assertIn(fn, screenshots_generated)
     shutil.rmtree(tmpdir)
Exemple #15
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)
 def test_export_with_empty(self):
     """The tweets layer doesn't have tweets for every second. Test that when exporting part
     of it with exportEmpty = False, not all possible frames are exported"""
     self.registerTweetsTimeLayer()
     tmpdir = tempfile.mkdtemp()
     self.tlm.setTimeFrameType("seconds")
     self.ctrl.exportEmpty = lambda: False
     assert(self.ctrl.exportEmpty() == False)
     end_time = time_util.str_to_datetime(self.timeLayer.getMinMaxValues()[1])
     start_time = end_time - timedelta(seconds=100)
     self.tlm.setCurrentTimePosition(start_time)
     layer_duration_in_seconds = (end_time-start_time).total_seconds()
     self.ctrl.exportVideoAtPath(tmpdir)
     screenshots_generated =  glob.glob(os.path.join(tmpdir, FRAME_FILENAME_PREFIX+"*"))
     self.assertTrue(len(screenshots_generated) < math.ceil(layer_duration_in_seconds + 1))
     shutil.rmtree(tmpdir)
    def go_back_and_forth(self,fromAttr, toAttr):

        self.registerTweetsTimeLayer(fromAttr, toAttr)
        # The currentTimePosition should now be the first date in the shapefile
        start_time = time_util.str_to_datetime(self.timeLayer.getMinMaxValues()[0])
        assert( start_time == self.tlm.getCurrentTimePosition())
        self.tlm.setTimeFrameType("hours")
        self.tlm.stepForward()
        assert( start_time + timedelta(hours=1)==self.tlm.getCurrentTimePosition())
        self.tlm.stepForward()
        assert( start_time + timedelta(hours=2)==self.tlm.getCurrentTimePosition())
        self.tlm.stepBackward()
        assert( start_time + timedelta(hours=1)==self.tlm.getCurrentTimePosition())
        self.tlm.setTimeFrameType("seconds")
        self.tlm.stepForward()
        assert( start_time + timedelta(hours=1,seconds=1)==self.tlm.getCurrentTimePosition())
 def test_export_with_empty(self):
     """The tweets layer doesn't have tweets for every second. Test that when exporting part
     of it with exportEmpty = False, not all possible frames are exported"""
     self.registerTweetsTimeLayer()
     tmpdir = tempfile.mkdtemp()
     self.tlm.setTimeFrameType("seconds")
     self.ctrl.exportEmpty = lambda: False
     assert (self.ctrl.exportEmpty() == False)
     end_time = time_util.str_to_datetime(
         self.timeLayer.getMinMaxValues()[1])
     start_time = end_time - timedelta(seconds=100)
     self.tlm.setCurrentTimePosition(start_time)
     layer_duration_in_seconds = (end_time - start_time).total_seconds()
     self.ctrl.exportVideo(tmpdir, 100, False)
     screenshots_generated = glob.glob(
         os.path.join(tmpdir, FRAME_FILENAME_PREFIX + "*"))
     self.assertTrue(
         len(screenshots_generated) < math.ceil(layer_duration_in_seconds +
                                                1))
     shutil.rmtree(tmpdir)
    def go_back_and_forth(self, fromAttr, toAttr):

        self.registerTweetsTimeLayer(fromAttr, toAttr)
        # The currentTimePosition should now be the first date in the shapefile
        start_time = time_util.str_to_datetime(
            self.timeLayer.getMinMaxValues()[0])
        assert (start_time == self.tlm.getCurrentTimePosition())
        self.tlm.setTimeFrameType("hours")
        self.tlm.stepForward()
        assert (start_time +
                timedelta(hours=1) == self.tlm.getCurrentTimePosition())
        self.tlm.stepForward()
        assert (start_time +
                timedelta(hours=2) == self.tlm.getCurrentTimePosition())
        self.tlm.stepBackward()
        assert (start_time +
                timedelta(hours=1) == self.tlm.getCurrentTimePosition())
        self.tlm.setTimeFrameType("seconds")
        self.tlm.stepForward()
        assert (
            start_time +
            timedelta(hours=1, seconds=1) == self.tlm.getCurrentTimePosition())
Exemple #20
0
 def test_bc_date_additions(self):
     for datestr in self.bc_dates:
         dt = time_util.str_to_datetime(datestr)
         new_date = dt + relativedelta(years=1)
         assert (new_date.y == dt.y + 1)
Exemple #21
0
 def test_bc_date_conversions_str(self):
     for datestr in self.bc_dates:
         dt = time_util.str_to_datetime(datestr)
         datestr2 = time_util.datetime_to_str(dt, None)
         assert (datestr == datestr2)
Exemple #22
0
 def test_bc_date_additions(self):
     for datestr in self.bc_dates:
         dt = time_util.str_to_datetime(datestr)
         new_date = dt + relativedelta(years=1)
         assert (new_date.y == dt.y + 1)
Exemple #23
0
 def test_bc_date_conversions_str(self):
     for datestr in self.bc_dates:
         dt = time_util.str_to_datetime(datestr)
         datestr2 = time_util.datetime_to_str(dt, None)
         assert (datestr == datestr2)