13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/spdy/write_blocked_list.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace net { 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace test { 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace { 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)typedef WriteBlockedList<int> IntWriteBlockedList; 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST(WriteBlockedListTest, GetHighestPriority) { 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IntWriteBlockedList list; 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(list.HasWriteBlockedStreams()); 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 1); 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreams()); 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(1, list.GetHighestPriorityWriteBlockedList()); 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 0); 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreams()); 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(0, list.GetHighestPriorityWriteBlockedList()); 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST(WriteBlockedListTest, HasWriteBlockedStreamsOfGreaterThanPriority) { 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IntWriteBlockedList list; 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 4); 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreamsGreaterThanPriority(5)); 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_FALSE(list.HasWriteBlockedStreamsGreaterThanPriority(4)); 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 2); 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreamsGreaterThanPriority(3)); 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_FALSE(list.HasWriteBlockedStreamsGreaterThanPriority(2)); 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST(WriteBlockedListTest, RemoveStreamFromWriteBlockedList) { 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IntWriteBlockedList list; 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 4); 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreams()); 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.RemoveStreamFromWriteBlockedList(1, 5); 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreams()); 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(2, 4); 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 4); 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.RemoveStreamFromWriteBlockedList(1, 4); 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.RemoveStreamFromWriteBlockedList(2, 4); 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_FALSE(list.HasWriteBlockedStreams()); 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 7); 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(list.HasWriteBlockedStreams()); 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST(WriteBlockedListTest, PopFront) { 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IntWriteBlockedList list; 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 4); 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(1u, list.NumBlockedStreams()); 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(2, 4); 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(1, 4); 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) list.PushBack(3, 4); 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(4u, list.NumBlockedStreams()); 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(1, list.PopFront(4)); 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(2, list.PopFront(4)); 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(1, list.PopFront(4)); 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(1u, list.NumBlockedStreams()); 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(3, list.PopFront(4)); 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace test 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace net 76