| 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
 | 
| 
 |