Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(373)

Side by Side Diff: net/base/priority_queue_unittest.cc

Issue 8965025: Refactoring of job dispatch in HostResolverImpl in preparation for DnsClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased to trunk. Created 8 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/base/priority_queue.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 namespace net {
9
10 namespace {
11
12 const RequestPriority kPriorities[] = {
13 LOW,
14 MEDIUM,
15 LOW,
16 HIGHEST,
17 IDLE,
18 LOWEST,
19 MEDIUM,
20 IDLE,
21 HIGHEST,
22 };
23 const size_t kNumElements = arraysize(kPriorities);
24 const size_t kExpectedOrder[kNumElements] = { 3, 8, 1, 6, 0, 2, 5, 4, 7 };
25 const size_t kOldestLowest[kNumElements] = { 4, 7, 5, 0, 2, 1, 6, 3, 8 };
26
27 void CheckEmpty(PriorityQueue<size_t>* queue) {
28 EXPECT_EQ(0u, queue->size());
29 EXPECT_TRUE(queue->First().is_null());
30 EXPECT_TRUE(queue->Last().is_null());
31 EXPECT_TRUE(queue->OldestLowest().is_null());
32 }
33
34 TEST(PriorityQueueTest, AddAndClear) {
35 PriorityQueue<size_t> queue;
36 PriorityQueue<size_t>::Pointer pointers[kNumElements];
37
38 CheckEmpty(&queue);
39 for (size_t i = 0; i < kNumElements; ++i) {
40 EXPECT_EQ(i, queue.size());
41 pointers[i] = queue.Insert(i, kPriorities[i]);
42 }
43 EXPECT_EQ(kNumElements, queue.size());
44
45 for (size_t i = 0; i < kNumElements; ++i) {
46 EXPECT_EQ(kPriorities[i], pointers[i].priority());
47 EXPECT_EQ(i, pointers[i].value());
48 }
49
50 queue.Clear();
51 CheckEmpty(&queue);
52 }
53
54 TEST(PriorityQueueTest, FirstOrder) {
55 PriorityQueue<size_t> queue;
56
57 for (size_t i = 0; i < kNumElements; ++i) {
58 queue.Insert(i, kPriorities[i]);
59 }
60
61 for (size_t i = 0; i < kNumElements; ++i) {
62 EXPECT_EQ(kExpectedOrder[i], queue.First().value());
63 EXPECT_EQ(kNumElements - i, queue.size());
64 queue.Erase(queue.First());
65 }
66 CheckEmpty(&queue);
67 }
68
69 TEST(PriorityQueueTest, LastOrder) {
70 PriorityQueue<size_t> queue;
71
72 for (size_t i = 0; i < kNumElements; ++i) {
73 queue.Insert(i, kPriorities[i]);
74 }
75
76 for (size_t i = 0; i < kNumElements; ++i) {
77 EXPECT_EQ(kExpectedOrder[kNumElements - i - 1], queue.Last().value());
78 queue.Erase(queue.Last());
79 }
80 CheckEmpty(&queue);
81 }
82
83 TEST(PriorityQueueTest, OldestLowestOrder) {
84 PriorityQueue<size_t> queue;
85
86 for (size_t i = 0; i < kNumElements; ++i) {
87 queue.Insert(i, kPriorities[i]);
88 }
89
90 for (size_t i = 0; i < kNumElements; ++i) {
91 EXPECT_EQ(kOldestLowest[i], queue.OldestLowest().value());
92 queue.Erase(queue.OldestLowest());
93 }
94 CheckEmpty(&queue);
95 }
96
97 TEST(PriorityQueueTest, EraseFromMiddle) {
98 PriorityQueue<size_t> queue;
99 PriorityQueue<size_t>::Pointer pointers[kNumElements];
100
101 for (size_t i = 0; i < kNumElements; ++i) {
102 pointers[i] = queue.Insert(i, kPriorities[i]);
103 }
104
105 queue.Erase(pointers[2]);
106 queue.Erase(pointers[3]);
107
108 size_t expected_order[] = { 8, 1, 6, 0, 5, 4, 7 };
109
110 for (size_t i = 0; i < arraysize(expected_order); ++i) {
111 EXPECT_EQ(expected_order[i], queue.First().value());
112 queue.Erase(queue.First());
113 }
114 CheckEmpty(&queue);
115 }
116
117 } // namespace
118
119 } // namespace net
120
OLDNEW
« net/base/priority_queue.h ('K') | « net/base/priority_queue.h ('k') | net/net.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698