xref: /llvm-project/libc/test/integration/src/stdlib/getenv_test.cpp (revision b6bc9d72f65a5086f310f321e969d96e9a559e75)
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 
11af1315c2SSiva Chandra Reddy #include "test/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 
TEST_MAIN(int argc,char ** argv,char ** envp)3012df3080SSiva Chandra Reddy TEST_MAIN(int argc, char **argv, char **envp) {
31*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(
32*b6bc9d72SGuillaume Chatelet       my_streq(LIBC_NAMESPACE::getenv(""), static_cast<char *>(nullptr)));
33*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(
34*b6bc9d72SGuillaume Chatelet       my_streq(LIBC_NAMESPACE::getenv("="), static_cast<char *>(nullptr)));
35*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("MISSING ENV VARIABLE"),
367fdb50c8SSiva Chandra Reddy                        static_cast<char *>(nullptr)));
37a5cb6edbSSiva Chandra Reddy   ASSERT_FALSE(
38*b6bc9d72SGuillaume Chatelet       my_streq(LIBC_NAMESPACE::getenv("PATH"), static_cast<char *>(nullptr)));
39*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("FRANCE"), "Paris"));
40*b6bc9d72SGuillaume Chatelet   ASSERT_FALSE(my_streq(LIBC_NAMESPACE::getenv("FRANCE"), "Berlin"));
41*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("GERMANY"), "Berlin"));
427fdb50c8SSiva Chandra Reddy   ASSERT_TRUE(
43*b6bc9d72SGuillaume Chatelet       my_streq(LIBC_NAMESPACE::getenv("FRANC"), static_cast<char *>(nullptr)));
44*b6bc9d72SGuillaume Chatelet   ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("FRANCE1"),
45*b6bc9d72SGuillaume Chatelet                        static_cast<char *>(nullptr)));
467fdb50c8SSiva Chandra Reddy 
477fdb50c8SSiva Chandra Reddy   return 0;
487fdb50c8SSiva Chandra Reddy }
49