+55
-2
lines changedFilter options
+55
-2
lines changed Original file line number Diff line number Diff line change
@@ -65,6 +65,32 @@ def test_duration_construction(self):
65
65
)
66
66
self.assertEqual(expected_td, message.optional_duration.ToTimedelta())
67
67
68
+
def test_duration_sub_annotation(self):
69
+
dt = datetime.datetime.now()
70
+
dr = duration_pb2.Duration()
71
+
td = datetime.timedelta(microseconds=123)
72
+
# datetime - Duration
73
+
self.assertEqual(dt - dr, dt - duration.to_timedelta(dr))
74
+
# timedelta - Duration and Duration - Duration
75
+
self.assertEqual(td - dr, duration.from_timedelta(td) - dr)
76
+
# Duration - timedelta
77
+
self.assertEqual(dr - td, dr - duration.from_timedelta(td))
78
+
79
+
def test_duration_add_annotation(self):
80
+
dt = datetime.datetime.now()
81
+
dr = duration_pb2.Duration()
82
+
dr2 = duration_pb2.Duration(seconds=100)
83
+
# datetime + Duration and Duration + datetime
84
+
self.assertEqual(dt + dr, dr + dt)
85
+
message = well_known_types_test_pb2.WKTMessage(optional_timestamp=dt)
86
+
# Duration + Timestamp
87
+
self.assertEqual(dr + message.optional_timestamp, dr + dt)
88
+
td = datetime.timedelta(microseconds=123)
89
+
# Duration + timedelta and timedelta + Duration
90
+
self.assertEqual(dr + td, td + dr)
91
+
# Duration + Duration
92
+
self.assertEqual(dr + dr2, dr2 + dr)
93
+
68
94
69
95
if __name__ == '__main__':
70
96
unittest.main()
Original file line number Diff line number Diff line change
@@ -64,6 +64,30 @@ def test_timstamp_construction(self):
64
64
optional_timestamp=datetime.datetime.today()
65
65
)
66
66
67
+
def test_timestamp_sub_annotation(self):
68
+
t1 = timestamp_pb2.Timestamp()
69
+
t2 = timestamp_pb2.Timestamp()
70
+
dt = datetime.datetime.now()
71
+
td = datetime.timedelta(hours=0)
72
+
msg = well_known_types_test_pb2.WKTMessage(optional_duration=td)
73
+
# Timestamp - datetime
74
+
self.assertEqual(t1 - dt, t2 - dt)
75
+
# Timestamp - Timestamp
76
+
self.assertEqual(t1 - t2, t2 - t1)
77
+
# datetime - Timestamp
78
+
self.assertEqual(dt - t1, dt - t2)
79
+
# Timestamp - timedelta and Timestamp - Duration
80
+
self.assertEqual(t1 - td, t2 - msg.optional_duration)
81
+
82
+
def test_timestamp_add_annotation(self):
83
+
ts = timestamp_pb2.Timestamp()
84
+
td = datetime.timedelta(hours=0)
85
+
msg = well_known_types_test_pb2.WKTMessage(optional_duration=td)
86
+
# Timestamp + timedelta and timedelta + Timestamp
87
+
self.assertEqual(ts + td, td + ts)
88
+
# Timestamp + Duration and Duration + Timestamp
89
+
self.assertEqual(ts + msg.optional_duration, msg.optional_duration + ts)
90
+
67
91
68
92
if __name__ == '__main__':
69
93
unittest.main()
Original file line number Diff line number Diff line change
@@ -475,8 +475,11 @@ def __add__(self, value) -> Union[datetime.datetime, datetime.timedelta]:
475
475
476
476
__radd__ = __add__
477
477
478
-
def __rsub__(self, dt) -> Union[datetime.datetime, datetime.timedelta]:
479
-
return dt - self.ToTimedelta()
478
+
def __sub__(self, value) -> datetime.timedelta:
479
+
return self.ToTimedelta() - value
480
+
481
+
def __rsub__(self, value) -> Union[datetime.datetime, datetime.timedelta]:
482
+
return value - self.ToTimedelta()
480
483
481
484
482
485
def _CheckDurationValid(seconds, nanos):
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4