1*431ea2d0SNick Desaulniers //===-- Unittests for strncasecmp -----------------------------------------===// 2*431ea2d0SNick Desaulniers // 3*431ea2d0SNick Desaulniers // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*431ea2d0SNick Desaulniers // See https://llvm.org/LICENSE.txt for license information. 5*431ea2d0SNick Desaulniers // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*431ea2d0SNick Desaulniers // 7*431ea2d0SNick Desaulniers //===----------------------------------------------------------------------===// 8*431ea2d0SNick Desaulniers 9*431ea2d0SNick Desaulniers #include "src/strings/strncasecmp.h" 10*431ea2d0SNick Desaulniers #include "test/UnitTest/Test.h" 11*431ea2d0SNick Desaulniers 12*431ea2d0SNick Desaulniers TEST(LlvmLibcStrNCaseCmpTest, 13*431ea2d0SNick Desaulniers EmptyStringsShouldReturnZeroWithSufficientLength) { 14*431ea2d0SNick Desaulniers const char *s1 = ""; 15*431ea2d0SNick Desaulniers const char *s2 = ""; 16*431ea2d0SNick Desaulniers int result = LIBC_NAMESPACE::strncasecmp(s1, s2, 1); 17*431ea2d0SNick Desaulniers ASSERT_EQ(result, 0); 18*431ea2d0SNick Desaulniers 19*431ea2d0SNick Desaulniers // Verify operands reversed. 20*431ea2d0SNick Desaulniers result = LIBC_NAMESPACE::strncasecmp(s2, s1, 1); 21*431ea2d0SNick Desaulniers ASSERT_EQ(result, 0); 22*431ea2d0SNick Desaulniers } 23*431ea2d0SNick Desaulniers 24*431ea2d0SNick Desaulniers TEST(LlvmLibcStrNCaseCmpTest, 25*431ea2d0SNick Desaulniers EmptyStringShouldNotEqualNonEmptyStringWithSufficientLength) { 26*431ea2d0SNick Desaulniers const char *empty = ""; 27*431ea2d0SNick Desaulniers const char *s2 = "abc"; 28*431ea2d0SNick Desaulniers int result = LIBC_NAMESPACE::strncasecmp(empty, s2, 3); 29*431ea2d0SNick Desaulniers // This should be '\0' - 'a' = -97 30*431ea2d0SNick Desaulniers ASSERT_LT(result, 0); 31*431ea2d0SNick Desaulniers 32*431ea2d0SNick Desaulniers // Similar case if empty string is second argument. 33*431ea2d0SNick Desaulniers const char *s3 = "123"; 34*431ea2d0SNick Desaulniers result = LIBC_NAMESPACE::strncasecmp(s3, empty, 3); 35*431ea2d0SNick Desaulniers // This should be '1' - '\0' = 49 36*431ea2d0SNick Desaulniers ASSERT_GT(result, 0); 37*431ea2d0SNick Desaulniers } 38*431ea2d0SNick Desaulniers 39*431ea2d0SNick Desaulniers TEST(LlvmLibcStrNCaseCmpTest, Case) { 40*431ea2d0SNick Desaulniers const char *s1 = "aB"; 41*431ea2d0SNick Desaulniers const char *s2 = "ab"; 42*431ea2d0SNick Desaulniers int result = LIBC_NAMESPACE::strncasecmp(s1, s2, 2); 43*431ea2d0SNick Desaulniers ASSERT_EQ(result, 0); 44*431ea2d0SNick Desaulniers 45*431ea2d0SNick Desaulniers // Verify operands reversed. 46*431ea2d0SNick Desaulniers result = LIBC_NAMESPACE::strncasecmp(s2, s1, 2); 47*431ea2d0SNick Desaulniers ASSERT_EQ(result, 0); 48*431ea2d0SNick Desaulniers } 49