Index: webrtc/modules/module_common_types_unittest.cc |
diff --git a/webrtc/modules/module_common_types_unittest.cc b/webrtc/modules/module_common_types_unittest.cc |
index 159e26babe92a59ee5245829c9ea1e24e29f9600..e4d5033b888f56a876e037f98aa369afcc7ee15d 100644 |
--- a/webrtc/modules/module_common_types_unittest.cc |
+++ b/webrtc/modules/module_common_types_unittest.cc |
@@ -119,11 +119,11 @@ TEST(SequenceNumberUnwrapper, Limits) { |
EXPECT_EQ(0, unwrapper.Unwrap(0)); |
EXPECT_EQ(0x8000, unwrapper.Unwrap(0x8000)); |
// Delta is exactly 0x8000 but current is lower than input, wrap backwards. |
- EXPECT_EQ(0x0, unwrapper.Unwrap(0x0000)); |
+ EXPECT_EQ(0, unwrapper.Unwrap(0)); |
EXPECT_EQ(0x8000, unwrapper.Unwrap(0x8000)); |
EXPECT_EQ(0xFFFF, unwrapper.Unwrap(0xFFFF)); |
- EXPECT_EQ(0x10000, unwrapper.Unwrap(0x0000)); |
+ EXPECT_EQ(0x10000, unwrapper.Unwrap(0)); |
EXPECT_EQ(0xFFFF, unwrapper.Unwrap(0xFFFF)); |
EXPECT_EQ(0x8000, unwrapper.Unwrap(0x8000)); |
EXPECT_EQ(0, unwrapper.Unwrap(0)); |
@@ -172,4 +172,53 @@ TEST(SequenceNumberUnwrapper, BackwardWraps) { |
} |
} |
+TEST(TimestampUnwrapper, Limits) { |
+ TimestampUnwrapper unwrapper; |
+ |
+ EXPECT_EQ(0, unwrapper.Unwrap(0)); |
+ EXPECT_EQ(0x80000000, unwrapper.Unwrap(0x80000000)); |
+ // Delta is exactly 0x80000000 but current is lower than input, wrap |
+ // backwards. |
+ EXPECT_EQ(0, unwrapper.Unwrap(0)); |
+ |
+ EXPECT_EQ(0x80000000, unwrapper.Unwrap(0x80000000)); |
+ EXPECT_EQ(0xFFFFFFFF, unwrapper.Unwrap(0xFFFFFFFF)); |
+ EXPECT_EQ(0x100000000, unwrapper.Unwrap(0x00000000)); |
+ EXPECT_EQ(0xFFFFFFFF, unwrapper.Unwrap(0xFFFFFFFF)); |
+ EXPECT_EQ(0x80000000, unwrapper.Unwrap(0x80000000)); |
+ EXPECT_EQ(0, unwrapper.Unwrap(0)); |
+ |
+ // Don't allow negative values. |
+ EXPECT_EQ(0xFFFFFFFF, unwrapper.Unwrap(0xFFFFFFFF)); |
+} |
+ |
+TEST(TimestampUnwrapper, ForwardWraps) { |
+ int64_t ts = 0; |
+ TimestampUnwrapper unwrapper; |
+ |
+ const int64_t kMaxIncrease = 0x80000000 - 1; |
+ const int kNumWraps = 4; |
+ for (int i = 0; i < kNumWraps * 2; ++i) { |
+ int64_t unwrapped = |
+ unwrapper.Unwrap(static_cast<uint32_t>(ts & 0xFFFFFFFF)); |
+ EXPECT_EQ(ts, unwrapped); |
+ ts += kMaxIncrease; |
+ } |
+} |
+ |
+TEST(TimestampUnwrapper, BackwardWraps) { |
+ TimestampUnwrapper unwrapper; |
+ |
+ const int64_t kMaxDecrease = 0x80000000 - 1; |
+ const int kNumWraps = 4; |
+ int64_t ts = kNumWraps * 2 * kMaxDecrease; |
+ unwrapper.UpdateLast(ts); |
+ for (int i = 0; i <= kNumWraps * 2; ++i) { |
+ int64_t unwrapped = |
+ unwrapper.Unwrap(static_cast<uint32_t>(ts & 0xFFFFFFFF)); |
+ EXPECT_EQ(ts, unwrapped); |
+ ts -= kMaxDecrease; |
+ } |
+} |
+ |
} // namespace webrtc |