mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Extend UnitBase multiplication to support size_t
Bug: None Change-Id: I8dcb85cdb2819df54d4cb0cae59b77d7d629123a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260941 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36828}
This commit is contained in:
parent
9266c7015e
commit
adaf511221
2 changed files with 28 additions and 8 deletions
|
@ -187,14 +187,6 @@ TEST(TimeDeltaTest, MathOperations) {
|
|||
EXPECT_EQ((delta_a + delta_b).ms(), kValueA + kValueB);
|
||||
EXPECT_EQ((delta_a - delta_b).ms(), kValueA - kValueB);
|
||||
|
||||
const int32_t kInt32Value = 123;
|
||||
const double kFloatValue = 123.0;
|
||||
EXPECT_EQ((TimeDelta::Micros(kValueA) * kValueB).us(), kValueA * kValueB);
|
||||
EXPECT_EQ((TimeDelta::Micros(kValueA) * kInt32Value).us(),
|
||||
kValueA * kInt32Value);
|
||||
EXPECT_EQ((TimeDelta::Micros(kValueA) * kFloatValue).us(),
|
||||
kValueA * kFloatValue);
|
||||
|
||||
EXPECT_EQ((delta_b / 10).ms(), kValueB / 10);
|
||||
EXPECT_EQ(delta_b / delta_a, static_cast<double>(kValueB) / kValueA);
|
||||
|
||||
|
@ -208,6 +200,26 @@ TEST(TimeDeltaTest, MathOperations) {
|
|||
EXPECT_EQ(mutable_delta, TimeDelta::Millis(kValueA));
|
||||
}
|
||||
|
||||
TEST(TimeDeltaTest, MultiplyByScalar) {
|
||||
const TimeDelta kValue = TimeDelta::Micros(267);
|
||||
const int64_t kInt64 = 450;
|
||||
const int32_t kInt32 = 123;
|
||||
const size_t kUnsignedInt = 125;
|
||||
const double kFloat = 123.0;
|
||||
|
||||
EXPECT_EQ((kValue * kInt64).us(), kValue.us() * kInt64);
|
||||
EXPECT_EQ(kValue * kInt64, kInt64 * kValue);
|
||||
|
||||
EXPECT_EQ((kValue * kInt32).us(), kValue.us() * kInt32);
|
||||
EXPECT_EQ(kValue * kInt32, kInt32 * kValue);
|
||||
|
||||
EXPECT_EQ((kValue * kUnsignedInt).us(), kValue.us() * int64_t{kUnsignedInt});
|
||||
EXPECT_EQ(kValue * kUnsignedInt, kUnsignedInt * kValue);
|
||||
|
||||
EXPECT_DOUBLE_EQ((kValue * kFloat).us(), kValue.us() * kFloat);
|
||||
EXPECT_EQ(kValue * kFloat, kFloat * kValue);
|
||||
}
|
||||
|
||||
TEST(TimeDeltaTest, InfinityOperations) {
|
||||
const int64_t kValue = 267;
|
||||
const TimeDelta finite = TimeDelta::Millis(kValue);
|
||||
|
|
|
@ -281,6 +281,9 @@ class RelativeUnit : public UnitBase<Unit_T> {
|
|||
constexpr Unit_T operator*(int32_t scalar) const {
|
||||
return UnitBase<Unit_T>::FromValue(this->ToValue() * scalar);
|
||||
}
|
||||
constexpr Unit_T operator*(size_t scalar) const {
|
||||
return UnitBase<Unit_T>::FromValue(this->ToValue() * scalar);
|
||||
}
|
||||
|
||||
protected:
|
||||
using UnitBase<Unit_T>::UnitBase;
|
||||
|
@ -298,6 +301,11 @@ template <class Unit_T>
|
|||
inline constexpr Unit_T operator*(int32_t scalar, RelativeUnit<Unit_T> other) {
|
||||
return other * scalar;
|
||||
}
|
||||
template <class Unit_T>
|
||||
inline constexpr Unit_T operator*(size_t scalar, RelativeUnit<Unit_T> other) {
|
||||
return other * scalar;
|
||||
}
|
||||
|
||||
template <class Unit_T>
|
||||
inline constexpr Unit_T operator-(RelativeUnit<Unit_T> other) {
|
||||
if (other.IsPlusInfinity())
|
||||
|
|
Loading…
Reference in a new issue