#include "src/string/strncat.h"
#include "test/UnitTest/Test.h"
TEST(LlvmLibcStrNCatTest, EmptyDest) {
const char *abc = "abc";
char dest[4];
dest[0] = '\0';
char *result = LIBC_NAMESPACE::strncat(dest, abc, 0);
ASSERT_EQ(dest, result);
ASSERT_EQ(dest[0], '\0');
result = LIBC_NAMESPACE::strncat(dest, abc, 1);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "a");
dest[0] = '\0';
result = LIBC_NAMESPACE::strncat(dest, abc, 3);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, result);
ASSERT_STREQ(dest, abc);
}
TEST(LlvmLibcStrNCatTest, NonEmptyDest) {
const char *abc = "abc";
char dest[7];
dest[0] = 'x';
dest[1] = 'y';
dest[2] = 'z';
dest[3] = '\0';
char *result = LIBC_NAMESPACE::strncat(dest, abc, 1);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "xyza");
result = LIBC_NAMESPACE::strncat(dest, abc, 2);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "xyzaab");
dest[3] = '\0';
result = LIBC_NAMESPACE::strncat(dest, abc, 3);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "xyzabc");
dest[0] = '\0';
dest[4] = 'Z';
result = LIBC_NAMESPACE::strncat(dest, abc, 4);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "abc");
ASSERT_EQ(dest[4], 'Z');
result = LIBC_NAMESPACE::strncat(dest, abc, 5);
ASSERT_EQ(dest, result);
ASSERT_STREQ(dest, "abcabc");
}