17fdb50c8SSiva Chandra Reddy //===-- Unittests for getenv ----------------------------------------------===//
27fdb50c8SSiva Chandra Reddy //
37fdb50c8SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
47fdb50c8SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information.
57fdb50c8SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
67fdb50c8SSiva Chandra Reddy //
77fdb50c8SSiva Chandra Reddy //===----------------------------------------------------------------------===//
87fdb50c8SSiva Chandra Reddy 
97fdb50c8SSiva Chandra Reddy #include "src/stdlib/getenv.h"
107fdb50c8SSiva Chandra Reddy 
117fdb50c8SSiva Chandra Reddy #include "utils/IntegrationTest/test.h"
127fdb50c8SSiva Chandra Reddy 
my_streq(const char * lhs,const char * rhs)137fdb50c8SSiva Chandra Reddy static bool my_streq(const char *lhs, const char *rhs) {
147fdb50c8SSiva Chandra Reddy   if (lhs == rhs)
157fdb50c8SSiva Chandra Reddy     return true;
167fdb50c8SSiva Chandra Reddy   if (((lhs == static_cast<char *>(nullptr)) &&
177fdb50c8SSiva Chandra Reddy        (rhs != static_cast<char *>(nullptr))) ||
187fdb50c8SSiva Chandra Reddy       ((lhs != static_cast<char *>(nullptr)) &&
197fdb50c8SSiva Chandra Reddy        (rhs == static_cast<char *>(nullptr)))) {
207fdb50c8SSiva Chandra Reddy     return false;
217fdb50c8SSiva Chandra Reddy   }
227fdb50c8SSiva Chandra Reddy   const char *l, *r;
237fdb50c8SSiva Chandra Reddy   for (l = lhs, r = rhs; *l != '\0' && *r != '\0'; ++l, ++r)
247fdb50c8SSiva Chandra Reddy     if (*l != *r)
257fdb50c8SSiva Chandra Reddy       return false;
267fdb50c8SSiva Chandra Reddy 
277fdb50c8SSiva Chandra Reddy   return *l == '\0' && *r == '\0';
287fdb50c8SSiva Chandra Reddy }
297fdb50c8SSiva Chandra Reddy 
main(int argc,char ** argv,char ** envp)307fdb50c8SSiva Chandra Reddy int main(int argc, char **argv, char **envp) {
317fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(my_streq(__llvm_libc::getenv(""), static_cast<char *>(nullptr)));
327fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(my_streq(__llvm_libc::getenv("="), static_cast<char *>(nullptr)));
337fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(my_streq(__llvm_libc::getenv("MISSING ENV VARIABLE"),
347fdb50c8SSiva Chandra Reddy                        static_cast<char *>(nullptr)));
35*a5cb6edbSSiva Chandra Reddy   ASSERT_FALSE(
36*a5cb6edbSSiva Chandra Reddy       my_streq(__llvm_libc::getenv("PATH"), static_cast<char *>(nullptr)));
377fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(my_streq(__llvm_libc::getenv("FRANCE"), "Paris"));
387fdb50c8SSiva Chandra Reddy   ASSERT_FALSE(my_streq(__llvm_libc::getenv("FRANCE"), "Berlin"));
397fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(my_streq(__llvm_libc::getenv("GERMANY"), "Berlin"));
407fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(
417fdb50c8SSiva Chandra Reddy       my_streq(__llvm_libc::getenv("FRANC"), static_cast<char *>(nullptr)));
427fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(
437fdb50c8SSiva Chandra Reddy       my_streq(__llvm_libc::getenv("FRANCE1"), static_cast<char *>(nullptr)));
447fdb50c8SSiva Chandra Reddy 
457fdb50c8SSiva Chandra Reddy   return 0;
467fdb50c8SSiva Chandra Reddy }
47