1 // Copyright 2013 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 #ifndef NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 6 #define NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/callback.h" 12 13 namespace base { 14 class FilePath; 15 } 16 17 namespace disk_cache { 18 namespace simple_util { 19 20 // Immutable array with compile-time bound-checking. 21 template <typename T, size_t Size> 22 class ImmutableArray { 23 public: 24 static const size_t size = Size; 25 26 ImmutableArray(const base::Callback<T (size_t index)>& initializer) { 27 for (size_t i = 0; i < size; ++i) 28 data_[i] = initializer.Run(i); 29 } 30 31 template <size_t Index> 32 const T& at() const { 33 COMPILE_ASSERT(Index < size, array_out_of_bounds); 34 return data_[Index]; 35 } 36 37 private: 38 T data_[size]; 39 }; 40 41 // Creates a corrupt file to be used in tests. 42 bool CreateCorruptFileForTests(const std::string& key, 43 const base::FilePath& cache_path); 44 45 } // namespace simple_backend 46 } // namespace disk_cache 47 48 #endif // NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 49