| // Copyright 2015 The Weave Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "src/commands/command_definition.h" | 
 |  | 
 | #include <gtest/gtest.h> | 
 |  | 
 | namespace weave { | 
 |  | 
 | TEST(CommandVisibility, DefaultConstructor) { | 
 |   CommandDefinition::Visibility visibility; | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 | } | 
 |  | 
 | TEST(CommandVisibility, InitialState) { | 
 |   auto visibility = CommandDefinition::Visibility::GetAll(); | 
 |   EXPECT_TRUE(visibility.local); | 
 |   EXPECT_TRUE(visibility.cloud); | 
 |  | 
 |   visibility = CommandDefinition::Visibility::GetLocal(); | 
 |   EXPECT_TRUE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 |  | 
 |   visibility = CommandDefinition::Visibility::GetCloud(); | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_TRUE(visibility.cloud); | 
 |  | 
 |   visibility = CommandDefinition::Visibility::GetNone(); | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 | } | 
 |  | 
 | TEST(CommandVisibility, FromString) { | 
 |   CommandDefinition::Visibility visibility; | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("local", nullptr)); | 
 |   EXPECT_TRUE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("cloud", nullptr)); | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_TRUE(visibility.cloud); | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("cloud,local", nullptr)); | 
 |   EXPECT_TRUE(visibility.local); | 
 |   EXPECT_TRUE(visibility.cloud); | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("none", nullptr)); | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("all", nullptr)); | 
 |   EXPECT_TRUE(visibility.local); | 
 |   EXPECT_TRUE(visibility.cloud); | 
 |  | 
 |   ASSERT_TRUE(visibility.FromString("", nullptr)); | 
 |   EXPECT_FALSE(visibility.local); | 
 |   EXPECT_FALSE(visibility.cloud); | 
 |  | 
 |   ErrorPtr error; | 
 |   ASSERT_FALSE(visibility.FromString("cloud,all", &error)); | 
 |   EXPECT_EQ("invalid_parameter_value", error->GetCode()); | 
 | } | 
 |  | 
 | TEST(CommandVisibility, ToString) { | 
 |   EXPECT_EQ("none", CommandDefinition::Visibility::GetNone().ToString()); | 
 |   EXPECT_EQ("local", CommandDefinition::Visibility::GetLocal().ToString()); | 
 |   EXPECT_EQ("cloud", CommandDefinition::Visibility::GetCloud().ToString()); | 
 |   EXPECT_EQ("all", CommandDefinition::Visibility::GetAll().ToString()); | 
 | } | 
 |  | 
 | TEST(CommandDefinition, Test) { | 
 |   std::unique_ptr<const ObjectSchema> params{ObjectSchema::Create()}; | 
 |   std::unique_ptr<const ObjectSchema> progress{ObjectSchema::Create()}; | 
 |   std::unique_ptr<const ObjectSchema> results{ObjectSchema::Create()}; | 
 |   const ObjectSchema* param_ptr = params.get(); | 
 |   const ObjectSchema* progress_ptr = progress.get(); | 
 |   const ObjectSchema* results_ptr = results.get(); | 
 |   CommandDefinition def{std::move(params), std::move(progress), | 
 |                         std::move(results)}; | 
 |   EXPECT_EQ(param_ptr, def.GetParameters()); | 
 |   EXPECT_EQ(progress_ptr, def.GetProgress()); | 
 |   EXPECT_EQ(results_ptr, def.GetResults()); | 
 |   EXPECT_EQ("all", def.GetVisibility().ToString()); | 
 |  | 
 |   def.SetVisibility(CommandDefinition::Visibility::GetLocal()); | 
 |   EXPECT_EQ("local", def.GetVisibility().ToString()); | 
 | } | 
 |  | 
 | }  // namespace weave |