Index: net/spdy/write_blocked_list_test.cc |
diff --git a/net/spdy/write_blocked_list_test.cc b/net/spdy/write_blocked_list_test.cc |
index 908f0a9e6edaa430b79de2e6ea6749f74e2000fa..edb309e818b1b82d385bebcd046049821436bb43 100644 |
--- a/net/spdy/write_blocked_list_test.cc |
+++ b/net/spdy/write_blocked_list_test.cc |
@@ -4,13 +4,26 @@ |
#include "net/spdy/write_blocked_list.h" |
+#include <deque> |
+ |
#include "testing/gtest/include/gtest/gtest.h" |
+namespace { |
+ |
+class WriteBlockedListPeer { |
+ public: |
+ static std::deque<int>* GetWriteBlockedList( |
+ int i, |
+ net::WriteBlockedList<int>* list) { |
+ return &list->write_blocked_lists_[i]; |
+ } |
+}; |
+ |
+} // namespace |
namespace net { |
namespace test { |
namespace { |
- |
typedef WriteBlockedList<int> IntWriteBlockedList; |
TEST(WriteBlockedListTest, GetHighestPriority) { |
@@ -70,6 +83,48 @@ TEST(WriteBlockedListTest, PopFront) { |
EXPECT_EQ(3, list.PopFront(4)); |
} |
+TEST(WriteBlockedListTest, UpdateStreamPriorityInWriteBlockedList) { |
+ IntWriteBlockedList list; |
+ |
+ list.PushBack(1, 1); |
+ list.PushBack(2, 2); |
+ list.PushBack(3, 3); |
+ list.PushBack(1, 3); |
+ list.PushBack(1, 3); |
+ EXPECT_EQ(5u, list.NumBlockedStreams()); |
+ EXPECT_EQ(1u, WriteBlockedListPeer::GetWriteBlockedList(1, &list)->size()); |
+ EXPECT_EQ(1u, WriteBlockedListPeer::GetWriteBlockedList(2, &list)->size()); |
+ EXPECT_EQ(3u, WriteBlockedListPeer::GetWriteBlockedList(3, &list)->size()); |
+ |
+ list.UpdateStreamPriorityInWriteBlockedList(1, 1, 2); |
+ EXPECT_EQ(0u, WriteBlockedListPeer::GetWriteBlockedList(1, &list)->size()); |
+ EXPECT_EQ(2u, WriteBlockedListPeer::GetWriteBlockedList(2, &list)->size()); |
+ list.UpdateStreamPriorityInWriteBlockedList(3, 3, 1); |
+ EXPECT_EQ(1u, WriteBlockedListPeer::GetWriteBlockedList(1, &list)->size()); |
+ EXPECT_EQ(2u, WriteBlockedListPeer::GetWriteBlockedList(3, &list)->size()); |
+ |
+ // Redundant update. |
+ list.UpdateStreamPriorityInWriteBlockedList(1, 3, 3); |
+ EXPECT_EQ(2u, WriteBlockedListPeer::GetWriteBlockedList(3, &list)->size()); |
+ |
+ // No entries for given stream_id / old_priority pair. |
+ list.UpdateStreamPriorityInWriteBlockedList(4, 4, 1); |
+ EXPECT_EQ(1u, WriteBlockedListPeer::GetWriteBlockedList(1, &list)->size()); |
+ EXPECT_EQ(2u, WriteBlockedListPeer::GetWriteBlockedList(2, &list)->size()); |
+ EXPECT_EQ(0u, WriteBlockedListPeer::GetWriteBlockedList(4, &list)->size()); |
+ |
+ // Update multiple entries. |
+ list.UpdateStreamPriorityInWriteBlockedList(1, 3, 4); |
+ EXPECT_EQ(0u, WriteBlockedListPeer::GetWriteBlockedList(3, &list)->size()); |
+ EXPECT_EQ(1u, WriteBlockedListPeer::GetWriteBlockedList(4, &list)->size()); |
+ |
+ EXPECT_EQ(3, list.PopFront(1)); |
+ EXPECT_EQ(2, list.PopFront(2)); |
+ EXPECT_EQ(1, list.PopFront(2)); |
+ EXPECT_EQ(1, list.PopFront(4)); |
+ EXPECT_EQ(0u, list.NumBlockedStreams()); |
+} |
+ |
} // namespace |
} // namespace test |
} // namespace net |