simple_test_util.h revision 3551c9c881056c480085172ff9840cab31610854
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
13namespace base {
14class FilePath;
15}
16
17namespace disk_cache {
18namespace simple_util {
19
20// Immutable array with compile-time bound-checking.
21template <typename T, size_t Size>
22class 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.
42bool 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