blob: e422324f467ac190f5c8fcb865c0524cd8d046cc [file] [log] [blame]
Alex Vakulenko7c36b672014-07-16 14:50:58 -07001// Copyright 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
Alex Vakulenko7c36b672014-07-16 14:50:58 -07005#include "buffet/commands/command_definition.h"
6
Alex Deymof6cbe322014-11-10 19:55:35 -08007#include <gtest/gtest.h>
8
Vitaly Buka32005de2015-05-01 12:33:31 -07009namespace buffet {
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070010
11TEST(CommandVisibility, DefaultConstructor) {
12 CommandDefinition::Visibility visibility;
13 EXPECT_FALSE(visibility.local);
14 EXPECT_FALSE(visibility.cloud);
15}
16
17TEST(CommandVisibility, InitialState) {
18 auto visibility = CommandDefinition::Visibility::GetAll();
19 EXPECT_TRUE(visibility.local);
20 EXPECT_TRUE(visibility.cloud);
21
22 visibility = CommandDefinition::Visibility::GetLocal();
23 EXPECT_TRUE(visibility.local);
24 EXPECT_FALSE(visibility.cloud);
25
26 visibility = CommandDefinition::Visibility::GetCloud();
27 EXPECT_FALSE(visibility.local);
28 EXPECT_TRUE(visibility.cloud);
29
30 visibility = CommandDefinition::Visibility::GetNone();
31 EXPECT_FALSE(visibility.local);
32 EXPECT_FALSE(visibility.cloud);
33}
34
35TEST(CommandVisibility, FromString) {
36 CommandDefinition::Visibility visibility;
37
38 ASSERT_TRUE(visibility.FromString("local", nullptr));
39 EXPECT_TRUE(visibility.local);
40 EXPECT_FALSE(visibility.cloud);
41
42 ASSERT_TRUE(visibility.FromString("cloud", nullptr));
43 EXPECT_FALSE(visibility.local);
44 EXPECT_TRUE(visibility.cloud);
45
46 ASSERT_TRUE(visibility.FromString("cloud,local", nullptr));
47 EXPECT_TRUE(visibility.local);
48 EXPECT_TRUE(visibility.cloud);
49
50 ASSERT_TRUE(visibility.FromString("none", nullptr));
51 EXPECT_FALSE(visibility.local);
52 EXPECT_FALSE(visibility.cloud);
53
54 ASSERT_TRUE(visibility.FromString("all", nullptr));
55 EXPECT_TRUE(visibility.local);
56 EXPECT_TRUE(visibility.cloud);
57
58 ASSERT_TRUE(visibility.FromString("", nullptr));
59 EXPECT_FALSE(visibility.local);
60 EXPECT_FALSE(visibility.cloud);
61
62 chromeos::ErrorPtr error;
63 ASSERT_FALSE(visibility.FromString("cloud,all", &error));
64 EXPECT_EQ("invalid_parameter_value", error->GetCode());
65 EXPECT_EQ("Invalid command visibility value 'all'", error->GetMessage());
66}
67
68TEST(CommandVisibility, ToString) {
69 EXPECT_EQ("none", CommandDefinition::Visibility::GetNone().ToString());
70 EXPECT_EQ("local", CommandDefinition::Visibility::GetLocal().ToString());
71 EXPECT_EQ("cloud", CommandDefinition::Visibility::GetCloud().ToString());
72 EXPECT_EQ("all", CommandDefinition::Visibility::GetAll().ToString());
73}
Alex Vakulenko5ef75792015-03-19 15:50:44 -070074
Alex Vakulenko7c36b672014-07-16 14:50:58 -070075TEST(CommandDefinition, Test) {
Alex Vakulenko5ef75792015-03-19 15:50:44 -070076 std::unique_ptr<const ObjectSchema> params{ObjectSchema::Create()};
Vitaly Buka4129dfa2015-04-29 12:16:58 -070077 std::unique_ptr<const ObjectSchema> progress{ObjectSchema::Create()};
Alex Vakulenko5ef75792015-03-19 15:50:44 -070078 std::unique_ptr<const ObjectSchema> results{ObjectSchema::Create()};
79 const ObjectSchema* param_ptr = params.get();
Vitaly Buka4129dfa2015-04-29 12:16:58 -070080 const ObjectSchema* progress_ptr = progress.get();
Alex Vakulenko5ef75792015-03-19 15:50:44 -070081 const ObjectSchema* results_ptr = results.get();
Vitaly Buka4129dfa2015-04-29 12:16:58 -070082 CommandDefinition def{
83 "powerd", std::move(params), std::move(progress), std::move(results)};
Alex Vakulenko7c36b672014-07-16 14:50:58 -070084 EXPECT_EQ("powerd", def.GetCategory());
Alex Vakulenko5ef75792015-03-19 15:50:44 -070085 EXPECT_EQ(param_ptr, def.GetParameters());
Vitaly Buka4129dfa2015-04-29 12:16:58 -070086 EXPECT_EQ(progress_ptr, def.GetProgress());
Alex Vakulenko5ef75792015-03-19 15:50:44 -070087 EXPECT_EQ(results_ptr, def.GetResults());
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070088 EXPECT_EQ("all", def.GetVisibility().ToString());
89
90 def.SetVisibility(CommandDefinition::Visibility::GetLocal());
91 EXPECT_EQ("local", def.GetVisibility().ToString());
Alex Vakulenko7c36b672014-07-16 14:50:58 -070092}
Vitaly Buka32005de2015-05-01 12:33:31 -070093
94} // namespace buffet