summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dcp_time.cc4
-rw-r--r--test/dcp_time_test.cc12
2 files changed, 14 insertions, 2 deletions
diff --git a/src/dcp_time.cc b/src/dcp_time.cc
index d597e3dc..4c16a91a 100644
--- a/src/dcp_time.cc
+++ b/src/dcp_time.cc
@@ -59,12 +59,12 @@ Time::set (double ss)
t = (int (round (ss * 1000)) % 1000) / 4;
s = floor (ss);
- if (s > 60) {
+ if (s >= 60) {
m = s / 60;
s -= m * 60;
}
- if (m > 60) {
+ if (m >= 60) {
h = m / 60;
m -= h * 60;
}
diff --git a/test/dcp_time_test.cc b/test/dcp_time_test.cc
index 6892711e..a8256998 100644
--- a/test/dcp_time_test.cc
+++ b/test/dcp_time_test.cc
@@ -59,4 +59,16 @@ BOOST_AUTO_TEST_CASE (dcp_time)
BOOST_CHECK_EQUAL (libdcp::Time (4128391203LL).to_ticks(), 4128391203LL);
BOOST_CHECK_EQUAL (libdcp::Time (60000).to_ticks(), 60000);
+
+ a = libdcp::Time (3600 * 24, 24);
+ BOOST_CHECK_EQUAL (a.h, 1);
+ BOOST_CHECK_EQUAL (a.m, 0);
+ BOOST_CHECK_EQUAL (a.s, 0);
+ BOOST_CHECK_EQUAL (a.t, 0);
+
+ a = libdcp::Time (60 * 24, 24);
+ BOOST_CHECK_EQUAL (a.h, 0);
+ BOOST_CHECK_EQUAL (a.m, 1);
+ BOOST_CHECK_EQUAL (a.s, 0);
+ BOOST_CHECK_EQUAL (a.t, 0);
}