Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/environment.h"
      6 #include "base/memory/scoped_ptr.h"
      7 #include "testing/gtest/include/gtest/gtest.h"
      8 #include "testing/platform_test.h"
      9 
     10 typedef PlatformTest EnvironmentTest;
     11 
     12 TEST_F(EnvironmentTest, GetVar) {
     13   // Every setup should have non-empty PATH...
     14   scoped_ptr<base::Environment> env(base::Environment::Create());
     15   std::string env_value;
     16   EXPECT_TRUE(env->GetVar("PATH", &env_value));
     17   EXPECT_NE(env_value, "");
     18 }
     19 
     20 TEST_F(EnvironmentTest, GetVarReverse) {
     21   scoped_ptr<base::Environment> env(base::Environment::Create());
     22   const char* kFooUpper = "FOO";
     23   const char* kFooLower = "foo";
     24 
     25   // Set a variable in UPPER case.
     26   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
     27 
     28   // And then try to get this variable passing the lower case.
     29   std::string env_value;
     30   EXPECT_TRUE(env->GetVar(kFooLower, &env_value));
     31 
     32   EXPECT_STREQ(env_value.c_str(), kFooLower);
     33 
     34   EXPECT_TRUE(env->UnSetVar(kFooUpper));
     35 
     36   const char* kBar = "bar";
     37   // Now do the opposite, set the variable in the lower case.
     38   EXPECT_TRUE(env->SetVar(kFooLower, kBar));
     39 
     40   // And then try to get this variable passing the UPPER case.
     41   EXPECT_TRUE(env->GetVar(kFooUpper, &env_value));
     42 
     43   EXPECT_STREQ(env_value.c_str(), kBar);
     44 
     45   EXPECT_TRUE(env->UnSetVar(kFooLower));
     46 }
     47 
     48 TEST_F(EnvironmentTest, HasVar) {
     49   // Every setup should have PATH...
     50   scoped_ptr<base::Environment> env(base::Environment::Create());
     51   EXPECT_TRUE(env->HasVar("PATH"));
     52 }
     53 
     54 TEST_F(EnvironmentTest, SetVar) {
     55   scoped_ptr<base::Environment> env(base::Environment::Create());
     56 
     57   const char* kFooUpper = "FOO";
     58   const char* kFooLower = "foo";
     59   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
     60 
     61   // Now verify that the environment has the new variable.
     62   EXPECT_TRUE(env->HasVar(kFooUpper));
     63 
     64   std::string var_value;
     65   EXPECT_TRUE(env->GetVar(kFooUpper, &var_value));
     66   EXPECT_EQ(var_value, kFooLower);
     67 }
     68 
     69 TEST_F(EnvironmentTest, UnSetVar) {
     70   scoped_ptr<base::Environment> env(base::Environment::Create());
     71 
     72   const char* kFooUpper = "FOO";
     73   const char* kFooLower = "foo";
     74   // First set some environment variable.
     75   EXPECT_TRUE(env->SetVar(kFooUpper, kFooLower));
     76 
     77   // Now verify that the environment has the new variable.
     78   EXPECT_TRUE(env->HasVar(kFooUpper));
     79 
     80   // Finally verify that the environment variable was erased.
     81   EXPECT_TRUE(env->UnSetVar(kFooUpper));
     82 
     83   // And check that the variable has been unset.
     84   EXPECT_FALSE(env->HasVar(kFooUpper));
     85 }
     86