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

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: Removed NET_EXPORT_PRIVATE from template. Created 9 years 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 TEST(PriorityQueueTest, OrderEraseAndClear) {
13 PriorityQueue<size_t> queue;
14 RequestPriority priorities[] = {
15 LOW,
16 MEDIUM,
17 LOW,
18 HIGHEST,
19 IDLE,
20 LOWEST,
21 MEDIUM,
22 IDLE,
23 HIGHEST,
24 };
25 const size_t kNumPriorities = arraysize(priorities);
26 size_t expected_order[kNumPriorities] = { 3, 8, 1, 6, 0, 2, 5, 4, 7 };
27 size_t oldest_lowest[kNumPriorities] = { 4, 7, 5, 0, 2, 1, 6, 3, 8 };
28 PriorityQueue<size_t>::Pointer pointers[kNumPriorities];
29
30 // Check queue is empty.
31 EXPECT_EQ(0u, queue.size());
32 EXPECT_TRUE(queue.First().is_null());
33 EXPECT_TRUE(queue.Last().is_null());
mmenke 2011/12/21 16:22:58 Should check OldestLowest(), too, and make sure it
szym 2011/12/28 01:24:10 Done.
34
35 for (size_t i = 0; i < kNumPriorities; ++i) {
36 EXPECT_EQ(i, queue.size());
37 pointers[i] = queue.Insert(i, priorities[i]);
38 }
39 EXPECT_EQ(kNumPriorities, queue.size());
40
41 for (size_t i = 0; i < kNumPriorities; ++i) {
42 EXPECT_EQ(priorities[i], pointers[i].priority());
43 EXPECT_EQ(i, pointers[i].value());
44 }
45
46 // Test forward direction.
47 for (size_t i = 0; i < kNumPriorities; ++i) {
48 EXPECT_EQ(expected_order[i], queue.First().value());
49 EXPECT_EQ(kNumPriorities - i, queue.size());
50 queue.Erase(queue.First());
51 }
52 EXPECT_EQ(0u, queue.size());
53 EXPECT_TRUE(queue.First().is_null());
54 EXPECT_TRUE(queue.Last().is_null());
55
56 for (size_t i = 0; i < kNumPriorities; ++i) {
mmenke 2011/12/21 16:22:58 Just to make the test a little simpler and self-co
szym 2011/12/28 01:24:10 Done.
57 pointers[i] = queue.Insert(i, priorities[i]);
mmenke 2011/12/21 16:22:58 You don't use pointers[i] in after populating them
szym 2011/12/28 01:24:10 Done.
58 }
59
60 // Test backward direction.
61 for (size_t i = 0; i < kNumPriorities; ++i) {
62 EXPECT_EQ(expected_order[kNumPriorities - i - 1], queue.Last().value());
63 queue.Erase(queue.Last());
64 }
65 EXPECT_EQ(0u, queue.size());
66
67 for (size_t i = 0; i < kNumPriorities; ++i) {
68 pointers[i] = queue.Insert(i, priorities[i]);
69 }
70
71 // Test OldestLowest.
72 for (size_t i = 0; i < kNumPriorities; ++i) {
73 EXPECT_EQ(oldest_lowest[i], queue.OldestLowest().value());
74 queue.Erase(queue.OldestLowest());
75 }
76 EXPECT_EQ(0u, queue.size());
77
78 // Add them once more to test Clear.
79 for (size_t i = 0; i < kNumPriorities; ++i) {
80 pointers[i] = queue.Insert(i, priorities[i]);
81 }
82 EXPECT_EQ(kNumPriorities, queue.size());
83
84 queue.Clear();
85
86 EXPECT_EQ(0u, queue.size());
87 }
88
89 TEST(PriorityQueueTest, UpdatePriority) {
90 PriorityQueue<size_t> queue;
91 RequestPriority priorities[] = {
92 LOW,
93 MEDIUM,
94 LOW,
95 HIGHEST,
96 IDLE,
97 LOWEST,
98 MEDIUM,
99 IDLE,
100 HIGHEST,
101 };
102 const size_t kNumPriorities = arraysize(priorities);
103 PriorityQueue<size_t>::Pointer pointers[kNumPriorities];
104
105 for (size_t i = 0; i < kNumPriorities; ++i) {
106 pointers[i] = queue.Insert(i, priorities[i]);
107 }
108
109 // Current order: 3, 8, 1, 6, 0, 2, 5, 4, 7.
110 pointers[2] = queue.Move(pointers[2], HIGHEST);
111 EXPECT_EQ(HIGHEST, pointers[2].priority());
112 EXPECT_EQ(2u, pointers[2].value());
113 queue.Move(pointers[3], IDLE);
114 queue.Move(pointers[1], MEDIUM); // No change.
115 size_t expected_order[kNumPriorities] = { 8, 2, 1, 6, 0, 5, 4, 7, 3 };
116
117 for (size_t i = 0; i < kNumPriorities; ++i) {
118 EXPECT_EQ(expected_order[i], queue.First().value());
119 queue.Erase(queue.First());
120 }
121 EXPECT_EQ(0u, queue.size());
122 }
123
124 } // namespace
125
126 } // namespace net
127
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