| 
 | 1 | +//===-- Unittests for wmempcpy --------------------------------------------===//  | 
 | 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-exception  | 
 | 6 | +//  | 
 | 7 | +//===----------------------------------------------------------------------===//  | 
 | 8 | + | 
 | 9 | +#include "src/wchar/wmempcpy.h"  | 
 | 10 | +#include "test/UnitTest/Test.h"  | 
 | 11 | + | 
 | 12 | +TEST(LlvmLibcWMempcpyTest, Simple) {  | 
 | 13 | +  const wchar_t *src = L"12345";  | 
 | 14 | +  wchar_t dest[10] = {};  | 
 | 15 | +  void *result = LIBC_NAMESPACE::wmempcpy(dest, src, 6);  | 
 | 16 | +  ASSERT_EQ(static_cast<wchar_t *>(result), dest + 6);  | 
 | 17 | + | 
 | 18 | +  ASSERT_TRUE(dest[0] == src[0]);  | 
 | 19 | +  ASSERT_TRUE(dest[1] == src[1]);  | 
 | 20 | +  ASSERT_TRUE(dest[2] == src[2]);  | 
 | 21 | +  ASSERT_TRUE(dest[3] == src[3]);  | 
 | 22 | +  ASSERT_TRUE(dest[4] == src[4]);  | 
 | 23 | +  ASSERT_TRUE(dest[5] == src[5]);  | 
 | 24 | +}  | 
 | 25 | + | 
 | 26 | +TEST(LlvmLibcWmempcpyTest, ZeroCount) {  | 
 | 27 | +  const wchar_t *src = L"12345";  | 
 | 28 | +  wchar_t dest[5] = {};  | 
 | 29 | +  void *result = LIBC_NAMESPACE::wmempcpy(dest, src, 0);  | 
 | 30 | +  ASSERT_EQ(static_cast<wchar_t *>(result), dest);  | 
 | 31 | + | 
 | 32 | +  ASSERT_TRUE(dest[0] == 0);  | 
 | 33 | +  ASSERT_TRUE(dest[1] == 0);  | 
 | 34 | +  ASSERT_TRUE(dest[2] == 0);  | 
 | 35 | +  ASSERT_TRUE(dest[3] == 0);  | 
 | 36 | +  ASSERT_TRUE(dest[4] == 0);  | 
 | 37 | +}  | 
 | 38 | + | 
 | 39 | +TEST(LlvmLibcWMempcpyTest, BoundaryCheck) {  | 
 | 40 | +  const wchar_t *src = L"12345";  | 
 | 41 | +  wchar_t dest[4] = {};  | 
 | 42 | +  void *result = LIBC_NAMESPACE::wmempcpy(dest + 1, src + 1, 2);  | 
 | 43 | + | 
 | 44 | +  ASSERT_TRUE(dest[0] == 0);  | 
 | 45 | +  ASSERT_TRUE(dest[1] == src[1]);  | 
 | 46 | +  ASSERT_TRUE(dest[2] == src[2]);  | 
 | 47 | +  ASSERT_TRUE(dest[3] == 0);  | 
 | 48 | + | 
 | 49 | +  ASSERT_EQ(static_cast<wchar_t *>(result), dest + 3);  | 
 | 50 | +}  | 
0 commit comments