1*db8a88feSMichael Jones //===-- Unittests for mempcpy ---------------------------------------------===//
2*db8a88feSMichael Jones //
3*db8a88feSMichael Jones // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*db8a88feSMichael Jones // See https://llvm.org/LICENSE.txt for license information.
5*db8a88feSMichael Jones // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*db8a88feSMichael Jones //
7*db8a88feSMichael Jones //===----------------------------------------------------------------------===//
8*db8a88feSMichael Jones
9*db8a88feSMichael Jones #include "src/string/mempcpy.h"
10*db8a88feSMichael Jones #include "utils/UnitTest/Test.h"
11*db8a88feSMichael Jones
12*db8a88feSMichael Jones // Since this function just calls out to memcpy, and memcpy has its own unit
13*db8a88feSMichael Jones // tests, it is assumed that memcpy works. These tests are just for the specific
14*db8a88feSMichael Jones // mempcpy behavior (returning the end of what was copied).
TEST(LlvmLibcMempcpyTest,Simple)15*db8a88feSMichael Jones TEST(LlvmLibcMempcpyTest, Simple) {
16*db8a88feSMichael Jones const char *src = "12345";
17*db8a88feSMichael Jones char dest[10];
18*db8a88feSMichael Jones void *result = __llvm_libc::mempcpy(dest, src, 6);
19*db8a88feSMichael Jones ASSERT_EQ(static_cast<char *>(result), dest + 6);
20*db8a88feSMichael Jones ASSERT_STREQ(src, dest);
21*db8a88feSMichael Jones }
22*db8a88feSMichael Jones
TEST(LlvmLibcMempcpyTest,ZeroCount)23*db8a88feSMichael Jones TEST(LlvmLibcMempcpyTest, ZeroCount) {
24*db8a88feSMichael Jones const char *src = "12345";
25*db8a88feSMichael Jones char dest[10];
26*db8a88feSMichael Jones void *result = __llvm_libc::mempcpy(dest, src, 0);
27*db8a88feSMichael Jones ASSERT_EQ(static_cast<char *>(result), dest);
28*db8a88feSMichael Jones }
29