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