17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <string> 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/basictypes.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/callback.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace base { 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FilePath; 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace disk_cache { 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace simple_util { 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Immutable array with compile-time bound-checking. 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)template <typename T, size_t Size> 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class ImmutableArray { 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static const size_t size = Size; 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ImmutableArray(const base::Callback<T (size_t index)>& initializer) { 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for (size_t i = 0; i < size; ++i) 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) data_[i] = initializer.Run(i); 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) template <size_t Index> 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const T& at() const { 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) COMPILE_ASSERT(Index < size, array_out_of_bounds); 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return data_[Index]; 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) T data_[size]; 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Creates a corrupt file to be used in tests. 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool CreateCorruptFileForTests(const std::string& key, 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::FilePath& cache_path); 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace simple_backend 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace disk_cache 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // NET_DISK_CACHE_SIMPLE_SIMPLE_TEST_UTIL_H_ 49