| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "net/disk_cache/blockfile/bitmap.h" | 5 #include "net/disk_cache/blockfile/bitmap.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 | 7 |
| 8 TEST(BitmapTest, OverAllocate) { | 8 TEST(BitmapTest, OverAllocate) { |
| 9 // Test that we don't over allocate on boundaries. | 9 // Test that we don't over allocate on boundaries. |
| 10 disk_cache::Bitmap map32(32, false); | 10 disk_cache::Bitmap map32(32, false); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 for (int i = 0; i < kMapSize; i++) { | 98 for (int i = 0; i < kMapSize; i++) { |
| 99 if (i % 2) | 99 if (i % 2) |
| 100 EXPECT_TRUE(bitmap.Get(i * 8)); | 100 EXPECT_TRUE(bitmap.Get(i * 8)); |
| 101 else | 101 else |
| 102 EXPECT_FALSE(bitmap.Get(i * 8)); | 102 EXPECT_FALSE(bitmap.Get(i * 8)); |
| 103 } | 103 } |
| 104 | 104 |
| 105 EXPECT_EQ(0, memcmp(local_map, bitmap.GetMap(), kMapSize)); | 105 EXPECT_EQ(0, memcmp(local_map, bitmap.GetMap(), kMapSize)); |
| 106 | 106 |
| 107 // Now let's create a bitmap that shares local_map as storage. | 107 // Now let's create a bitmap that shares local_map as storage. |
| 108 disk_cache::Bitmap bitmap2(reinterpret_cast<uint32*>(local_map), | 108 disk_cache::Bitmap bitmap2( |
| 109 kMapSize * 8, kMapSize / 4); | 109 reinterpret_cast<uint32*>(local_map), kMapSize * 8, kMapSize / 4); |
| 110 EXPECT_EQ(0, memcmp(local_map, bitmap2.GetMap(), kMapSize)); | 110 EXPECT_EQ(0, memcmp(local_map, bitmap2.GetMap(), kMapSize)); |
| 111 | 111 |
| 112 local_map[kMapSize / 2] = 'a'; | 112 local_map[kMapSize / 2] = 'a'; |
| 113 EXPECT_EQ(0, memcmp(local_map, bitmap2.GetMap(), kMapSize)); | 113 EXPECT_EQ(0, memcmp(local_map, bitmap2.GetMap(), kMapSize)); |
| 114 EXPECT_NE(0, memcmp(local_map, bitmap.GetMap(), kMapSize)); | 114 EXPECT_NE(0, memcmp(local_map, bitmap.GetMap(), kMapSize)); |
| 115 } | 115 } |
| 116 | 116 |
| 117 TEST(BitmapTest, SetAll) { | 117 TEST(BitmapTest, SetAll) { |
| 118 // Tests SetAll and Clear. | 118 // Tests SetAll and Clear. |
| 119 const int kMapSize = 80; | 119 const int kMapSize = 80; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST(BitmapTest, FindNextSetBitBeforeLimit) { | 178 TEST(BitmapTest, FindNextSetBitBeforeLimit) { |
| 179 // Test FindNextSetBitBeforeLimit. Only check bits from 111 to 277 (limit | 179 // Test FindNextSetBitBeforeLimit. Only check bits from 111 to 277 (limit |
| 180 // bit == 278). Should find all multiples of 27 in that range. | 180 // bit == 278). Should find all multiples of 27 in that range. |
| 181 disk_cache::Bitmap map(500, true); | 181 disk_cache::Bitmap map(500, true); |
| 182 for (int i = 0; i < 500; i++) | 182 for (int i = 0; i < 500; i++) |
| 183 map.Set(i, (i % 27) == 0); | 183 map.Set(i, (i % 27) == 0); |
| 184 | 184 |
| 185 int find_me = 135; // First one expected. | 185 int find_me = 135; // First one expected. |
| 186 for (int index = 111; map.FindNextSetBitBeforeLimit(&index, 278); | 186 for (int index = 111; map.FindNextSetBitBeforeLimit(&index, 278); ++index) { |
| 187 ++index) { | |
| 188 EXPECT_EQ(index, find_me); | 187 EXPECT_EQ(index, find_me); |
| 189 find_me += 27; | 188 find_me += 27; |
| 190 } | 189 } |
| 191 EXPECT_EQ(find_me, 297); // The next find_me after 278. | 190 EXPECT_EQ(find_me, 297); // The next find_me after 278. |
| 192 } | 191 } |
| 193 | 192 |
| 194 TEST(BitmapTest, FindNextSetBitBeforeLimitAligned) { | 193 TEST(BitmapTest, FindNextSetBitBeforeLimitAligned) { |
| 195 // Test FindNextSetBitBeforeLimit on aligned scans. | 194 // Test FindNextSetBitBeforeLimit on aligned scans. |
| 196 disk_cache::Bitmap map(256, true); | 195 disk_cache::Bitmap map(256, true); |
| 197 for (int i = 0; i < 256; i++) | 196 for (int i = 0; i < 256; i++) |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 bitmap.SetMapElement(11, 0xff); | 283 bitmap.SetMapElement(11, 0xff); |
| 285 | 284 |
| 286 index = 0; | 285 index = 0; |
| 287 EXPECT_EQ(16, bitmap.FindBits(&index, 500, true)); | 286 EXPECT_EQ(16, bitmap.FindBits(&index, 500, true)); |
| 288 EXPECT_EQ(344, index); | 287 EXPECT_EQ(344, index); |
| 289 | 288 |
| 290 index = 0; | 289 index = 0; |
| 291 EXPECT_EQ(4, bitmap.FindBits(&index, 348, true)); | 290 EXPECT_EQ(4, bitmap.FindBits(&index, 348, true)); |
| 292 EXPECT_EQ(344, index); | 291 EXPECT_EQ(344, index); |
| 293 } | 292 } |
| OLD | NEW |