blob: 5d3b8d925adffff09a91bd22f0cb5818ca74b233 [file] [log] [blame]
Alex Deymo391ad9f2014-01-29 14:36:20 -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
5#include <gtest/gtest.h>
6
Alex Deymo6e97bb22014-02-05 16:46:16 -08007#include "update_engine/policy_manager/variable.h"
Alex Deymo391ad9f2014-01-29 14:36:20 -08008
Alex Deymoa8033932014-02-25 10:33:13 -08009using base::TimeDelta;
Alex Deymo391ad9f2014-01-29 14:36:20 -080010using std::string;
11
12namespace chromeos_policy_manager {
13
14// Variable class that returns a value constructed with the default value.
15template <typename T>
16class DefaultVariable : public Variable<T> {
17 public:
Alex Deymo0e433692014-02-20 07:23:03 -080018 DefaultVariable(const string& name, VariableMode mode)
19 : Variable<T>(name, mode) {}
Alex Deymoa8033932014-02-25 10:33:13 -080020 DefaultVariable(const string& name, const TimeDelta& poll_interval)
21 : Variable<T>(name, poll_interval) {}
Alex Deymo391ad9f2014-01-29 14:36:20 -080022 virtual ~DefaultVariable() {}
23
24 protected:
25 virtual const T* GetValue(base::TimeDelta /* timeout */,
26 string* /* errmsg */) {
27 return new T();
28 }
29
30 private:
31 DISALLOW_COPY_AND_ASSIGN(DefaultVariable);
32};
33
34TEST(PmBaseVariableTest, GetNameTest) {
Alex Deymo0e433692014-02-20 07:23:03 -080035 DefaultVariable<int> var("var", kVariableModeConst);
Alex Deymo391ad9f2014-01-29 14:36:20 -080036 EXPECT_EQ(var.GetName(), string("var"));
37}
38
Alex Deymo0e433692014-02-20 07:23:03 -080039TEST(PmBaseVariableTest, GetModeTest) {
40 DefaultVariable<int> var("var", kVariableModeConst);
41 EXPECT_EQ(var.GetMode(), kVariableModeConst);
42 DefaultVariable<int> other_var("other_var", kVariableModePoll);
43 EXPECT_EQ(other_var.GetMode(), kVariableModePoll);
44}
45
Alex Deymoa8033932014-02-25 10:33:13 -080046TEST(PmBaseVariableTest, DefaultPollIntervalTest) {
47 DefaultVariable<int> const_var("const_var", kVariableModeConst);
48 EXPECT_EQ(const_var.GetPollInterval(), TimeDelta());
49 DefaultVariable<int> poll_var("poll_var", kVariableModePoll);
50 EXPECT_EQ(poll_var.GetPollInterval(), TimeDelta::FromMinutes(5));
51}
52
53TEST(PmBaseVariableTest, GetPollIntervalTest) {
54 DefaultVariable<int> var("var", TimeDelta::FromMinutes(3));
55 EXPECT_EQ(var.GetMode(), kVariableModePoll);
56 EXPECT_EQ(var.GetPollInterval(), TimeDelta::FromMinutes(3));
57}
58
Alex Deymo391ad9f2014-01-29 14:36:20 -080059} // namespace chromeos_policy_manager