1*b1183305SAlex Brachet //===-- Unittests for strlcat ---------------------------------------------===//
2*b1183305SAlex Brachet //
3*b1183305SAlex Brachet // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*b1183305SAlex Brachet // See https://llvm.org/LICENSE.txt for license information.
5*b1183305SAlex Brachet // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*b1183305SAlex Brachet //
7*b1183305SAlex Brachet //===----------------------------------------------------------------------===//
8*b1183305SAlex Brachet
9*b1183305SAlex Brachet #include "src/string/strlcat.h"
10*b1183305SAlex Brachet #include "utils/UnitTest/Test.h"
11*b1183305SAlex Brachet #include <stdlib.h>
12*b1183305SAlex Brachet
TEST(LlvmLibcStrlcatTest,TooBig)13*b1183305SAlex Brachet TEST(LlvmLibcStrlcatTest, TooBig) {
14*b1183305SAlex Brachet const char *str = "cd";
15*b1183305SAlex Brachet char buf[4]{"ab"};
16*b1183305SAlex Brachet EXPECT_EQ(__llvm_libc::strlcat(buf, str, 3), size_t(4));
17*b1183305SAlex Brachet EXPECT_STREQ(buf, "ab");
18*b1183305SAlex Brachet EXPECT_EQ(__llvm_libc::strlcat(buf, str, 4), size_t(4));
19*b1183305SAlex Brachet EXPECT_STREQ(buf, "abc");
20*b1183305SAlex Brachet }
21*b1183305SAlex Brachet
TEST(LlvmLibcStrlcatTest,Smaller)22*b1183305SAlex Brachet TEST(LlvmLibcStrlcatTest, Smaller) {
23*b1183305SAlex Brachet const char *str = "cd";
24*b1183305SAlex Brachet char buf[7]{"ab"};
25*b1183305SAlex Brachet
26*b1183305SAlex Brachet EXPECT_EQ(__llvm_libc::strlcat(buf, str, 7), size_t(4));
27*b1183305SAlex Brachet EXPECT_STREQ(buf, "abcd");
28*b1183305SAlex Brachet }
29*b1183305SAlex Brachet
TEST(LlvmLibcStrlcatTest,No0)30*b1183305SAlex Brachet TEST(LlvmLibcStrlcatTest, No0) {
31*b1183305SAlex Brachet const char *str = "cd";
32*b1183305SAlex Brachet char buf[7]{"ab"};
33*b1183305SAlex Brachet EXPECT_EQ(__llvm_libc::strlcat(buf, str, 1), size_t(3));
34*b1183305SAlex Brachet EXPECT_STREQ(buf, "ab");
35*b1183305SAlex Brachet EXPECT_EQ(__llvm_libc::strlcat(buf, str, 2), size_t(4));
36*b1183305SAlex Brachet EXPECT_STREQ(buf, "ab");
37*b1183305SAlex Brachet }
38