brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · ace95e8 Raw
98 lines · cpp
1//===-- Unittests for wcscmp ----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "src/wchar/wcscmp.h"10#include "test/UnitTest/Test.h"11 12TEST(LlvmLibcWcscmpTest, EmptyStringsShouldReturnZero) {13  const wchar_t *s1 = L"";14  const wchar_t *s2 = L"";15  int result = LIBC_NAMESPACE::wcscmp(s1, s2);16  ASSERT_EQ(result, 0);17 18  // Verify operands reversed.19  result = LIBC_NAMESPACE::wcscmp(s2, s1);20  ASSERT_EQ(result, 0);21}22 23TEST(LlvmLibcWcscmpTest, EmptyStringShouldNotEqualNonEmptyString) {24  const wchar_t *empty = L"";25  const wchar_t *s2 = L"abc";26  int result = LIBC_NAMESPACE::wcscmp(empty, s2);27  ASSERT_LT(result, 0);28 29  // Similar case if empty string is second argument.30  const wchar_t *s3 = L"123";31  result = LIBC_NAMESPACE::wcscmp(s3, empty);32  ASSERT_GT(result, 0);33}34 35TEST(LlvmLibcWcscmpTest, EqualStringsShouldReturnZero) {36  const wchar_t *s1 = L"abc";37  const wchar_t *s2 = L"abc";38  int result = LIBC_NAMESPACE::wcscmp(s1, s2);39  ASSERT_EQ(result, 0);40 41  // Verify operands reversed.42  result = LIBC_NAMESPACE::wcscmp(s2, s1);43  ASSERT_EQ(result, 0);44}45 46TEST(LlvmLibcWcscmpTest, ShouldReturnResultOfFirstDifference) {47  const wchar_t *s1 = L"___B42__";48  const wchar_t *s2 = L"___C55__";49  int result = LIBC_NAMESPACE::wcscmp(s1, s2);50  ASSERT_LT(result, 0);51 52  // Verify operands reversed.53  result = LIBC_NAMESPACE::wcscmp(s2, s1);54  ASSERT_GT(result, 0);55}56 57TEST(LlvmLibcWcscmpTest, CapitalizedLetterShouldNotBeEqual) {58  const wchar_t *s1 = L"abcd";59  const wchar_t *s2 = L"abCd";60  int result = LIBC_NAMESPACE::wcscmp(s1, s2);61  ASSERT_GT(result, 0);62 63  // Verify operands reversed.64  result = LIBC_NAMESPACE::wcscmp(s2, s1);65  ASSERT_LT(result, 0);66}67 68TEST(LlvmLibcWcscmpTest, UnequalLengthStringsShouldNotReturnZero) {69  const wchar_t *s1 = L"abc";70  const wchar_t *s2 = L"abcd";71  int result = LIBC_NAMESPACE::wcscmp(s1, s2);72  ASSERT_LT(result, 0);73 74  // Verify operands reversed.75  result = LIBC_NAMESPACE::wcscmp(s2, s1);76  ASSERT_GT(result, 0);77}78 79TEST(LlvmLibcWcscmpTest, StringArgumentSwapChangesSign) {80  const wchar_t *a = L"a";81  const wchar_t *b = L"b";82  int result = LIBC_NAMESPACE::wcscmp(b, a);83  ASSERT_GT(result, 0);84 85  result = LIBC_NAMESPACE::wcscmp(a, b);86  ASSERT_LT(result, 0);87}88 89#if defined(LIBC_ADD_NULL_CHECKS)90TEST(LlvmLibcWcscmpTest, NullptrCrash) {91  // Passing in a nullptr should crash the program.92  EXPECT_DEATH([] { LIBC_NAMESPACE::wcscmp(L"aaaaaaaaaaaaaa", nullptr); },93               WITH_SIGNAL(-1));94  EXPECT_DEATH([] { LIBC_NAMESPACE::wcscmp(nullptr, L"aaaaaaaaaaaaaa"); },95               WITH_SIGNAL(-1));96}97#endif // LIBC_ADD_NULL_CHECKS98