xref: /aosp_15_r20/external/cronet/base/environment_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/environment.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <memory>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h"
10*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
11*6777b538SAndroid Build Coastguard Worker #include "testing/platform_test.h"
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker typedef PlatformTest EnvironmentTest;
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker namespace base {
16*6777b538SAndroid Build Coastguard Worker 
17*6777b538SAndroid Build Coastguard Worker namespace {
18*6777b538SAndroid Build Coastguard Worker 
19*6777b538SAndroid Build Coastguard Worker // PATH env variable is not set on Fuchsia by default, while PWD is not set on
20*6777b538SAndroid Build Coastguard Worker // Windows.
21*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_FUCHSIA)
22*6777b538SAndroid Build Coastguard Worker constexpr char kValidEnvironmentVariable[] = "PWD";
23*6777b538SAndroid Build Coastguard Worker #else
24*6777b538SAndroid Build Coastguard Worker constexpr char kValidEnvironmentVariable[] = "PATH";
25*6777b538SAndroid Build Coastguard Worker #endif
26*6777b538SAndroid Build Coastguard Worker 
27*6777b538SAndroid Build Coastguard Worker }  // namespace
28*6777b538SAndroid Build Coastguard Worker 
TEST_F(EnvironmentTest,GetVar)29*6777b538SAndroid Build Coastguard Worker TEST_F(EnvironmentTest, GetVar) {
30*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<Environment> env(Environment::Create());
31*6777b538SAndroid Build Coastguard Worker   std::string env_value;
32*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->GetVar(kValidEnvironmentVariable, &env_value));
33*6777b538SAndroid Build Coastguard Worker   EXPECT_NE(env_value, "");
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker 
TEST_F(EnvironmentTest,GetVarReverse)36*6777b538SAndroid Build Coastguard Worker TEST_F(EnvironmentTest, GetVarReverse) {
37*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<Environment> env(Environment::Create());
38*6777b538SAndroid Build Coastguard Worker   const char kFooUpper[] = "FOO";
39*6777b538SAndroid Build Coastguard Worker   const char kFooLower[] = "foo";
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker   // Set a variable in UPPER case.
42*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker   // And then try to get this variable passing the lower case.
45*6777b538SAndroid Build Coastguard Worker   std::string env_value;
46*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->GetVar(kFooLower, &env_value));
47*6777b538SAndroid Build Coastguard Worker 
48*6777b538SAndroid Build Coastguard Worker   EXPECT_STREQ(env_value.c_str(), kFooLower);
49*6777b538SAndroid Build Coastguard Worker 
50*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->UnSetVar(kFooUpper));
51*6777b538SAndroid Build Coastguard Worker 
52*6777b538SAndroid Build Coastguard Worker   const char kBar[] = "bar";
53*6777b538SAndroid Build Coastguard Worker   // Now do the opposite, set the variable in the lower case.
54*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->SetVar(kFooLower, kBar));
55*6777b538SAndroid Build Coastguard Worker 
56*6777b538SAndroid Build Coastguard Worker   // And then try to get this variable passing the UPPER case.
57*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->GetVar(kFooUpper, &env_value));
58*6777b538SAndroid Build Coastguard Worker 
59*6777b538SAndroid Build Coastguard Worker   EXPECT_STREQ(env_value.c_str(), kBar);
60*6777b538SAndroid Build Coastguard Worker 
61*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->UnSetVar(kFooLower));
62*6777b538SAndroid Build Coastguard Worker }
63*6777b538SAndroid Build Coastguard Worker 
TEST_F(EnvironmentTest,HasVar)64*6777b538SAndroid Build Coastguard Worker TEST_F(EnvironmentTest, HasVar) {
65*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<Environment> env(Environment::Create());
66*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->HasVar(kValidEnvironmentVariable));
67*6777b538SAndroid Build Coastguard Worker }
68*6777b538SAndroid Build Coastguard Worker 
TEST_F(EnvironmentTest,SetVar)69*6777b538SAndroid Build Coastguard Worker TEST_F(EnvironmentTest, SetVar) {
70*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<Environment> env(Environment::Create());
71*6777b538SAndroid Build Coastguard Worker 
72*6777b538SAndroid Build Coastguard Worker   const char kFooUpper[] = "FOO";
73*6777b538SAndroid Build Coastguard Worker   const char kFooLower[] = "foo";
74*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
75*6777b538SAndroid Build Coastguard Worker 
76*6777b538SAndroid Build Coastguard Worker   // Now verify that the environment has the new variable.
77*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->HasVar(kFooUpper));
78*6777b538SAndroid Build Coastguard Worker 
79*6777b538SAndroid Build Coastguard Worker   std::string var_value;
80*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->GetVar(kFooUpper, &var_value));
81*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(var_value, kFooLower);
82*6777b538SAndroid Build Coastguard Worker }
83*6777b538SAndroid Build Coastguard Worker 
TEST_F(EnvironmentTest,UnSetVar)84*6777b538SAndroid Build Coastguard Worker TEST_F(EnvironmentTest, UnSetVar) {
85*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<Environment> env(Environment::Create());
86*6777b538SAndroid Build Coastguard Worker 
87*6777b538SAndroid Build Coastguard Worker   const char kFooUpper[] = "FOO";
88*6777b538SAndroid Build Coastguard Worker   const char kFooLower[] = "foo";
89*6777b538SAndroid Build Coastguard Worker   // First set some environment variable.
90*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
91*6777b538SAndroid Build Coastguard Worker 
92*6777b538SAndroid Build Coastguard Worker   // Now verify that the environment has the new variable.
93*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->HasVar(kFooUpper));
94*6777b538SAndroid Build Coastguard Worker 
95*6777b538SAndroid Build Coastguard Worker   // Finally verify that the environment variable was erased.
96*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(env->UnSetVar(kFooUpper));
97*6777b538SAndroid Build Coastguard Worker 
98*6777b538SAndroid Build Coastguard Worker   // And check that the variable has been unset.
99*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(env->HasVar(kFooUpper));
100*6777b538SAndroid Build Coastguard Worker }
101*6777b538SAndroid Build Coastguard Worker 
102*6777b538SAndroid Build Coastguard Worker }  // namespace base
103