blob: b3848d54939b66c80361075ee58878b72bab12b5 [file] [log] [blame]
// Copyright 2018 The Chromium OS 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 "shill/shims/environment.h"
#include <base/stl_util.h>
#include <gtest/gtest.h>
namespace shill {
namespace shims {
class EnvironmentTest : public testing::Test {
public:
EnvironmentTest() : environment_(Environment::GetInstance()) {}
protected:
Environment* environment_;
};
TEST_F(EnvironmentTest, GetVariable) {
static const char* const kVarValues[] = {
"VALUE",
"",
};
static const char kVarName[] = "SHILL_SHIMS_GET_VARIABLE_TEST";
for (size_t i = 0; i < base::size(kVarValues); i++) {
EXPECT_FALSE(environment_->GetVariable(kVarName, nullptr));
EXPECT_EQ(0, setenv(kVarName, kVarValues[i], 0)) << kVarValues[i];
std::string value;
EXPECT_TRUE(environment_->GetVariable(kVarName, &value)) << kVarValues[i];
EXPECT_EQ(kVarValues[i], value);
EXPECT_EQ(0, unsetenv(kVarName));
}
}
TEST_F(EnvironmentTest, AsMap) {
static const char* const kVarNames[] = {
"SHILL_SHIMS_AS_MAP_TEST_1",
"SHILL_SHIMS_AS_MAP_TEST_EMPTY",
"SHILL_SHIMS_AS_MAP_TEST_2",
};
static const char* const kVarValues[] = {
"VALUE 1",
"",
"VALUE 2",
};
ASSERT_EQ(base::size(kVarNames), base::size(kVarValues));
for (size_t i = 0; i < base::size(kVarNames); i++) {
EXPECT_EQ(0, setenv(kVarNames[i], kVarValues[i], 0)) << kVarNames[i];
}
std::map<std::string, std::string> env = environment_->AsMap();
for (size_t i = 0; i < base::size(kVarNames); i++) {
EXPECT_TRUE(base::Contains(env, kVarNames[i])) << kVarNames[i];
EXPECT_EQ(kVarValues[i], env[kVarNames[i]]) << kVarNames[i];
EXPECT_EQ(0, unsetenv(kVarNames[i])) << kVarNames[i];
}
}
} // namespace shims
} // namespace shill