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

Side by Side Diff: chrome/browser/safe_browsing/chunk_range_unittest.cc

Issue 4588001: Cleanup converting safe-browsing chunks to range list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Lei comments. Created 10 years, 1 month 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
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Test program to convert lists of integers into ranges, and vice versa. 5 // Test program to convert lists of integers into ranges, and vice versa.
6 6
7 #include "chunk_range.h" 7 #include "chunk_range.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 // Test formatting chunks into a string representation. 10 // Test various configurations of chunk numbers.
11 TEST(SafeBrowsingChunkRangeTest, TestRangesToString) { 11 TEST(SafeBrowsingChunkRangeTest, TestChunksToRangeString) {
12 std::vector<ChunkRange> ranges; 12 std::vector<int> chunks;
13 ranges.push_back(ChunkRange(1, 10));
14 ranges.push_back(ChunkRange(15, 17));
15 ranges.push_back(ChunkRange(21, 410));
16 ranges.push_back(ChunkRange(991, 1000));
17
18 std::string range_string; 13 std::string range_string;
19 RangesToString(ranges, &range_string);
20 EXPECT_EQ(range_string, "1-10,15-17,21-410,991-1000");
21 ranges.clear();
22
23 ranges.push_back(ChunkRange(4, 4));
24 RangesToString(ranges, &range_string);
25 EXPECT_EQ(range_string, "4");
26
27 ranges.push_back(ChunkRange(7));
28 ranges.push_back(ChunkRange(9));
29 RangesToString(ranges, &range_string);
30 EXPECT_EQ(range_string, "4,7,9");
31
32 ranges.push_back(ChunkRange(42, 99));
33 RangesToString(ranges, &range_string);
34 EXPECT_EQ(range_string, "4,7,9,42-99");
35 }
36
37
38 // Test various configurations of chunk numbers.
39 TEST(SafeBrowsingChunkRangeTest, TestChunksToRanges) {
40 std::vector<int> chunks;
41 std::vector<ChunkRange> ranges;
42 14
43 // Test one chunk range and one single value. 15 // Test one chunk range and one single value.
44 chunks.push_back(1); 16 chunks.push_back(1);
45 chunks.push_back(2); 17 chunks.push_back(2);
46 chunks.push_back(3); 18 chunks.push_back(3);
47 chunks.push_back(4); 19 chunks.push_back(4);
48 chunks.push_back(7); 20 chunks.push_back(7);
49 ChunksToRanges(chunks, &ranges); 21 ChunksToRangeString(chunks, &range_string);
50 EXPECT_EQ(ranges.size(), static_cast<size_t>(2)); 22 EXPECT_EQ(range_string, std::string("1-4,7"));
51 EXPECT_EQ(ranges[0].start(), 1);
52 EXPECT_EQ(ranges[0].stop(), 4);
53 EXPECT_EQ(ranges[1].start(), 7);
54 EXPECT_EQ(ranges[1].stop(), 7);
55 23
56 chunks.clear(); 24 chunks.clear();
57 ranges.clear(); 25 range_string.clear();
58 26
59 // Test all chunk numbers in one range. 27 // Test all chunk numbers in one range.
60 chunks.push_back(3); 28 chunks.push_back(3);
61 chunks.push_back(4); 29 chunks.push_back(4);
62 chunks.push_back(5); 30 chunks.push_back(5);
63 chunks.push_back(6); 31 chunks.push_back(6);
64 chunks.push_back(7); 32 chunks.push_back(7);
65 chunks.push_back(8); 33 chunks.push_back(8);
66 chunks.push_back(9); 34 chunks.push_back(9);
67 chunks.push_back(10); 35 chunks.push_back(10);
68 ChunksToRanges(chunks, &ranges); 36 ChunksToRangeString(chunks, &range_string);
69 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); 37 EXPECT_EQ(range_string, std::string("3-10"));
70 EXPECT_EQ(ranges[0].start(), 3);
71 EXPECT_EQ(ranges[0].stop(), 10);
72 38
73 chunks.clear(); 39 chunks.clear();
74 ranges.clear(); 40 range_string.clear();
75 41
76 // Test no chunk numbers in contiguous ranges. 42 // Test no chunk numbers in contiguous ranges.
77 chunks.push_back(3); 43 chunks.push_back(3);
78 chunks.push_back(5); 44 chunks.push_back(5);
79 chunks.push_back(7); 45 chunks.push_back(7);
80 chunks.push_back(9); 46 chunks.push_back(9);
81 chunks.push_back(11); 47 chunks.push_back(11);
82 chunks.push_back(13); 48 chunks.push_back(13);
83 chunks.push_back(15); 49 chunks.push_back(15);
84 chunks.push_back(17); 50 chunks.push_back(17);
85 ChunksToRanges(chunks, &ranges); 51 ChunksToRangeString(chunks, &range_string);
86 EXPECT_EQ(ranges.size(), static_cast<size_t>(8)); 52 EXPECT_EQ(range_string, std::string("3,5,7,9,11,13,15,17"));
87 53
88 chunks.clear(); 54 chunks.clear();
89 ranges.clear(); 55 range_string.clear();
90 56
91 // Test a single chunk number. 57 // Test a single chunk number.
92 chunks.push_back(17); 58 chunks.push_back(17);
93 ChunksToRanges(chunks, &ranges); 59 ChunksToRangeString(chunks, &range_string);
94 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); 60 EXPECT_EQ(range_string, std::string("17"));
95 EXPECT_EQ(ranges[0].start(), 17);
96 EXPECT_EQ(ranges[0].stop(), 17);
97 61
98 chunks.clear(); 62 chunks.clear();
99 ranges.clear(); 63 range_string.clear();
100 64
101 // Test duplicates. 65 // Test duplicates.
102 chunks.push_back(1); 66 chunks.push_back(1);
103 chunks.push_back(2); 67 chunks.push_back(2);
104 chunks.push_back(2); 68 chunks.push_back(2);
105 chunks.push_back(2); 69 chunks.push_back(2);
106 chunks.push_back(3); 70 chunks.push_back(3);
107 chunks.push_back(7); 71 chunks.push_back(7);
108 chunks.push_back(7); 72 chunks.push_back(7);
109 chunks.push_back(7); 73 chunks.push_back(7);
110 chunks.push_back(7); 74 chunks.push_back(7);
111 ChunksToRanges(chunks, &ranges); 75 ChunksToRangeString(chunks, &range_string);
112 EXPECT_EQ(ranges.size(), static_cast<size_t>(2)); 76 EXPECT_EQ(range_string, std::string("1-3,7"));
113 EXPECT_EQ(ranges[0].start(), 1); 77
114 EXPECT_EQ(ranges[0].stop(), 3); 78 // Test unsorted chunks.
115 EXPECT_EQ(ranges[1].start(), 7); 79 chunks.push_back(4);
116 EXPECT_EQ(ranges[1].stop(), 7); 80 chunks.push_back(1);
81 chunks.push_back(7);
82 chunks.push_back(3);
83 chunks.push_back(2);
84 ChunksToRangeString(chunks, &range_string);
85 EXPECT_EQ(range_string, std::string("1-4,7"));
86
87 chunks.clear();
88 range_string.clear();
117 } 89 }
118 90
119
120 TEST(SafeBrowsingChunkRangeTest, TestStringToRanges) { 91 TEST(SafeBrowsingChunkRangeTest, TestStringToRanges) {
121 std::vector<ChunkRange> ranges; 92 std::vector<ChunkRange> ranges;
122 93
123 std::string input = "1-100,398,415,1138-2001,2019"; 94 std::string input = "1-100,398,415,1138-2001,2019";
124 EXPECT_TRUE(StringToRanges(input, &ranges)); 95 EXPECT_TRUE(StringToRanges(input, &ranges));
125 EXPECT_EQ(ranges.size(), static_cast<size_t>(5)); 96 EXPECT_EQ(ranges.size(), static_cast<size_t>(5));
126 EXPECT_EQ(ranges[0].start(), 1); 97 EXPECT_EQ(ranges[0].start(), 1);
127 EXPECT_EQ(ranges[0].stop(), 100); 98 EXPECT_EQ(ranges[0].stop(), 100);
128 EXPECT_EQ(ranges[1].start(), 398); 99 EXPECT_EQ(ranges[1].start(), 398);
129 EXPECT_EQ(ranges[1].stop(), 398); 100 EXPECT_EQ(ranges[1].stop(), 398);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 EXPECT_TRUE(IsChunkInRange(7, ranges)); 155 EXPECT_TRUE(IsChunkInRange(7, ranges));
185 EXPECT_TRUE(IsChunkInRange(300, ranges)); 156 EXPECT_TRUE(IsChunkInRange(300, ranges));
186 EXPECT_TRUE(IsChunkInRange(555, ranges)); 157 EXPECT_TRUE(IsChunkInRange(555, ranges));
187 EXPECT_TRUE(IsChunkInRange(1, ranges)); 158 EXPECT_TRUE(IsChunkInRange(1, ranges));
188 EXPECT_TRUE(IsChunkInRange(1000, ranges)); 159 EXPECT_TRUE(IsChunkInRange(1000, ranges));
189 160
190 EXPECT_FALSE(IsChunkInRange(11, ranges)); 161 EXPECT_FALSE(IsChunkInRange(11, ranges));
191 EXPECT_FALSE(IsChunkInRange(990, ranges)); 162 EXPECT_FALSE(IsChunkInRange(990, ranges));
192 EXPECT_FALSE(IsChunkInRange(2000, ranges)); 163 EXPECT_FALSE(IsChunkInRange(2000, ranges));
193 } 164 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/chunk_range.cc ('k') | chrome/browser/safe_browsing/safe_browsing_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698