示例#1
0
 def test_can_retain_offset_from_end_of_month(self):
     d = Date(1976, 1, -1)
     self.assertEqual(d, Date(1976, 1, 31))
     d += Duration(months=1)
     self.assertEqual(d, Date(1976, 2, 29))
     d += Duration(months=1)
     self.assertEqual(d, Date(1976, 3, 31))
     d += Duration(months=1)
     self.assertEqual(d, Date(1976, 4, 30))
     d += Duration(months=1)
     self.assertEqual(d, Date(1976, 5, 31))
     d += Duration(months=1)
     self.assertEqual(d, Date(1976, 6, 30))
示例#2
0
 def test_str(self):
     self.assertEqual(str(Duration()), "PT0S")
     self.assertEqual(str(Duration(years=1, months=2)), "P1Y2M")
     self.assertEqual(str(Duration(years=-1, months=2)), "P-10M")
     self.assertEqual(str(Duration(months=-13)), "P-1Y-1M")
     self.assertEqual(str(Duration(months=2, days=3, seconds=5.7)), "P2M3DT5.7S")
     self.assertEqual(str(Duration(hours=12, minutes=34)), "PT12H34M")
     self.assertEqual(str(Duration(seconds=59)), "PT59S")
     self.assertEqual(str(Duration(seconds=0.123456789)), "PT0.123456789S")
     self.assertEqual(str(Duration(seconds=-0.123456789)), "PT-0.123456789S")
示例#3
0
def hydrate_date(days):
    """ Hydrator for `Date` values.

    :param days:
    :return: Date
    """
    return UNIX_EPOCH_DATE + Duration(days=days)
示例#4
0
 def test_milliseconds_only(self):
     d = Duration(milliseconds=1234.567)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 1)
     self.assertEqual(d.subseconds, 0.234567)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (0, 0, 1.234567))
示例#5
0
 def test_weeks_only(self):
     d = Duration(weeks=4)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 28)
     self.assertEqual(d.seconds, 0)
     self.assertEqual(d.subseconds, 0.0)
     self.assertEqual(d.years_months_days, (0, 0, 28))
     self.assertEqual(d.hours_minutes_seconds, (0, 0, 0.0))
示例#6
0
 def test_days_only(self):
     d = Duration(days=40)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 40)
     self.assertEqual(d.seconds, 0)
     self.assertEqual(d.subseconds, 0.0)
     self.assertEqual(d.years_months_days, (0, 0, 40))
     self.assertEqual(d.hours_minutes_seconds, (0, 0, 0.0))
示例#7
0
 def test_hours_only(self):
     d = Duration(hours=10)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 36000)
     self.assertEqual(d.subseconds, 0.0)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (10, 0, 0.0))
示例#8
0
 def test_minutes_only(self):
     d = Duration(minutes=90.5)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 5430)
     self.assertEqual(d.subseconds, 0.0)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (1, 30, 30.0))
示例#9
0
 def test_seconds_only(self):
     d = Duration(seconds=123.456)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 123)
     self.assertEqual(d.subseconds, 0.456)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (0, 2, 3.456))
示例#10
0
 def test_positive_negative_positive(self):
     d = Duration(years=1, months=2, days=-3, hours=4, minutes=5, seconds=6.789)
     self.assertEqual(d.months, 14)
     self.assertEqual(d.days, -3)
     self.assertEqual(d.seconds, 14706)
     self.assertEqual(d.subseconds, 0.789)
     self.assertEqual(d.years_months_days, (1, 2, -3))
     self.assertEqual(d.hours_minutes_seconds, (4, 5, 6.789))
示例#11
0
 def test_negative_positive_negative(self):
     d = Duration(years=-1, months=-2, days=3, hours=-4, minutes=-5, seconds=-6.789)
     self.assertEqual(d.months, -14)
     self.assertEqual(d.days, 3)
     self.assertEqual(d.seconds, -14706)
     self.assertEqual(d.subseconds, -0.789)
     self.assertEqual(d.years_months_days, (-1, -2, 3))
     self.assertEqual(d.hours_minutes_seconds, (-4, -5, -6.789))
示例#12
0
 def test_nanoseconds_only(self):
     d = Duration(nanoseconds=1234.567)
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 0)
     self.assertEqual(d.subseconds, 0.000001234)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (0, 0, 0.000001234))
示例#13
0
 def test_zero(self):
     d = Duration()
     self.assertEqual(d.months, 0)
     self.assertEqual(d.days, 0)
     self.assertEqual(d.seconds, 0)
     self.assertEqual(d.subseconds, 0.0)
     self.assertEqual(d.years_months_days, (0, 0, 0))
     self.assertEqual(d.hours_minutes_seconds, (0, 0, 0.0))
     self.assertFalse(bool(d))
