diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-06-14 00:20:06 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-06-14 00:20:06 +0100 |
| commit | 8837fe70049bd5ed7ab583c06d6c9a620a01b351 (patch) | |
| tree | 798e86e707bfecc147a54d999fe826f4bc5dd3a8 /test | |
| parent | 937e4352072486832372fc8ebdb83583be9b8a2a (diff) | |
Tighten up time parsing, and also allow the previously
unsupported Interop HH:MM:SS.sss format for times.
Diffstat (limited to 'test')
| -rw-r--r-- | test/dcp_time_test.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/dcp_time_test.cc b/test/dcp_time_test.cc index 9cd253c1..aff883ad 100644 --- a/test/dcp_time_test.cc +++ b/test/dcp_time_test.cc @@ -19,6 +19,9 @@ #include <boost/test/unit_test.hpp> #include "dcp_time.h" +#include "exceptions.h" + +using boost::optional; /** Check that dcp::Time works */ BOOST_AUTO_TEST_CASE (dcp_time) @@ -100,4 +103,36 @@ BOOST_AUTO_TEST_CASE (dcp_time) /* We must round down in rebase() */ a = dcp::Time (0, 2, 57, 999, 1000); BOOST_CHECK_EQUAL (a.rebase (250), dcp::Time (0, 2, 57, 249, 250)); + + /* Check some allowed constructions from string */ + + /* Interop type 1 */ + a = dcp::Time ("01:23:45:123", optional<int>()); + BOOST_CHECK_EQUAL (a, dcp::Time (1, 23, 45, 123, 250)); + /* Interop type 2 */ + a = dcp::Time ("01:23:45.123", optional<int>()); + BOOST_CHECK_EQUAL (a, dcp::Time (1, 23, 45, 123, 1000)); + /* SMPTE */ + a = dcp::Time ("01:23:45:12", 250); + BOOST_CHECK_EQUAL (a, dcp::Time (1, 23, 45, 12, 250)); + + /* Check some disallowed constructions from string */ + BOOST_CHECK_THROW (dcp::Time ("01:23:45:1234", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45:1234:66", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45:", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23::123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01::45:123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time (":23:45:123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45.1234", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45.1234.66", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45.", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:.123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01::45.123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time (":23:45.123", optional<int>()), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45:123", 250), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45:123:66", 250), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23:45:", 250), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01:23::123", 250), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time ("01::45:123", 250), dcp::DCPReadError); + BOOST_CHECK_THROW (dcp::Time (":23:45:123", 250), dcp::DCPReadError); } |
