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
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)
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)
def test_hhmmssff(self): assert parse_time("10:11:12.42") == (0, 0, 0, 10, 11, 12, 0.42 * 1000000)
def test_hhmmssoff2(self): assert parse_time("10:11:12+01:30") == (0, 0, 0, 10, 11, 12, 0.0, 90)
def test_hhmmssz(self): self.assertEqual(parse_time("10:11:12Z"), (0, 0, 0, 10, 11, 12, 0.0))
def test_hhmm(self): self.assertEqual(parse_time("10:11"), (0, 0, 0, 10, 11, 0, 0.0))
def test_hhmmssz(self): self.failUnlessEqual( parse_time("10:11:12Z"), (0, 0, 0, 10, 11, 12, 0.0))
def test_hhmm(self): self.failUnlessEqual( parse_time("10:11"), (0, 0, 0, 10, 11, 0, 0.0))
def test_error(self): with pytest.raises(ValueError): parse_time("xxx")
def test_hhmmssoff(self): assert parse_time("10:11:12-01:00") == (0, 0, 0, 10, 11, 12, 0.0)
def test_hhmmssz(self): assert parse_time("10:11:12Z") == (0, 0, 0, 10, 11, 12, 0.0)
def test_hhmmssff(self): assert parse_time("10:11:12.42") == (0, 0, 0, 10, 11, 12, 0.42*1000000)
def test_hhmm(self): assert parse_time("10:11") == (0, 0, 0, 10, 11, 0, 0.0)
def test_hhmmssff(self): self.assertEqual(parse_time("10:11:12.42"), (0, 0, 0, 10, 11, 12, 0.42 * 1000000.0))
def test_hhmmssff(self): self.failUnlessEqual( parse_time("10:11:12.42"), (0, 0, 0, 10, 11, 12, 0.42*1000000.0))
def test_hhmmssoff(self): self.failUnlessEqual( parse_time("10:11:12-01:00"), (0, 0, 0, 10, 11, 12, 0.0))
def test_hhmmssoff(self): self.assertEqual(parse_time("10:11:12-01:00"), (0, 0, 0, 10, 11, 12, 0.0))
def test_hhmmss(self): assert parse_time("10:11:12") == (0, 0, 0, 10, 11, 12, 0.0, None)