Remove odd assertion stopping TZ minutes being more than 30 or less than -30 (DoM... v1.8.82
authorCarl Hetherington <cth@carlh.net>
Wed, 13 Sep 2023 19:37:15 +0000 (21:37 +0200)
committerCarl Hetherington <cth@carlh.net>
Wed, 13 Sep 2023 19:37:15 +0000 (21:37 +0200)
src/utc_offset.cc
test/local_time_test.cc

index d9abcd607c70c27148b1216347ee86a5df3e4949..8d4870ddea8a34870b8e6c422e69400c65df1103 100644 (file)
@@ -50,7 +50,7 @@ UTCOffset::set_hour(int hour)
 void
 UTCOffset::set_minute(int minute)
 {
-       DCP_ASSERT(minute >= -30 && minute <= 30);
+       DCP_ASSERT(minute >= -59 && minute <= 59);
        _minute = minute;
 }
 
index f7f5b133f048e1ce703a2a22b3210d29cc5bbdfe..8d6d997eec8852375ad9b739229e3bcbc123c092 100644 (file)
@@ -186,6 +186,22 @@ BOOST_AUTO_TEST_CASE (local_time_basic_test)
                BOOST_CHECK(t._offset == dcp::UTCOffset(-4, -30));
                BOOST_CHECK_EQUAL (t.as_string(), "2013-01-05T18:06:59-04:30");
        }
+
+       /* KDM seen with a TZ offset of -07:59, which we used to reject because
+        * we only accepted minutes between -30 and +30 (for some reason that I
+        * now can't find).
+        */
+       {
+               dcp::LocalTime t("2023-11-30T23:59:00-07:59");
+               BOOST_CHECK_EQUAL(t._year, 2023);
+               BOOST_CHECK_EQUAL(t._month, 11);
+               BOOST_CHECK_EQUAL(t._day, 30);
+               BOOST_CHECK_EQUAL(t._hour, 23);
+               BOOST_CHECK_EQUAL(t._minute, 59);
+               BOOST_CHECK_EQUAL(t._second, 00);
+               BOOST_CHECK(t._offset == dcp::UTCOffset(-7, -59));
+               BOOST_CHECK_EQUAL(t.as_string(), "2023-11-30T23:59:00-07:59");
+       }
 }