| OLD | NEW |
| 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 "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chunk_range.h" | 8 #include "chunk_range.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 std::vector<int> chunks; | 41 std::vector<int> chunks; |
| 42 std::vector<ChunkRange> ranges; | 42 std::vector<ChunkRange> ranges; |
| 43 | 43 |
| 44 // Test one chunk range and one single value. | 44 // Test one chunk range and one single value. |
| 45 chunks.push_back(1); | 45 chunks.push_back(1); |
| 46 chunks.push_back(2); | 46 chunks.push_back(2); |
| 47 chunks.push_back(3); | 47 chunks.push_back(3); |
| 48 chunks.push_back(4); | 48 chunks.push_back(4); |
| 49 chunks.push_back(7); | 49 chunks.push_back(7); |
| 50 ChunksToRanges(chunks, &ranges); | 50 ChunksToRanges(chunks, &ranges); |
| 51 EXPECT_EQ(ranges.size(), 2); | 51 EXPECT_EQ(ranges.size(), static_cast<size_t>(2)); |
| 52 EXPECT_EQ(ranges[0].start(), 1); | 52 EXPECT_EQ(ranges[0].start(), 1); |
| 53 EXPECT_EQ(ranges[0].stop(), 4); | 53 EXPECT_EQ(ranges[0].stop(), 4); |
| 54 EXPECT_EQ(ranges[1].start(), 7); | 54 EXPECT_EQ(ranges[1].start(), 7); |
| 55 EXPECT_EQ(ranges[1].stop(), 7); | 55 EXPECT_EQ(ranges[1].stop(), 7); |
| 56 | 56 |
| 57 chunks.clear(); | 57 chunks.clear(); |
| 58 ranges.clear(); | 58 ranges.clear(); |
| 59 | 59 |
| 60 // Test all chunk numbers in one range. | 60 // Test all chunk numbers in one range. |
| 61 chunks.push_back(3); | 61 chunks.push_back(3); |
| 62 chunks.push_back(4); | 62 chunks.push_back(4); |
| 63 chunks.push_back(5); | 63 chunks.push_back(5); |
| 64 chunks.push_back(6); | 64 chunks.push_back(6); |
| 65 chunks.push_back(7); | 65 chunks.push_back(7); |
| 66 chunks.push_back(8); | 66 chunks.push_back(8); |
| 67 chunks.push_back(9); | 67 chunks.push_back(9); |
| 68 chunks.push_back(10); | 68 chunks.push_back(10); |
| 69 ChunksToRanges(chunks, &ranges); | 69 ChunksToRanges(chunks, &ranges); |
| 70 EXPECT_EQ(ranges.size(), 1); | 70 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); |
| 71 EXPECT_EQ(ranges[0].start(), 3); | 71 EXPECT_EQ(ranges[0].start(), 3); |
| 72 EXPECT_EQ(ranges[0].stop(), 10); | 72 EXPECT_EQ(ranges[0].stop(), 10); |
| 73 | 73 |
| 74 chunks.clear(); | 74 chunks.clear(); |
| 75 ranges.clear(); | 75 ranges.clear(); |
| 76 | 76 |
| 77 // Test no chunk numbers in contiguous ranges. | 77 // Test no chunk numbers in contiguous ranges. |
| 78 chunks.push_back(3); | 78 chunks.push_back(3); |
| 79 chunks.push_back(5); | 79 chunks.push_back(5); |
| 80 chunks.push_back(7); | 80 chunks.push_back(7); |
| 81 chunks.push_back(9); | 81 chunks.push_back(9); |
| 82 chunks.push_back(11); | 82 chunks.push_back(11); |
| 83 chunks.push_back(13); | 83 chunks.push_back(13); |
| 84 chunks.push_back(15); | 84 chunks.push_back(15); |
| 85 chunks.push_back(17); | 85 chunks.push_back(17); |
| 86 ChunksToRanges(chunks, &ranges); | 86 ChunksToRanges(chunks, &ranges); |
| 87 EXPECT_EQ(ranges.size(), 8); | 87 EXPECT_EQ(ranges.size(), static_cast<size_t>(8)); |
| 88 | 88 |
| 89 chunks.clear(); | 89 chunks.clear(); |
| 90 ranges.clear(); | 90 ranges.clear(); |
| 91 | 91 |
| 92 // Test a single chunk number. | 92 // Test a single chunk number. |
| 93 chunks.push_back(17); | 93 chunks.push_back(17); |
| 94 ChunksToRanges(chunks, &ranges); | 94 ChunksToRanges(chunks, &ranges); |
| 95 EXPECT_EQ(ranges.size(), 1); | 95 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); |
| 96 EXPECT_EQ(ranges[0].start(), 17); | 96 EXPECT_EQ(ranges[0].start(), 17); |
| 97 EXPECT_EQ(ranges[0].stop(), 17); | 97 EXPECT_EQ(ranges[0].stop(), 17); |
| 98 | 98 |
| 99 chunks.clear(); | 99 chunks.clear(); |
| 100 ranges.clear(); | 100 ranges.clear(); |
| 101 | 101 |
| 102 // Test duplicates. | 102 // Test duplicates. |
| 103 chunks.push_back(1); | 103 chunks.push_back(1); |
| 104 chunks.push_back(2); | 104 chunks.push_back(2); |
| 105 chunks.push_back(2); | 105 chunks.push_back(2); |
| 106 chunks.push_back(2); | 106 chunks.push_back(2); |
| 107 chunks.push_back(3); | 107 chunks.push_back(3); |
| 108 chunks.push_back(7); | 108 chunks.push_back(7); |
| 109 chunks.push_back(7); | 109 chunks.push_back(7); |
| 110 chunks.push_back(7); | 110 chunks.push_back(7); |
| 111 chunks.push_back(7); | 111 chunks.push_back(7); |
| 112 ChunksToRanges(chunks, &ranges); | 112 ChunksToRanges(chunks, &ranges); |
| 113 EXPECT_EQ(ranges.size(), 2); | 113 EXPECT_EQ(ranges.size(), static_cast<size_t>(2)); |
| 114 EXPECT_EQ(ranges[0].start(), 1); | 114 EXPECT_EQ(ranges[0].start(), 1); |
| 115 EXPECT_EQ(ranges[0].stop(), 3); | 115 EXPECT_EQ(ranges[0].stop(), 3); |
| 116 EXPECT_EQ(ranges[1].start(), 7); | 116 EXPECT_EQ(ranges[1].start(), 7); |
| 117 EXPECT_EQ(ranges[1].stop(), 7); | 117 EXPECT_EQ(ranges[1].stop(), 7); |
| 118 } | 118 } |
| 119 | 119 |
| 120 | 120 |
| 121 TEST(SafeBrowsingChunkRangeTest, TestStringToRanges) { | 121 TEST(SafeBrowsingChunkRangeTest, TestStringToRanges) { |
| 122 std::vector<ChunkRange> ranges; | 122 std::vector<ChunkRange> ranges; |
| 123 | 123 |
| 124 std::string input = "1-100,398,415,1138-2001,2019"; | 124 std::string input = "1-100,398,415,1138-2001,2019"; |
| 125 EXPECT_TRUE(StringToRanges(input, &ranges)); | 125 EXPECT_TRUE(StringToRanges(input, &ranges)); |
| 126 EXPECT_EQ(ranges.size(), 5); | 126 EXPECT_EQ(ranges.size(), static_cast<size_t>(5)); |
| 127 EXPECT_EQ(ranges[0].start(), 1); | 127 EXPECT_EQ(ranges[0].start(), 1); |
| 128 EXPECT_EQ(ranges[0].stop(), 100); | 128 EXPECT_EQ(ranges[0].stop(), 100); |
| 129 EXPECT_EQ(ranges[1].start(), 398); | 129 EXPECT_EQ(ranges[1].start(), 398); |
| 130 EXPECT_EQ(ranges[1].stop(), 398); | 130 EXPECT_EQ(ranges[1].stop(), 398); |
| 131 EXPECT_EQ(ranges[3].start(), 1138); | 131 EXPECT_EQ(ranges[3].start(), 1138); |
| 132 EXPECT_EQ(ranges[3].stop(), 2001); | 132 EXPECT_EQ(ranges[3].stop(), 2001); |
| 133 | 133 |
| 134 ranges.clear(); | 134 ranges.clear(); |
| 135 | 135 |
| 136 input = "1,2,3,4,5,6,7"; | 136 input = "1,2,3,4,5,6,7"; |
| 137 EXPECT_TRUE(StringToRanges(input, &ranges)); | 137 EXPECT_TRUE(StringToRanges(input, &ranges)); |
| 138 EXPECT_EQ(ranges.size(), 7); | 138 EXPECT_EQ(ranges.size(), static_cast<size_t>(7)); |
| 139 | 139 |
| 140 ranges.clear(); | 140 ranges.clear(); |
| 141 | 141 |
| 142 input = "300-3001"; | 142 input = "300-3001"; |
| 143 EXPECT_TRUE(StringToRanges(input, &ranges)); | 143 EXPECT_TRUE(StringToRanges(input, &ranges)); |
| 144 EXPECT_EQ(ranges.size(), 1); | 144 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); |
| 145 EXPECT_EQ(ranges[0].start(), 300); | 145 EXPECT_EQ(ranges[0].start(), 300); |
| 146 EXPECT_EQ(ranges[0].stop(), 3001); | 146 EXPECT_EQ(ranges[0].stop(), 3001); |
| 147 | 147 |
| 148 ranges.clear(); | 148 ranges.clear(); |
| 149 | 149 |
| 150 input = "17"; | 150 input = "17"; |
| 151 EXPECT_TRUE(StringToRanges(input, &ranges)); | 151 EXPECT_TRUE(StringToRanges(input, &ranges)); |
| 152 EXPECT_EQ(ranges.size(), 1); | 152 EXPECT_EQ(ranges.size(), static_cast<size_t>(1)); |
| 153 EXPECT_EQ(ranges[0].start(), 17); | 153 EXPECT_EQ(ranges[0].start(), 17); |
| 154 EXPECT_EQ(ranges[0].stop(), 17); | 154 EXPECT_EQ(ranges[0].stop(), 17); |
| 155 | 155 |
| 156 ranges.clear(); | 156 ranges.clear(); |
| 157 | 157 |
| 158 input = "x-y"; | 158 input = "x-y"; |
| 159 EXPECT_FALSE(StringToRanges(input, &ranges)); | 159 EXPECT_FALSE(StringToRanges(input, &ranges)); |
| 160 } | 160 } |
| 161 | 161 |
| 162 | 162 |
| 163 TEST(SafeBrowsingChunkRangeTest, TestRangesToChunks) { | 163 TEST(SafeBrowsingChunkRangeTest, TestRangesToChunks) { |
| 164 std::vector<ChunkRange> ranges; | 164 std::vector<ChunkRange> ranges; |
| 165 ranges.push_back(ChunkRange(1, 4)); | 165 ranges.push_back(ChunkRange(1, 4)); |
| 166 ranges.push_back(ChunkRange(17)); | 166 ranges.push_back(ChunkRange(17)); |
| 167 | 167 |
| 168 std::vector<int> chunks; | 168 std::vector<int> chunks; |
| 169 RangesToChunks(ranges, &chunks); | 169 RangesToChunks(ranges, &chunks); |
| 170 | 170 |
| 171 EXPECT_EQ(chunks.size(), 5); | 171 EXPECT_EQ(chunks.size(), static_cast<size_t>(5)); |
| 172 EXPECT_EQ(chunks[0], 1); | 172 EXPECT_EQ(chunks[0], 1); |
| 173 EXPECT_EQ(chunks[1], 2); | 173 EXPECT_EQ(chunks[1], 2); |
| 174 EXPECT_EQ(chunks[2], 3); | 174 EXPECT_EQ(chunks[2], 3); |
| 175 EXPECT_EQ(chunks[3], 4); | 175 EXPECT_EQ(chunks[3], 4); |
| 176 EXPECT_EQ(chunks[4], 17); | 176 EXPECT_EQ(chunks[4], 17); |
| 177 } | 177 } |
| OLD | NEW |