timestamp_c: add value_or_zero returning value if valid or 0

This commit is contained in:
Moritz Bunkus 2016-12-06 23:00:13 +01:00
parent 1562e6831a
commit 8739d1a999
2 changed files with 13 additions and 7 deletions

View File

@ -162,6 +162,10 @@ public:
return m_valid ? *this : max();
}
basic_timestamp_c<T> value_or_zero() const {
return m_valid ? *this : ns(0);
}
// comparison
bool operator <(basic_timestamp_c<T> const &other) const {
return !m_valid && other.m_valid ? true

View File

@ -148,13 +148,15 @@ TEST(BasicTimecode, Resetting) {
}
TEST(BasicTimecode, MinMax) {
EXPECT_TRUE(timestamp_c::min() < timestamp_c::max());
EXPECT_TRUE(timestamp_c::min() == timestamp_c::ns(std::numeric_limits<int64_t>::min()));
EXPECT_TRUE(timestamp_c::max() == timestamp_c::ns(std::numeric_limits<int64_t>::max()));
EXPECT_TRUE(timestamp_c{}.value_or_min() == timestamp_c::min());
EXPECT_TRUE(timestamp_c{}.value_or_max() == timestamp_c::max());
EXPECT_TRUE(timestamp_c::ns(1).value_or_min() == timestamp_c::ns(1));
EXPECT_TRUE(timestamp_c::ns(1).value_or_max() == timestamp_c::ns(1));
EXPECT_TRUE(timestamp_c::min() < timestamp_c::max());
EXPECT_TRUE(timestamp_c::min() == timestamp_c::ns(std::numeric_limits<int64_t>::min()));
EXPECT_TRUE(timestamp_c::max() == timestamp_c::ns(std::numeric_limits<int64_t>::max()));
EXPECT_TRUE(timestamp_c{}.value_or_min() == timestamp_c::min());
EXPECT_TRUE(timestamp_c{}.value_or_max() == timestamp_c::max());
EXPECT_TRUE(timestamp_c{}.value_or_zero() == timestamp_c::ns(0));
EXPECT_TRUE(timestamp_c::ns(1).value_or_min() == timestamp_c::ns(1));
EXPECT_TRUE(timestamp_c::ns(1).value_or_max() == timestamp_c::ns(1));
EXPECT_TRUE(timestamp_c::ns(1).value_or_zero() == timestamp_c::ns(1));
}
}