AK: Add Time::is_negative() to detect negative time values

This commit is contained in:
Brian Gianforcaro 2021-08-14 16:49:53 -07:00 committed by Andreas Kling
parent 3cbc2364a8
commit a2a5cb0f24
2 changed files with 14 additions and 0 deletions

View file

@ -164,6 +164,7 @@ public:
[[nodiscard]] timeval to_timeval() const;
[[nodiscard]] bool is_zero() const { return !m_seconds && !m_nanoseconds; }
[[nodiscard]] bool is_negative() const { return m_seconds < 0; }
bool operator==(const Time& other) const { return this->m_seconds == other.m_seconds && this->m_nanoseconds == other.m_nanoseconds; }
bool operator!=(const Time& other) const { return !(*this == other); }

View file

@ -261,3 +261,16 @@ TEST_CASE(truncation)
EXPECT_EQ(TIME(9223372036854, 775'807'000).to_truncated_microseconds(), 0x7fff'ffff'ffff'ffff);
EXPECT_EQ(TIME(9223372036854, 775'808'000).to_truncated_microseconds(), 0x7fff'ffff'ffff'ffff);
}
TEST_CASE(is_negative)
{
auto small = Time::from_nanoseconds(10);
auto large = Time::from_nanoseconds(15);
auto result = small - large;
EXPECT_EQ(result.to_nanoseconds(), -5);
EXPECT(result.is_negative());
result = large - small;
EXPECT_EQ(result.to_nanoseconds(), 5);
EXPECT(!result.is_negative());
}