@@ -22,35 +22,58 @@ TEST(LlvmLibcWCPNCpyTest, EmptySrc) {
2222 ASSERT_TRUE (dest[2 ] == L' \0 ' );
2323}
2424
25- // TEST(LlvmLibcWCPCpyTest, EmptyDest) {
26- // // Empty dest should result in src
27- // const wchar_t *src = L"abc";
28- // wchar_t dest[4];
29- // wchar_t *result = LIBC_NAMESPACE::wcpcpy(dest, src);
30- // ASSERT_EQ(dest + 3, result);
31- // ASSERT_TRUE(result[0] == L'\0');
32- // ASSERT_TRUE(dest[0] == L'a');
33- // ASSERT_TRUE(dest[1] == L'b');
34- // ASSERT_TRUE(dest[2] == L'c');
35- // }
36-
37- // TEST(LlvmLibcWCPCpyTest, OffsetDest) {
38- // // Offsetting should result in a concatenation.
39- // const wchar_t *src = L"abc";
40- // wchar_t dest[7];
41- // dest[0] = L'x';
42- // dest[1] = L'y';
43- // dest[2] = L'z';
44- // wchar_t *result = LIBC_NAMESPACE::wcpcpy(dest + 3, src);
45- // ASSERT_TRUE(dest[0] == L'x');
46- // ASSERT_TRUE(dest[1] == L'y');
47- // ASSERT_TRUE(dest[2] == L'z');
48- // ASSERT_TRUE(dest[3] == src[0]);
49- // ASSERT_TRUE(dest[4] == src[1]);
50- // ASSERT_TRUE(dest[5] == src[2]);
51- // ASSERT_TRUE(result[0] == L'\0');
52- // ASSERT_EQ(dest + 6, result);
53- // }
25+ TEST (LlvmLibcWCPNCpyTest, Untouched) {
26+ wchar_t dest[] = {L' a' , L' b' };
27+ const wchar_t src[] = {L' x' , L' \0 ' };
28+ LIBC_NAMESPACE::wcpncpy (dest, src, 0 );
29+ ASSERT_TRUE (dest[0 ] == L' a' );
30+ ASSERT_TRUE (dest[1 ] == L' b' );
31+ }
32+
33+ TEST (LlvmLibcWCPNCpyTest, CopyOne) {
34+ wchar_t dest[] = {L' a' , L' b' };
35+ const wchar_t src[] = {L' x' , L' y' };
36+ wchar_t * res = LIBC_NAMESPACE::wcpncpy (dest, src, 1 );
37+ ASSERT_TRUE (dest[0 ] == L' x' );
38+ ASSERT_TRUE (dest[1 ] == L' b' );
39+ ASSERT_EQ (dest + 1 , res);
40+ }
41+
42+ TEST (LlvmLibcWCPNCpyTest, CopyNull) {
43+ wchar_t dest[] = {L' a' , L' b' };
44+ const wchar_t src[] = {L' \0 ' , L' y' };
45+ wchar_t * res = LIBC_NAMESPACE::wcpncpy (dest, src, 1 );
46+ ASSERT_TRUE (dest[0 ] == L' \0 ' );
47+ ASSERT_TRUE (dest[1 ] == L' b' );
48+ ASSERT_EQ (dest + 1 , res);
49+ }
50+
51+ TEST (LlvmLibcWCPNCpyTest, CopyPastSrc) {
52+ wchar_t dest[] = {L' a' , L' b' };
53+ const wchar_t src[] = {L' \0 ' , L' y' };
54+ wchar_t * res = LIBC_NAMESPACE::wcpncpy (dest, src, 2 );
55+ ASSERT_TRUE (dest[0 ] == L' \0 ' );
56+ ASSERT_TRUE (dest[1 ] == L' \0 ' );
57+ ASSERT_EQ (dest + 2 , res);
58+ }
59+
60+ TEST (LlvmLibcWCPNCpyTest, CopyTwoNoNull) {
61+ wchar_t dest[] = {L' a' , L' b' };
62+ const wchar_t src[] = {L' x' , L' y' };
63+ wchar_t * res = LIBC_NAMESPACE::wcpncpy (dest, src, 2 );
64+ ASSERT_TRUE (dest[0 ] == L' x' );
65+ ASSERT_TRUE (dest[1 ] == L' y' );
66+ ASSERT_EQ (dest + 2 , res);
67+ }
68+
69+ TEST (LlvmLibcWCPNCpyTest, CopyTwoWithNull) {
70+ wchar_t dest[] = {L' a' , L' b' };
71+ const wchar_t src[] = {L' x' , L' \0 ' };
72+ wchar_t * res = LIBC_NAMESPACE::wcpncpy (dest, src, 2 );
73+ ASSERT_TRUE (dest[0 ] == L' x' );
74+ ASSERT_TRUE (dest[1 ] == L' \0 ' );
75+ ASSERT_EQ (dest + 2 , res);
76+ }
5477
5578#if defined(LIBC_ADD_NULL_CHECKS) && !defined(LIBC_HAS_SANITIZER)
5679TEST (LlvmLibcWCPNCpyTest, NullptrCrash) {
0 commit comments