示例#1
0
    def _validate(val, val_exp, field_type, driver):

        if field_type == 'date':
            return val == val_exp.isoformat()

        elif field_type == 'datetime':

            # some drivers do not support timezones. In this case, Fiona converts datetime fields with a timezone other
            # than UTC to UTC. Thus, both the datetime read by Fiona, as well as expected value are first converted to
            # UTC before compared.

            # Milliseconds
            if _driver_supports_milliseconds(driver):
                y, m, d, hh, mm, ss, ms, tz = parse_datetime(val)
                if tz is not None:
                    tz = TZ(tz)
                val_d = datetime.datetime(y, m, d, hh, mm, ss, ms, tz)
                return compare_datetimes_utc(val_d, val_exp)
            else:
                # No Milliseconds
                y, m, d, hh, mm, ss, ms, tz = parse_datetime(val)
                if tz is not None:
                    tz = TZ(tz)
                val_d = datetime.datetime(y, m, d, hh, mm, ss, ms, tz)
                return compare_datetimes_utc(val_d,
                                             val_exp.replace(microsecond=0))

        elif field_type == 'time':

            # some drivers do not support timezones. In this case, Fiona converts datetime fields with a timezone other
            # than UTC to UTC. Thus, both the time read by Fiona, as well as expected value are first converted to UTC
            # before compared.

            # Milliseconds
            if _driver_supports_milliseconds(driver):
                y, m, d, hh, mm, ss, ms, tz = parse_time(val)
                if tz is not None:
                    tz = TZ(tz)
                val_d = datetime.time(hh, mm, ss, ms, tz)
                return compare_times_utc(val_d, val_exp)
            else:
                # No Milliseconds
                y, m, d, hh, mm, ss, ms, tz = parse_time(val)
                if tz is not None:
                    tz = TZ(tz)
                val_d = datetime.time(hh, mm, ss, ms, tz)
                return compare_times_utc(val_d, val_exp.replace(microsecond=0))
        return False
示例#2
0
文件: test_rfc3339.py 项目: olt/Fiona
 def test_hhmmssoff(self):
     y, m, d, hh, mm, ss, ff = parse_time("10:11:12-01:00")
     self.failUnlessEqual(y, 0)
     self.failUnlessEqual(hh, 10)
     self.failUnlessEqual(mm, 11)
     self.failUnlessEqual(ss, 12)
     self.failUnlessEqual(ff, 0.0)
示例#3
0
文件: test_rfc3339.py 项目: olt/Fiona
 def test_hhmm(self):
     y, m, d, hh, mm, ss, ff = parse_time("10:11")
     self.failUnlessEqual(y, 0)
     self.failUnlessEqual(hh, 10)
     self.failUnlessEqual(mm, 11)
     self.failUnlessEqual(ss, 0)
     self.failUnlessEqual(ff, 0.0)
示例#4
0
 def test_hhmmssff(self):
     assert parse_time("10:11:12.42") == (0, 0, 0, 10, 11, 12,
                                          0.42 * 1000000)
示例#5
0
 def test_hhmmssoff2(self):
     assert parse_time("10:11:12+01:30") == (0, 0, 0, 10, 11, 12, 0.0, 90)
示例#6
0
 def test_hhmmssz(self):
     self.assertEqual(parse_time("10:11:12Z"), (0, 0, 0, 10, 11, 12, 0.0))
示例#7
0
 def test_hhmm(self):
     self.assertEqual(parse_time("10:11"), (0, 0, 0, 10, 11, 0, 0.0))
示例#8
0
 def test_hhmmssz(self):
     self.failUnlessEqual(
         parse_time("10:11:12Z"), (0, 0, 0, 10, 11, 12, 0.0))
示例#9
0
 def test_hhmm(self):
     self.failUnlessEqual(
         parse_time("10:11"), (0, 0, 0, 10, 11, 0, 0.0))
示例#10
0
 def test_error(self):
     with pytest.raises(ValueError):
         parse_time("xxx")
示例#11
0
 def test_hhmmssoff(self):
     assert parse_time("10:11:12-01:00") == (0, 0, 0, 10, 11, 12, 0.0)
示例#12
0
 def test_hhmmssz(self):
     assert parse_time("10:11:12Z") == (0, 0, 0, 10, 11, 12, 0.0)
示例#13
0
 def test_hhmmssff(self):
     assert parse_time("10:11:12.42") == (0, 0, 0, 10, 11, 12, 0.42*1000000)
示例#14
0
 def test_hhmm(self):
     assert parse_time("10:11") == (0, 0, 0, 10, 11, 0, 0.0)
示例#15
0
 def test_hhmmssz(self):
     assert parse_time("10:11:12Z") == (0, 0, 0, 10, 11, 12, 0.0)
示例#16
0
 def test_hhmmssoff(self):
     assert parse_time("10:11:12-01:00") == (0, 0, 0, 10, 11, 12, 0.0)
示例#17
0
 def test_error(self):
     with pytest.raises(ValueError):
         parse_time("xxx")
示例#18
0
 def test_hhmm(self):
     self.assertEqual(parse_time("10:11"), (0, 0, 0, 10, 11, 0, 0.0))
示例#19
0
 def test_hhmmssff(self):
     self.assertEqual(parse_time("10:11:12.42"), (0, 0, 0, 10, 11, 12, 0.42 * 1000000.0))
示例#20
0
 def test_hhmmssff(self):
     self.failUnlessEqual(
         parse_time("10:11:12.42"),
         (0, 0, 0, 10, 11, 12, 0.42*1000000.0))
示例#21
0
 def test_hhmmssz(self):
     self.assertEqual(parse_time("10:11:12Z"), (0, 0, 0, 10, 11, 12, 0.0))
示例#22
0
 def test_hhmmssoff(self):
     self.failUnlessEqual(
         parse_time("10:11:12-01:00"), (0, 0, 0, 10, 11, 12, 0.0))
示例#23
0
 def test_hhmmssoff(self):
     self.assertEqual(parse_time("10:11:12-01:00"), (0, 0, 0, 10, 11, 12, 0.0))
示例#24
0
 def test_hhmmssff(self):
     self.assertEqual(parse_time("10:11:12.42"),
                      (0, 0, 0, 10, 11, 12, 0.42 * 1000000.0))
示例#25
0
 def test_hhmm(self):
     assert parse_time("10:11") == (0, 0, 0, 10, 11, 0, 0.0)
示例#26
0
 def test_hhmmssoff(self):
     self.assertEqual(parse_time("10:11:12-01:00"),
                      (0, 0, 0, 10, 11, 12, 0.0))
示例#27
0
 def test_hhmmss(self):
     assert parse_time("10:11:12") == (0, 0, 0, 10, 11, 12, 0.0, None)