示例#14
0
    def _hydrate_duration(self, months, days, seconds, nanoseconds):
        """ Hydrator for `Duration` values.

        :param months:
        :param days:
        :param seconds:
        :param nanoseconds:
        :return: `duration` namedtuple
        """
        return Duration(months=months, days=days, seconds=seconds, nanoseconds=nanoseconds)
示例#15
0
def hydrate_datetime(seconds, nanoseconds, tz=None):
    """ Hydrator for `DateTime` and `LocalDateTime` values.

    :param seconds:
    :param nanoseconds:
    :param tz:
    :return: datetime
    """
    minutes, seconds = map(int, divmod(seconds, 60))
    hours, minutes = map(int, divmod(minutes, 60))
    days, hours = map(int, divmod(hours, 24))
    seconds = (1000000000 * seconds + nanoseconds) / 1000000000
    t = DateTime.combine(UNIX_EPOCH_DATE + Duration(days=days),
                         Time(hours, minutes, seconds))
    if tz is None:
        return t
    if isinstance(tz, int):
        tz_offset_minutes, tz_offset_seconds = divmod(tz, 60)
        zone = FixedOffset(tz_offset_minutes)
    else:
        zone = timezone(tz)
    return zone.localize(t)
示例#16
0
 def test_repr(self):
     d = Duration(months=2, days=3, seconds=5.7)
     self.assertEqual(repr(d), "Duration(months=2, days=3, seconds=5, subseconds=0.7)")
示例#17
0
def test_duration(graph):
    skip_if_no_temporal_support(graph)
    i = Duration(months=1, days=2, seconds=3)
    o = graph.evaluate("RETURN $x", x=i)
    assert o == i
示例#18
0
 def test_duration_property(self):
     a = Node(dur=Duration(days=3))
     r = cypher_repr(a)
     self.assertEqual("({dur: duration('P3D')})", r)
示例#19
0
 def test_floor_division_and_modulus_by_int(self):
     d1 = Duration(months=11, days=33, seconds=55.77)
     i = 2
     self.assertEqual(divmod(d1, i), (Duration(months=5, days=16, seconds=27.0),
                                      Duration(months=1, days=1, seconds=1.77)))
示例#20
0
 def test_sub_duration(self):
     ct = ClockTime(123456.789) - Duration(seconds=1)
     self.assertEqual(ct.seconds, 123455)
     self.assertEqual(ct.nanoseconds, 789000000)
示例#21
0
 def test_sub_duration_with_months(self):
     with self.assertRaises(ValueError):
         _ = ClockTime(123456.789) - Duration(months=1)
示例#22
0
 def test_floor_division_and_modulus_by_object(self):
     with self.assertRaises(TypeError):
         _ = divmod(Duration(months=2, days=3, seconds=5.7), object())
示例#23
0
def test_timedelta_and_duration(cls):
    from neotime import Duration
    b, unpacked = pack_and_unpack(cls(), version=(2, 0))
    assert b == b"\xB4E\x00\x00\x00\x00"
    assert unpacked == Duration()
示例#24
0
 def test_true_division_by_float(self):
     d1 = Duration(months=11, days=33, seconds=55.77)
     f = 2.5
     self.assertEqual(d1 / f, Duration(months=4, days=13, seconds=22.308))
示例#25
0
 def test_true_division_by_int(self):
     d1 = Duration(months=11, days=33, seconds=55.77)
     i = 2
     self.assertEqual(d1 / i, Duration(months=6, days=16, seconds=27.885))
示例#26
0
 def test_days_out_of_range(self):
     with self.assertRaises(ValueError):
         _ = Duration(days=(2**64))
示例#27
0
 def test_true_division_by_object(self):
     with self.assertRaises(TypeError):
         _ = Duration(months=2, days=3, seconds=5.7) / object()
示例#28
0
 def test_unary_plus(self):
     d = Duration(months=11, days=33, seconds=55.77)
     self.assertEqual(+d, Duration(months=11, days=33, seconds=55.77))
示例#29
0
 def test_unary_minus(self):
     d = Duration(months=11, days=33, seconds=55.77)
     self.assertEqual(-d, Duration(months=-11, days=-33, seconds=-55.77))
示例#30
0
 def test_absolute(self):
     d = Duration(months=-11, days=-33, seconds=-55.77)
     self.assertEqual(abs(d), Duration(months=11, days=33, seconds=55.77))