Index: media/cast/net/rtp/packet_storage_unittest.cc |
diff --git a/media/cast/net/rtp/packet_storage_unittest.cc b/media/cast/net/rtp/packet_storage_unittest.cc |
index 5e9393da5de73d111bcc6de95b3bec6145da851a..a53b231da2600defccac10619f43245ab42fc7a3 100644 |
--- a/media/cast/net/rtp/packet_storage_unittest.cc |
+++ b/media/cast/net/rtp/packet_storage_unittest.cc |
@@ -6,16 +6,18 @@ |
#include <stdint.h> |
+#include <algorithm> |
#include <vector> |
#include "base/test/simple_test_tick_clock.h" |
#include "base/time/time.h" |
+#include "media/cast/cast_defines.h" |
#include "testing/gmock/include/gmock/gmock.h" |
namespace media { |
namespace cast { |
-static size_t kStoredFrames = 10; |
+static const size_t kStoredFrames = 10; |
// Generate |number_of_frames| and store into |*storage|. |
// First frame has 1 packet, second frame has 2 packets, etc. |
@@ -41,20 +43,22 @@ static void StoreFrames(size_t number_of_frames, |
} |
TEST(PacketStorageTest, NumberOfStoredFrames) { |
- PacketStorage storage(kStoredFrames); |
+ PacketStorage storage; |
uint32 frame_id = 0; |
frame_id = ~frame_id; // The maximum value of uint32. |
StoreFrames(200, frame_id, &storage); |
- EXPECT_EQ(kStoredFrames, storage.GetNumberOfStoredFrames()); |
+ EXPECT_EQ(std::min<size_t>(kMaxUnackedFrames, 200), |
+ storage.GetNumberOfStoredFrames()); |
} |
TEST(PacketStorageTest, GetFrameWrapAround8bits) { |
- PacketStorage storage(kStoredFrames); |
+ PacketStorage storage; |
const uint32 kFirstFrameId = 250; |
StoreFrames(kStoredFrames, kFirstFrameId, &storage); |
- EXPECT_EQ(kStoredFrames, storage.GetNumberOfStoredFrames()); |
+ EXPECT_EQ(std::min<size_t>(kMaxUnackedFrames, kStoredFrames), |
+ storage.GetNumberOfStoredFrames()); |
// Expect we get the correct frames by looking at the number of |
// packets. |
@@ -67,12 +71,13 @@ TEST(PacketStorageTest, GetFrameWrapAround8bits) { |
} |
TEST(PacketStorageTest, GetFrameWrapAround32bits) { |
- PacketStorage storage(kStoredFrames); |
+ PacketStorage storage; |
// First frame ID is close to the maximum value of uint32. |
uint32 first_frame_id = 0xffffffff - 5; |
StoreFrames(kStoredFrames, first_frame_id, &storage); |
- EXPECT_EQ(kStoredFrames, storage.GetNumberOfStoredFrames()); |
+ EXPECT_EQ(std::min<size_t>(kMaxUnackedFrames, kStoredFrames), |
+ storage.GetNumberOfStoredFrames()); |
// Expect we get the correct frames by looking at the number of |
// packets. |
@@ -85,29 +90,64 @@ TEST(PacketStorageTest, GetFrameWrapAround32bits) { |
} |
TEST(PacketStorageTest, GetFrameTooOld) { |
- PacketStorage storage(kStoredFrames); |
+ PacketStorage storage; |
// First frame ID is close to the maximum value of uint32. |
uint32 first_frame_id = 0xffffffff - 5; |
// Store two times the capacity. |
- StoreFrames(2 * kStoredFrames, first_frame_id, &storage); |
- EXPECT_EQ(kStoredFrames, storage.GetNumberOfStoredFrames()); |
+ StoreFrames(2 * kMaxUnackedFrames, first_frame_id, &storage); |
+ EXPECT_EQ(static_cast<size_t>(kMaxUnackedFrames), |
+ storage.GetNumberOfStoredFrames()); |
uint32 frame_id = first_frame_id; |
// Old frames are evicted. |
- for (size_t i = 0; i < kStoredFrames; ++i) { |
+ for (size_t i = 0; i < kMaxUnackedFrames; ++i) { |
EXPECT_FALSE(storage.GetFrame8(frame_id)); |
++frame_id; |
} |
// Check recent frames are there. |
- for (size_t i = 0; i < kStoredFrames; ++i) { |
+ for (size_t i = 0; i < kMaxUnackedFrames; ++i) { |
ASSERT_TRUE(storage.GetFrame8(frame_id)); |
- EXPECT_EQ(kStoredFrames + i + 1, |
+ EXPECT_EQ(kMaxUnackedFrames + i + 1, |
storage.GetFrame8(frame_id)->size()); |
++frame_id; |
} |
} |
+TEST(PacketStorageTest, FramesReleased) { |
+ PacketStorage storage; |
+ |
+ const uint32 kFirstFrameId = 0; |
+ StoreFrames(5, kFirstFrameId, &storage); |
+ EXPECT_EQ(std::min<size_t>(kMaxUnackedFrames, 5), |
+ storage.GetNumberOfStoredFrames()); |
+ |
+ for (uint32 frame_id = kFirstFrameId; frame_id < kFirstFrameId + 5; |
+ ++frame_id) { |
+ EXPECT_TRUE(storage.GetFrame8(frame_id)); |
+ } |
+ |
+ storage.ReleaseFrame(kFirstFrameId + 2); |
+ EXPECT_EQ(4u, storage.GetNumberOfStoredFrames()); |
+ EXPECT_FALSE(storage.GetFrame8(kFirstFrameId + 2)); |
+ |
+ storage.ReleaseFrame(kFirstFrameId + 0); |
+ EXPECT_EQ(3u, storage.GetNumberOfStoredFrames()); |
+ EXPECT_FALSE(storage.GetFrame8(kFirstFrameId + 0)); |
+ |
+ storage.ReleaseFrame(kFirstFrameId + 3); |
+ EXPECT_EQ(2u, storage.GetNumberOfStoredFrames()); |
+ EXPECT_FALSE(storage.GetFrame8(kFirstFrameId + 3)); |
+ |
+ storage.ReleaseFrame(kFirstFrameId + 4); |
+ EXPECT_EQ(1u, storage.GetNumberOfStoredFrames()); |
+ EXPECT_FALSE(storage.GetFrame8(kFirstFrameId + 4)); |
+ |
+ storage.ReleaseFrame(kFirstFrameId + 1); |
+ EXPECT_EQ(0u, storage.GetNumberOfStoredFrames()); |
+ EXPECT_FALSE(storage.GetFrame8(kFirstFrameId + 1)); |
+} |
+ |
} // namespace cast |
} // namespace media |