summaryrefslogtreecommitdiff
path: root/chromium/net/quic/blocked_list_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/quic/blocked_list_test.cc')
-rw-r--r--chromium/net/quic/blocked_list_test.cc83
1 files changed, 83 insertions, 0 deletions
diff --git a/chromium/net/quic/blocked_list_test.cc b/chromium/net/quic/blocked_list_test.cc
new file mode 100644
index 00000000000..074b6f52782
--- /dev/null
+++ b/chromium/net/quic/blocked_list_test.cc
@@ -0,0 +1,83 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/quic/blocked_list.h"
+#include "net/quic/quic_connection.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(COMPILER_GCC)
+namespace BASE_HASH_NAMESPACE {
+template<>
+struct hash<const int*> {
+ std::size_t operator()(const int* ptr) const {
+ return hash<size_t>()(reinterpret_cast<size_t>(ptr));
+ }
+};
+}
+#endif
+
+namespace net {
+namespace test {
+namespace {
+
+class BlockedListTest : public ::testing::Test {
+ protected:
+ BlockedListTest() :
+ item1_(0),
+ item2_(0),
+ item3_(0) {
+ }
+
+ BlockedList<const int*> list_;
+ const int item1_;
+ const int item2_;
+ const int item3_;
+};
+
+TEST_F(BlockedListTest, BasicAdd) {
+ list_.AddBlockedObject(&item1_);
+ list_.AddBlockedObject(&item3_);
+ list_.AddBlockedObject(&item2_);
+ ASSERT_EQ(3, list_.NumObjects());
+ ASSERT_FALSE(list_.IsEmpty());
+
+ EXPECT_EQ(&item1_, list_.GetNextBlockedObject());
+ EXPECT_EQ(&item3_, list_.GetNextBlockedObject());
+ EXPECT_EQ(&item2_, list_.GetNextBlockedObject());
+}
+
+TEST_F(BlockedListTest, AddAndRemove) {
+ list_.AddBlockedObject(&item1_);
+ list_.AddBlockedObject(&item3_);
+ list_.AddBlockedObject(&item2_);
+ ASSERT_EQ(3, list_.NumObjects());
+
+ list_.RemoveBlockedObject(&item3_);
+ ASSERT_EQ(2, list_.NumObjects());
+
+ EXPECT_EQ(&item1_, list_.GetNextBlockedObject());
+ EXPECT_EQ(&item2_, list_.GetNextBlockedObject());
+}
+
+TEST_F(BlockedListTest, DuplicateAdd) {
+ list_.AddBlockedObject(&item1_);
+ list_.AddBlockedObject(&item3_);
+ list_.AddBlockedObject(&item2_);
+
+ list_.AddBlockedObject(&item3_);
+ list_.AddBlockedObject(&item2_);
+ list_.AddBlockedObject(&item1_);
+
+ ASSERT_EQ(3, list_.NumObjects());
+ ASSERT_FALSE(list_.IsEmpty());
+
+ // Call in the original insert order.
+ EXPECT_EQ(&item1_, list_.GetNextBlockedObject());
+ EXPECT_EQ(&item3_, list_.GetNextBlockedObject());
+ EXPECT_EQ(&item2_, list_.GetNextBlockedObject());
+}
+
+} // namespace
+} // namespace test
+} // namespace net