1 /* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/modules/interface/module_common_types.h" 12 13 #include "testing/gtest/include/gtest/gtest.h" 14 15 namespace webrtc { 16 17 TEST(IsNewerSequenceNumber, Equal) { 18 EXPECT_FALSE(IsNewerSequenceNumber(0x0001, 0x0001)); 19 } 20 21 TEST(IsNewerSequenceNumber, NoWrap) { 22 EXPECT_TRUE(IsNewerSequenceNumber(0xFFFF, 0xFFFE)); 23 EXPECT_TRUE(IsNewerSequenceNumber(0x0001, 0x0000)); 24 EXPECT_TRUE(IsNewerSequenceNumber(0x0100, 0x00FF)); 25 } 26 27 TEST(IsNewerSequenceNumber, ForwardWrap) { 28 EXPECT_TRUE(IsNewerSequenceNumber(0x0000, 0xFFFF)); 29 EXPECT_TRUE(IsNewerSequenceNumber(0x0000, 0xFF00)); 30 EXPECT_TRUE(IsNewerSequenceNumber(0x00FF, 0xFFFF)); 31 EXPECT_TRUE(IsNewerSequenceNumber(0x00FF, 0xFF00)); 32 } 33 34 TEST(IsNewerSequenceNumber, BackwardWrap) { 35 EXPECT_FALSE(IsNewerSequenceNumber(0xFFFF, 0x0000)); 36 EXPECT_FALSE(IsNewerSequenceNumber(0xFF00, 0x0000)); 37 EXPECT_FALSE(IsNewerSequenceNumber(0xFFFF, 0x00FF)); 38 EXPECT_FALSE(IsNewerSequenceNumber(0xFF00, 0x00FF)); 39 } 40 41 TEST(IsNewerTimestamp, Equal) { 42 EXPECT_FALSE(IsNewerTimestamp(0x00000001, 0x000000001)); 43 } 44 45 TEST(IsNewerTimestamp, NoWrap) { 46 EXPECT_TRUE(IsNewerTimestamp(0xFFFFFFFF, 0xFFFFFFFE)); 47 EXPECT_TRUE(IsNewerTimestamp(0x00000001, 0x00000000)); 48 EXPECT_TRUE(IsNewerTimestamp(0x00010000, 0x0000FFFF)); 49 } 50 51 TEST(IsNewerTimestamp, ForwardWrap) { 52 EXPECT_TRUE(IsNewerTimestamp(0x00000000, 0xFFFFFFFF)); 53 EXPECT_TRUE(IsNewerTimestamp(0x00000000, 0xFFFF0000)); 54 EXPECT_TRUE(IsNewerTimestamp(0x0000FFFF, 0xFFFFFFFF)); 55 EXPECT_TRUE(IsNewerTimestamp(0x0000FFFF, 0xFFFF0000)); 56 } 57 58 TEST(IsNewerTimestamp, BackwardWrap) { 59 EXPECT_FALSE(IsNewerTimestamp(0xFFFFFFFF, 0x00000000)); 60 EXPECT_FALSE(IsNewerTimestamp(0xFFFF0000, 0x00000000)); 61 EXPECT_FALSE(IsNewerTimestamp(0xFFFFFFFF, 0x0000FFFF)); 62 EXPECT_FALSE(IsNewerTimestamp(0xFFFF0000, 0x0000FFFF)); 63 } 64 65 TEST(LatestSequenceNumber, NoWrap) { 66 EXPECT_EQ(0xFFFFu, LatestSequenceNumber(0xFFFF, 0xFFFE)); 67 EXPECT_EQ(0x0001u, LatestSequenceNumber(0x0001, 0x0000)); 68 EXPECT_EQ(0x0100u, LatestSequenceNumber(0x0100, 0x00FF)); 69 70 EXPECT_EQ(0xFFFFu, LatestSequenceNumber(0xFFFE, 0xFFFF)); 71 EXPECT_EQ(0x0001u, LatestSequenceNumber(0x0000, 0x0001)); 72 EXPECT_EQ(0x0100u, LatestSequenceNumber(0x00FF, 0x0100)); 73 } 74 75 TEST(LatestSequenceNumber, Wrap) { 76 EXPECT_EQ(0x0000u, LatestSequenceNumber(0x0000, 0xFFFF)); 77 EXPECT_EQ(0x0000u, LatestSequenceNumber(0x0000, 0xFF00)); 78 EXPECT_EQ(0x00FFu, LatestSequenceNumber(0x00FF, 0xFFFF)); 79 EXPECT_EQ(0x00FFu, LatestSequenceNumber(0x00FF, 0xFF00)); 80 81 EXPECT_EQ(0x0000u, LatestSequenceNumber(0xFFFF, 0x0000)); 82 EXPECT_EQ(0x0000u, LatestSequenceNumber(0xFF00, 0x0000)); 83 EXPECT_EQ(0x00FFu, LatestSequenceNumber(0xFFFF, 0x00FF)); 84 EXPECT_EQ(0x00FFu, LatestSequenceNumber(0xFF00, 0x00FF)); 85 } 86 87 TEST(LatestTimestamp, NoWrap) { 88 EXPECT_EQ(0xFFFFFFFFu, LatestTimestamp(0xFFFFFFFF, 0xFFFFFFFE)); 89 EXPECT_EQ(0x00000001u, LatestTimestamp(0x00000001, 0x00000000)); 90 EXPECT_EQ(0x00010000u, LatestTimestamp(0x00010000, 0x0000FFFF)); 91 } 92 93 TEST(LatestTimestamp, Wrap) { 94 EXPECT_EQ(0x00000000u, LatestTimestamp(0x00000000, 0xFFFFFFFF)); 95 EXPECT_EQ(0x00000000u, LatestTimestamp(0x00000000, 0xFFFF0000)); 96 EXPECT_EQ(0x0000FFFFu, LatestTimestamp(0x0000FFFF, 0xFFFFFFFF)); 97 EXPECT_EQ(0x0000FFFFu, LatestTimestamp(0x0000FFFF, 0xFFFF0000)); 98 99 EXPECT_EQ(0x00000000u, LatestTimestamp(0xFFFFFFFF, 0x00000000)); 100 EXPECT_EQ(0x00000000u, LatestTimestamp(0xFFFF0000, 0x00000000)); 101 EXPECT_EQ(0x0000FFFFu, LatestTimestamp(0xFFFFFFFF, 0x0000FFFF)); 102 EXPECT_EQ(0x0000FFFFu, LatestTimestamp(0xFFFF0000, 0x0000FFFF)); 103 } 104 } // namespace webrtc 105