1*396ed9c2SDuncan //===-- Unittests for lfind -----------------------------------------------===// 2*396ed9c2SDuncan // 3*396ed9c2SDuncan // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*396ed9c2SDuncan // See https://llvm.org/LICENSE.txt for license information. 5*396ed9c2SDuncan // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*396ed9c2SDuncan // 7*396ed9c2SDuncan //===----------------------------------------------------------------------===// 8*396ed9c2SDuncan 9*396ed9c2SDuncan #include "src/search/lfind.h" 10*396ed9c2SDuncan #include "test/UnitTest/Test.h" 11*396ed9c2SDuncan 12*396ed9c2SDuncan int compar(const void *a, const void *b) { 13*396ed9c2SDuncan return *reinterpret_cast<const int *>(a) != *reinterpret_cast<const int *>(b); 14*396ed9c2SDuncan } 15*396ed9c2SDuncan 16*396ed9c2SDuncan TEST(LlvmLibcLfindTest, SearchHead) { 17*396ed9c2SDuncan int list[3] = {1, 2, 3}; 18*396ed9c2SDuncan size_t len = 3; 19*396ed9c2SDuncan int key = 1; 20*396ed9c2SDuncan void *ret = LIBC_NAMESPACE::lfind(&key, list, &len, sizeof(int), compar); 21*396ed9c2SDuncan ASSERT_TRUE(ret == &list[0]); 22*396ed9c2SDuncan } 23*396ed9c2SDuncan 24*396ed9c2SDuncan TEST(LlvmLibcLfindTest, SearchMiddle) { 25*396ed9c2SDuncan int list[3] = {1, 2, 3}; 26*396ed9c2SDuncan size_t len = 3; 27*396ed9c2SDuncan int key = 2; 28*396ed9c2SDuncan void *ret = LIBC_NAMESPACE::lfind(&key, list, &len, sizeof(int), compar); 29*396ed9c2SDuncan ASSERT_TRUE(ret == &list[1]); 30*396ed9c2SDuncan } 31*396ed9c2SDuncan 32*396ed9c2SDuncan TEST(LlvmLibcLfindTest, SearchTail) { 33*396ed9c2SDuncan int list[3] = {1, 2, 3}; 34*396ed9c2SDuncan size_t len = 3; 35*396ed9c2SDuncan int key = 3; 36*396ed9c2SDuncan void *ret = LIBC_NAMESPACE::lfind(&key, list, &len, sizeof(int), compar); 37*396ed9c2SDuncan ASSERT_TRUE(ret == &list[2]); 38*396ed9c2SDuncan } 39*396ed9c2SDuncan 40*396ed9c2SDuncan TEST(LlvmLibcLfindTest, SearchNonExistent) { 41*396ed9c2SDuncan int list[3] = {1, 2, 3}; 42*396ed9c2SDuncan size_t len = 3; 43*396ed9c2SDuncan int key = 5; 44*396ed9c2SDuncan void *ret = LIBC_NAMESPACE::lfind(&key, list, &len, sizeof(int), compar); 45*396ed9c2SDuncan ASSERT_TRUE(ret == nullptr); 46*396ed9c2SDuncan } 47