blob: 171164d6b0441c023827a2e604332e90fe8b0ab5 [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
Alex Vakulenko5ef75792015-03-19 15:50:44 -07009using buffet::ObjectSchema;
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070010using buffet::CommandDefinition;
11
12TEST(CommandVisibility, DefaultConstructor) {
13 CommandDefinition::Visibility visibility;
14 EXPECT_FALSE(visibility.local);
15 EXPECT_FALSE(visibility.cloud);
16}
17
18TEST(CommandVisibility, InitialState) {
19 auto visibility = CommandDefinition::Visibility::GetAll();
20 EXPECT_TRUE(visibility.local);
21 EXPECT_TRUE(visibility.cloud);
22
23 visibility = CommandDefinition::Visibility::GetLocal();
24 EXPECT_TRUE(visibility.local);
25 EXPECT_FALSE(visibility.cloud);
26
27 visibility = CommandDefinition::Visibility::GetCloud();
28 EXPECT_FALSE(visibility.local);
29 EXPECT_TRUE(visibility.cloud);
30
31 visibility = CommandDefinition::Visibility::GetNone();
32 EXPECT_FALSE(visibility.local);
33 EXPECT_FALSE(visibility.cloud);
34}
35
36TEST(CommandVisibility, FromString) {
37 CommandDefinition::Visibility visibility;
38
39 ASSERT_TRUE(visibility.FromString("local", nullptr));
40 EXPECT_TRUE(visibility.local);
41 EXPECT_FALSE(visibility.cloud);
42
43 ASSERT_TRUE(visibility.FromString("cloud", nullptr));
44 EXPECT_FALSE(visibility.local);
45 EXPECT_TRUE(visibility.cloud);
46
47 ASSERT_TRUE(visibility.FromString("cloud,local", nullptr));
48 EXPECT_TRUE(visibility.local);
49 EXPECT_TRUE(visibility.cloud);
50
51 ASSERT_TRUE(visibility.FromString("none", nullptr));
52 EXPECT_FALSE(visibility.local);
53 EXPECT_FALSE(visibility.cloud);
54
55 ASSERT_TRUE(visibility.FromString("all", nullptr));
56 EXPECT_TRUE(visibility.local);
57 EXPECT_TRUE(visibility.cloud);
58
59 ASSERT_TRUE(visibility.FromString("", nullptr));
60 EXPECT_FALSE(visibility.local);
61 EXPECT_FALSE(visibility.cloud);
62
63 chromeos::ErrorPtr error;
64 ASSERT_FALSE(visibility.FromString("cloud,all", &error));
65 EXPECT_EQ("invalid_parameter_value", error->GetCode());
66 EXPECT_EQ("Invalid command visibility value 'all'", error->GetMessage());
67}
68
69TEST(CommandVisibility, ToString) {
70 EXPECT_EQ("none", CommandDefinition::Visibility::GetNone().ToString());
71 EXPECT_EQ("local", CommandDefinition::Visibility::GetLocal().ToString());
72 EXPECT_EQ("cloud", CommandDefinition::Visibility::GetCloud().ToString());
73 EXPECT_EQ("all", CommandDefinition::Visibility::GetAll().ToString());
74}
Alex Vakulenko5ef75792015-03-19 15:50:44 -070075
Alex Vakulenko7c36b672014-07-16 14:50:58 -070076TEST(CommandDefinition, Test) {
Alex Vakulenko5ef75792015-03-19 15:50:44 -070077 std::unique_ptr<const ObjectSchema> params{ObjectSchema::Create()};
Vitaly Buka4129dfa2015-04-29 12:16:58 -070078 std::unique_ptr<const ObjectSchema> progress{ObjectSchema::Create()};
Alex Vakulenko5ef75792015-03-19 15:50:44 -070079 std::unique_ptr<const ObjectSchema> results{ObjectSchema::Create()};
80 const ObjectSchema* param_ptr = params.get();
Vitaly Buka4129dfa2015-04-29 12:16:58 -070081 const ObjectSchema* progress_ptr = progress.get();
Alex Vakulenko5ef75792015-03-19 15:50:44 -070082 const ObjectSchema* results_ptr = results.get();
Vitaly Buka4129dfa2015-04-29 12:16:58 -070083 CommandDefinition def{
84 "powerd", std::move(params), std::move(progress), std::move(results)};
Alex Vakulenko7c36b672014-07-16 14:50:58 -070085 EXPECT_EQ("powerd", def.GetCategory());
Alex Vakulenko5ef75792015-03-19 15:50:44 -070086 EXPECT_EQ(param_ptr, def.GetParameters());
Vitaly Buka4129dfa2015-04-29 12:16:58 -070087 EXPECT_EQ(progress_ptr, def.GetProgress());
Alex Vakulenko5ef75792015-03-19 15:50:44 -070088 EXPECT_EQ(results_ptr, def.GetResults());
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070089 EXPECT_EQ("all", def.GetVisibility().ToString());
90
91 def.SetVisibility(CommandDefinition::Visibility::GetLocal());
92 EXPECT_EQ("local", def.GetVisibility().ToString());
Alex Vakulenko7c36b672014-07-16 14:50:58 -070093}