165bb6593SMichael Jones //===-- Unittests for strdup ----------------------------------------------===// 265bb6593SMichael Jones // 365bb6593SMichael Jones // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 465bb6593SMichael Jones // See https://llvm.org/LICENSE.txt for license information. 565bb6593SMichael Jones // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 665bb6593SMichael Jones // 765bb6593SMichael Jones //===----------------------------------------------------------------------===// 865bb6593SMichael Jones 930d89423SSiva Chandra Reddy #include "src/errno/libc_errno.h" 1065bb6593SMichael Jones #include "src/string/strdup.h" 11af1315c2SSiva Chandra Reddy #include "test/UnitTest/Test.h" 12f3400305SSiva Chandra Reddy 1365bb6593SMichael Jones TEST(LlvmLibcStrDupTest, EmptyString) { 1465bb6593SMichael Jones const char *empty = ""; 1565bb6593SMichael Jones 16*3eb1e6d8Smichaelrj-google LIBC_NAMESPACE::libc_errno = 0; 17b6bc9d72SGuillaume Chatelet char *result = LIBC_NAMESPACE::strdup(empty); 1873874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS(); 19f3400305SSiva Chandra Reddy 2065bb6593SMichael Jones ASSERT_NE(result, static_cast<char *>(nullptr)); 2165bb6593SMichael Jones ASSERT_NE(empty, const_cast<const char *>(result)); 2265bb6593SMichael Jones ASSERT_STREQ(empty, result); 2365bb6593SMichael Jones ::free(result); 2465bb6593SMichael Jones } 2565bb6593SMichael Jones 2665bb6593SMichael Jones TEST(LlvmLibcStrDupTest, AnyString) { 2765bb6593SMichael Jones const char *abc = "abc"; 2865bb6593SMichael Jones 29*3eb1e6d8Smichaelrj-google LIBC_NAMESPACE::libc_errno = 0; 30b6bc9d72SGuillaume Chatelet char *result = LIBC_NAMESPACE::strdup(abc); 3173874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS(); 3265bb6593SMichael Jones 3365bb6593SMichael Jones ASSERT_NE(result, static_cast<char *>(nullptr)); 3465bb6593SMichael Jones ASSERT_NE(abc, const_cast<const char *>(result)); 3565bb6593SMichael Jones ASSERT_STREQ(abc, result); 3665bb6593SMichael Jones ::free(result); 3765bb6593SMichael Jones } 3865bb6593SMichael Jones 3965bb6593SMichael Jones TEST(LlvmLibcStrDupTest, NullPtr) { 40*3eb1e6d8Smichaelrj-google LIBC_NAMESPACE::libc_errno = 0; 41b6bc9d72SGuillaume Chatelet char *result = LIBC_NAMESPACE::strdup(nullptr); 4273874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS(); 4365bb6593SMichael Jones 4465bb6593SMichael Jones ASSERT_EQ(result, static_cast<char *>(nullptr)); 4565bb6593SMichael Jones } 46