diff --git a/api/units/data_rate.h b/api/units/data_rate.h index 28efcd3ee8..f3b91fac99 100644 --- a/api/units/data_rate.h +++ b/api/units/data_rate.h @@ -206,6 +206,13 @@ inline DataRate operator*(const int32_t& scalar, const DataRate& rate) { return rate * scalar; } +template +typename std::enable_if::value, DataRate>::type operator/( + const DataRate& rate, + const T& scalar) { + return DataRate::bps(rate.bps() / scalar); +} + inline DataRate operator/(const DataSize& size, const TimeDelta& duration) { return DataRate::bps(data_rate_impl::Microbits(size) / duration.us()); } diff --git a/api/units/data_rate_unittest.cc b/api/units/data_rate_unittest.cc index 8e5b660594..996298c1fc 100644 --- a/api/units/data_rate_unittest.cc +++ b/api/units/data_rate_unittest.cc @@ -130,6 +130,9 @@ TEST(DataRateTest, MathOperations) { EXPECT_EQ(rate_a / rate_b, static_cast(kValueA) / kValueB); + EXPECT_EQ((rate_a / 10).bps(), kValueA / 10); + EXPECT_NEAR((rate_a / 0.5).bps(), kValueA * 2, 1); + DataRate mutable_rate = DataRate::bps(kValueA); mutable_rate += rate_b; EXPECT_EQ(mutable_rate.bps(), kValueA + kValueB);