Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F93268343
test_chrono.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Nov 27, 12:01
Size
2 KB
Mime Type
text/x-python
Expires
Fri, Nov 29, 12:01 (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
22606991
Attached To
R7581 SP4E Homework
test_chrono.py
View Options
from
pybind11_tests
import
chrono
as
m
import
datetime
def
test_chrono_system_clock
():
# Get the time from both c++ and datetime
date1
=
m
.
test_chrono1
()
date2
=
datetime
.
datetime
.
today
()
# The returned value should be a datetime
assert
isinstance
(
date1
,
datetime
.
datetime
)
# The numbers should vary by a very small amount (time it took to execute)
diff
=
abs
(
date1
-
date2
)
# There should never be a days/seconds difference
assert
diff
.
days
==
0
assert
diff
.
seconds
==
0
# We test that no more than about 0.5 seconds passes here
# This makes sure that the dates created are very close to the same
# but if the testing system is incredibly overloaded this should still pass
assert
diff
.
microseconds
<
500000
def
test_chrono_system_clock_roundtrip
():
date1
=
datetime
.
datetime
.
today
()
# Roundtrip the time
date2
=
m
.
test_chrono2
(
date1
)
# The returned value should be a datetime
assert
isinstance
(
date2
,
datetime
.
datetime
)
# They should be identical (no information lost on roundtrip)
diff
=
abs
(
date1
-
date2
)
assert
diff
.
days
==
0
assert
diff
.
seconds
==
0
assert
diff
.
microseconds
==
0
def
test_chrono_duration_roundtrip
():
# Get the difference between two times (a timedelta)
date1
=
datetime
.
datetime
.
today
()
date2
=
datetime
.
datetime
.
today
()
diff
=
date2
-
date1
# Make sure this is a timedelta
assert
isinstance
(
diff
,
datetime
.
timedelta
)
cpp_diff
=
m
.
test_chrono3
(
diff
)
assert
cpp_diff
.
days
==
diff
.
days
assert
cpp_diff
.
seconds
==
diff
.
seconds
assert
cpp_diff
.
microseconds
==
diff
.
microseconds
def
test_chrono_duration_subtraction_equivalence
():
date1
=
datetime
.
datetime
.
today
()
date2
=
datetime
.
datetime
.
today
()
diff
=
date2
-
date1
cpp_diff
=
m
.
test_chrono4
(
date2
,
date1
)
assert
cpp_diff
.
days
==
diff
.
days
assert
cpp_diff
.
seconds
==
diff
.
seconds
assert
cpp_diff
.
microseconds
==
diff
.
microseconds
def
test_chrono_steady_clock
():
time1
=
m
.
test_chrono5
()
assert
isinstance
(
time1
,
datetime
.
timedelta
)
def
test_chrono_steady_clock_roundtrip
():
time1
=
datetime
.
timedelta
(
days
=
10
,
seconds
=
10
,
microseconds
=
100
)
time2
=
m
.
test_chrono6
(
time1
)
assert
isinstance
(
time2
,
datetime
.
timedelta
)
# They should be identical (no information lost on roundtrip)
assert
time1
.
days
==
time2
.
days
assert
time1
.
seconds
==
time2
.
seconds
assert
time1
.
microseconds
==
time2
.
microseconds
def
test_floating_point_duration
():
# Test using a floating point number in seconds
time
=
m
.
test_chrono7
(
35.525123
)
assert
isinstance
(
time
,
datetime
.
timedelta
)
assert
time
.
seconds
==
35
assert
525122
<=
time
.
microseconds
<=
525123
diff
=
m
.
test_chrono_float_diff
(
43.789012
,
1.123456
)
assert
diff
.
seconds
==
42
assert
665556
<=
diff
.
microseconds
<=
665557
Event Timeline
Log In to Comment