1 //===-- EnvironmentTest.cpp -------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "gtest/gtest.h"
11 
12 #include "lldb/Utility/Environment.h"
13 
14 using namespace lldb_private;
15 
16 TEST(EnvironmentTest, EnvpConstruction) {
17   const char **Envp1 = nullptr;
18   EXPECT_EQ(0u, Environment(Envp1).size());
19 
20   const char *Envp2[] = {"FOO=BAR", nullptr};
21   EXPECT_EQ("BAR", Environment(Envp2).lookup("FOO"));
22 
23   const char *Envp3[] = {"FOO=BAR", "FOO=BAZ", nullptr};
24   EXPECT_EQ("BAR", Environment(Envp3).lookup("FOO"));
25 
26   const char *Envp4[] = {"FOO=", "BAR", nullptr};
27   Environment Env4(Envp4);
28   ASSERT_EQ(2u, Env4.size());
29   EXPECT_EQ("", Environment(Envp4).find("FOO")->second);
30   EXPECT_EQ("", Environment(Envp4).find("BAR")->second);
31 
32   const char *Envp5[] = {"FOO=BAR=BAZ", nullptr};
33   EXPECT_EQ("BAR=BAZ", Environment(Envp5).lookup("FOO"));
34 }
35 
36 TEST(EnvironmentTest, EnvpConversion) {
37   std::string FOO_EQ_BAR("FOO=BAR");
38   std::string BAR_EQ_BAZ("BAR=BAZ");
39 
40   Environment Env;
41   Env.insert(FOO_EQ_BAR);
42   Env.insert(BAR_EQ_BAZ);
43   Environment::Envp Envp = Env.getEnvp();
44   const char *const *Envp_ = Envp;
45 
46   EXPECT_TRUE(FOO_EQ_BAR == Envp_[0] || FOO_EQ_BAR == Envp_[1]);
47   EXPECT_TRUE(BAR_EQ_BAZ == Envp_[0] || BAR_EQ_BAZ == Envp_[1]);
48   EXPECT_EQ(nullptr, Envp_[2]);
49 }
50