blob: 77b2754a32355257eeb931631e029962e939ee0e [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Alex Vakulenko7c36b672014-07-16 14:50:58 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Stefan Sauer2d16dfa2015-09-25 17:08:35 +02005#include "src/commands/command_definition.h"
Alex Vakulenko7c36b672014-07-16 14:50:58 -07006
Alex Deymof6cbe322014-11-10 19:55:35 -08007#include <gtest/gtest.h>
8
Vitaly Bukab6f015a2015-07-09 14:59:23 -07009namespace weave {
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
Vitaly Buka0801a1f2015-08-14 10:03:46 -070062 ErrorPtr error;
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070063 ASSERT_FALSE(visibility.FromString("cloud,all", &error));
64 EXPECT_EQ("invalid_parameter_value", error->GetCode());
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070065}
66
67TEST(CommandVisibility, ToString) {
68 EXPECT_EQ("none", CommandDefinition::Visibility::GetNone().ToString());
69 EXPECT_EQ("local", CommandDefinition::Visibility::GetLocal().ToString());
70 EXPECT_EQ("cloud", CommandDefinition::Visibility::GetCloud().ToString());
71 EXPECT_EQ("all", CommandDefinition::Visibility::GetAll().ToString());
72}
Alex Vakulenko5ef75792015-03-19 15:50:44 -070073
Alex Vakulenko7c36b672014-07-16 14:50:58 -070074TEST(CommandDefinition, Test) {
Alex Vakulenko5ef75792015-03-19 15:50:44 -070075 std::unique_ptr<const ObjectSchema> params{ObjectSchema::Create()};
Vitaly Buka4129dfa2015-04-29 12:16:58 -070076 std::unique_ptr<const ObjectSchema> progress{ObjectSchema::Create()};
Alex Vakulenko5ef75792015-03-19 15:50:44 -070077 std::unique_ptr<const ObjectSchema> results{ObjectSchema::Create()};
78 const ObjectSchema* param_ptr = params.get();
Vitaly Buka4129dfa2015-04-29 12:16:58 -070079 const ObjectSchema* progress_ptr = progress.get();
Alex Vakulenko5ef75792015-03-19 15:50:44 -070080 const ObjectSchema* results_ptr = results.get();
Vitaly Buka453c4dd2015-10-04 18:01:50 -070081 CommandDefinition def{std::move(params), std::move(progress),
Vitaly Buka4ebd3292015-09-23 18:04:17 -070082 std::move(results)};
Alex Vakulenko5ef75792015-03-19 15:50:44 -070083 EXPECT_EQ(param_ptr, def.GetParameters());
Vitaly Buka4129dfa2015-04-29 12:16:58 -070084 EXPECT_EQ(progress_ptr, def.GetProgress());
Alex Vakulenko5ef75792015-03-19 15:50:44 -070085 EXPECT_EQ(results_ptr, def.GetResults());
Alex Vakulenko5e86fee2015-04-17 08:47:45 -070086 EXPECT_EQ("all", def.GetVisibility().ToString());
87
88 def.SetVisibility(CommandDefinition::Visibility::GetLocal());
89 EXPECT_EQ("local", def.GetVisibility().ToString());
Alex Vakulenko7c36b672014-07-16 14:50:58 -070090}
Vitaly Buka32005de2015-05-01 12:33:31 -070091
Vitaly Bukab6f015a2015-07-09 14:59:23 -070092} // namespace weave