blob: 2d5b9c97e2884071a6e2d8496c28fdda28023393 [file] [log] [blame]
Alex Deymo2de23f52014-02-26 14:30:13 -08001// Copyright (c) 2014 The Chromium OS 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
Gilad Arnold2cbb3852014-03-07 12:40:50 -08005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_
Alex Deymo2de23f52014-02-26 14:30:13 -08007
Alex Deymo94c06162014-03-21 20:34:46 -07008#include "update_engine/policy_manager/fake_random_provider.h"
9#include "update_engine/policy_manager/fake_shill_provider.h"
10#include "update_engine/policy_manager/fake_system_provider.h"
11#include "update_engine/policy_manager/fake_time_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080012#include "update_engine/policy_manager/state.h"
13
14namespace chromeos_policy_manager {
15
Alex Deymo94c06162014-03-21 20:34:46 -070016// A fake State class that creates fake providers for all the providers.
Alex Deymo2de23f52014-02-26 14:30:13 -080017class FakeState : public State {
18 public:
Alex Deymo94c06162014-03-21 20:34:46 -070019 // Creates and initializes the FakeState using fake providers. Returns NULL
20 // if the initialization fails.
21 static FakeState* Construct();
22
Alex Deymo2de23f52014-02-26 14:30:13 -080023 virtual ~FakeState() {}
24
Alex Deymo94c06162014-03-21 20:34:46 -070025 // Downcasted getters, to allow access to the fake instances during testing.
26 virtual FakeRandomProvider* random_provider() override {
27 return reinterpret_cast<FakeRandomProvider*>(State::random_provider());
28 }
29 virtual FakeShillProvider* shill_provider() override {
30 return reinterpret_cast<FakeShillProvider*>(State::shill_provider());
31 }
32 virtual FakeTimeProvider* time_provider() override {
33 return reinterpret_cast<FakeTimeProvider*>(State::time_provider());
34 }
35 virtual FakeSystemProvider* system_provider() override {
36 return reinterpret_cast<FakeSystemProvider*>(State::system_provider());
37 }
38
Alex Deymo2de23f52014-02-26 14:30:13 -080039 private:
Alex Deymo94c06162014-03-21 20:34:46 -070040 // Creates a FakeState instance using FakeProviders.
41 FakeState();
42
Alex Deymo2de23f52014-02-26 14:30:13 -080043 DISALLOW_COPY_AND_ASSIGN(FakeState);
44};
45
46} // namespace chromeos_policy_manager
47
Gilad Arnold2cbb3852014-03-07 12:40:50 -080048#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_