blob: 77b2754a32355257eeb931631e029962e939ee0e [file] [log] [blame]
// 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