Skip to content

Commit

Permalink
Improve the tests on XmlDuration to handle complex durations.
Browse files Browse the repository at this point in the history
Signed-off-by: Raphaël Barrois <raphael.barrois@polyconseil.fr>
(cherry picked from commit 3796047)

Conflicts:

	src/rpclib/test/model/test_primitive.py

Signed-off-by: Burak Arslan <burak+github@arskom.com.tr>
  • Loading branch information
plq committed May 23, 2011
1 parent 0e4bfcc commit a08a228
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
11 changes: 7 additions & 4 deletions src/rpclib/test/model/test_primitive.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,24 +60,27 @@ def test_datetime(self):
self.assertEquals(n, dt)

def test_duration_timedelta(self):
delta = datetime.timedelta(days=2, seconds=3672)
delta = datetime.timedelta(days=400, seconds=3672)

element = etree.Element('test')
Duration.to_parent_element(delta, ns_test, element)
element = element[0]

self.assertEquals(element.text, 'P2DT1H1M12S')
self.assertEquals(element.text, 'P400DT3672S')
du = Duration.from_xml(element)
self.assertEquals(delta, du)

def test_duration_xml_duration(self):
dur = XmlDuration(days=2, seconds=3)
dur = XmlDuration(years=1, months=1, days=5,
hours=1, minutes=1, seconds=12.0)
dur2 = XmlDuration.from_string('P1Y1M5DT1H1M12S')
self.assertEquals(dur.as_timedelta(), dur2.as_timedelta())

element = etree.Element('test')
Duration.to_parent_element(dur, ns_test, element)
element = element[0]

self.assertEquals(element.text, 'P2DT3S')
self.assertEquals(element.text, 'P1Y1M5DT1H1M12S')
du = Duration.from_xml(element)
self.assertEquals(dur.as_timedelta(), du)

Expand Down
8 changes: 2 additions & 6 deletions src/rpclib/util/duration.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,8 @@ def from_timedelta(cls, timedelta):
negative = True
else:
negative = False
seconds = timedelta.seconds % 60
minutes = timedelta.seconds / 60
hours = minutes / 60
minutes = minutes % 60
seconds = float(seconds) + timedelta.microseconds / 1000000
return cls(days=timedelta.days, hours=hours, minutes=minutes, seconds=seconds, negative=negative)
seconds = float(timedelta.seconds) + timedelta.microseconds / 1000000
return cls(days=timedelta.days, seconds=seconds, negative=negative)

@classmethod
def from_string(cls, string):
Expand Down

0 comments on commit a08a228

Please sign in to comment.