From a19c28924d28f3633727bf86f92a0aaeb9ed7692 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Dec 2025 15:11:51 +0000 Subject: Add utility for parsing an ISO like duration --- test/Jamfile.jam | 9 +++++++++ test/test-util.cpp | 31 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 test/test-util.cpp (limited to 'test') diff --git a/test/Jamfile.jam b/test/Jamfile.jam index 6574046..98c0d9a 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -21,6 +21,15 @@ lib testing-util : ..//dbpp-postgresql ; +run test-util.cpp : : : + BOOST_TEST_DYN_LINK + testing-util + ..//dbpp-postgresql + boost_unit_test_framework + dbpptestcore + stdc++fs + ; + run test-ingest.cpp : -- : ../src/schema.sql diff --git a/test/test-util.cpp b/test/test-util.cpp new file mode 100644 index 0000000..5850411 --- /dev/null +++ b/test/test-util.cpp @@ -0,0 +1,31 @@ +#define BOOST_TEST_MODULE ingest +#include +#include + +#include + +namespace WebStat { +} + +using DurationParserData = std::tuple; + +BOOST_TEST_DECORATOR(*boost::unit_test::timeout(1)) + +BOOST_DATA_TEST_CASE(durationParser, + boost::unit_test::data::make({ + {"", std::chrono::milliseconds {0}}, + {"123ms", std::chrono::milliseconds {123}}, + {"45s", std::chrono::seconds {45}}, + {"10m", std::chrono::minutes {10}}, + {"7h", std::chrono::hours {7}}, + {"2d", std::chrono::days {2}}, + {"7w", std::chrono::weeks {7}}, + {"1w4d3h45m10s1ms", + std::chrono::weeks {1} + std::chrono::days {4} + std::chrono::hours {3} + + std::chrono::minutes {45} + std::chrono::seconds {10} + + std::chrono::milliseconds {1}}, + }), + input, expected) +{ + BOOST_CHECK_EQUAL(expected, (WebStat::parseDuration(input))); +} -- cgit v1.2.3