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 3 // found in the LICENSE file. 4 5 #include "base/file_util.h" 6 #include "net/disk_cache/storage_block.h" 7 #include "net/disk_cache/storage_block-inl.h" 8 #include "net/disk_cache/disk_cache_test_base.h" 9 #include "net/disk_cache/disk_cache_test_util.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 12 TEST_F(DiskCacheTest, StorageBlock_LoadStore) { 13 FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 14 scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 15 ASSERT_TRUE(CreateCacheTestFile(filename)); 16 ASSERT_TRUE(file->Init(filename, 8192)); 17 18 disk_cache::CacheEntryBlock entry1(file, disk_cache::Addr(0xa0010001)); 19 memset(entry1.Data(), 0, sizeof(disk_cache::EntryStore)); 20 entry1.Data()->hash = 0xaa5555aa; 21 entry1.Data()->rankings_node = 0xa0010002; 22 23 EXPECT_TRUE(entry1.Store()); 24 entry1.Data()->hash = 0x88118811; 25 entry1.Data()->rankings_node = 0xa0040009; 26 27 EXPECT_TRUE(entry1.Load()); 28 EXPECT_EQ(0xaa5555aa, entry1.Data()->hash); 29 EXPECT_EQ(0xa0010002, entry1.Data()->rankings_node); 30 } 31 32 TEST_F(DiskCacheTest, StorageBlock_SetData) { 33 FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 34 scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 35 ASSERT_TRUE(CreateCacheTestFile(filename)); 36 ASSERT_TRUE(file->Init(filename, 8192)); 37 38 disk_cache::CacheEntryBlock entry1(file, disk_cache::Addr(0xa0010001)); 39 entry1.Data()->hash = 0xaa5555aa; 40 41 disk_cache::CacheEntryBlock entry2(file, disk_cache::Addr(0xa0010002)); 42 EXPECT_TRUE(entry2.Load()); 43 EXPECT_TRUE(entry2.Data() != NULL); 44 EXPECT_TRUE(0 == entry2.Data()->hash); 45 46 EXPECT_TRUE(entry2.Data() != entry1.Data()); 47 entry2.SetData(entry1.Data()); 48 EXPECT_EQ(0xaa5555aa, entry2.Data()->hash); 49 EXPECT_TRUE(entry2.Data() == entry1.Data()); 50 } 51 52 TEST_F(DiskCacheTest, StorageBlock_SetModified) { 53 FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 54 scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 55 ASSERT_TRUE(CreateCacheTestFile(filename)); 56 ASSERT_TRUE(file->Init(filename, 8192)); 57 58 disk_cache::CacheEntryBlock* entry1 = 59 new disk_cache::CacheEntryBlock(file, disk_cache::Addr(0xa0010003)); 60 EXPECT_TRUE(entry1->Load()); 61 EXPECT_TRUE(0 == entry1->Data()->hash); 62 entry1->Data()->hash = 0x45687912; 63 entry1->set_modified(); 64 delete entry1; 65 66 disk_cache::CacheEntryBlock entry2(file, disk_cache::Addr(0xa0010003)); 67 EXPECT_TRUE(entry2.Load()); 68 EXPECT_TRUE(0x45687912 == entry2.Data()->hash); 69 } 70