5#include <gtest/gtest.h>
8#define memcpy sk_memcpy
9#define memmove sk_memmove
10#define memset sk_memset
11#define memcmp sk_memcmp
12#define memchr sk_memchr
14#define strncpy sk_strncpy
15#define strcat sk_strcat
16#define strcmp sk_strcmp
17#define strncmp sk_strncmp
18#define strlen sk_strlen
19#define strnlen sk_strnlen
20#define strchr sk_strchr
21#define strrchr sk_strrchr
32#include "../../src/libc/sk_string.c"
34TEST(SkStringTest, Memcpy) {
38 EXPECT_STREQ(dest,
"hello");
41TEST(SkStringTest, Memmove) {
42 char str[] =
"memory move test";
46 EXPECT_STREQ(str,
"memory memoryest");
48 char str2[] =
"memory move test";
58TEST(SkStringTest, Memset) {
61 for (
int i = 0; i < 5; ++i) {
66TEST(SkStringTest, Memcmp) {
77TEST(SkStringTest, Memchr) {
78 char s[] =
"hello world";
79 const void* res =
memchr(s,
'w', 11);
80 EXPECT_EQ(
static_cast<const char*
>(res), &s[6]);
86TEST(SkStringTest, Strcpy) {
90 EXPECT_STREQ(dest,
"test");
93TEST(SkStringTest, Strncpy) {
94 char src[] =
"test string";
98 sk_strncpy(dest, src, 4);
107 sk_strncpy(dest,
"abc", 5);
108 EXPECT_STREQ(dest,
"abc");
110 sk_strncpy(dest,
"abcdef", 3);
119 char dest[20] =
"hello";
120 sk_strcat(dest,
" world");
121 EXPECT_STREQ(dest,
"hello world");
132 EXPECT_EQ(sk_strncmp(
"abc",
"abd", 2), 0);
133 EXPECT_LT(sk_strncmp(
"abc",
"abd", 3), 0);
148 EXPECT_STREQ(
strchr(s,
'e'),
"ello");
150 EXPECT_STREQ(
strchr(s,
'l'),
"llo");
155 EXPECT_STREQ(
strrchr(s,
'l'),
"lo");
160TEST(SkStringTest, MemcpyEdgeCases) {
172TEST(SkStringTest, MemsetEdgeCases) {
180 for (
int i = 0; i < 5; ++i) {
186 for (
int i = 0; i < 3; ++i) {
187 EXPECT_EQ(
static_cast<unsigned char>(buffer[i]), 255);
191TEST(SkStringTest, StrcmpEdgeCases) {
202TEST(SkStringTest, StrlenEdgeCases) {
207 const char null_str[] = {
'\0',
'a',
'b',
'\0'};
211TEST(SkStringTest, StrnlenEdgeCases) {
222TEST(SkStringTest, StrchrEdgeCases) {
232TEST(SkStringTest, StrrchrEdgeCases) {
242TEST(SkStringTest, MemmoveOverlapForward) {
244 char str[] =
"1234567890";
253TEST(SkStringTest, MemmoveOverlapBackward) {
255 char str[] =
"1234567890";
264TEST(SkStringTest, MemmoveNoOverlap) {
266 char src[] =
"source";
269 EXPECT_STREQ(dest,
"source");
272TEST(SkStringTest, MemchrNotFound) {
273 char s[] =
"hello world";
278TEST(SkStringTest, MemcmpEqual) {
284TEST(SkStringTest, MemcmpDifferentLengths) {
291TEST(SkStringTest, StrcatMultiple) {
292 char dest[30] =
"hello";
293 sk_strcat(dest,
" ");
294 sk_strcat(dest,
"world");
295 sk_strcat(dest,
"!");
296 EXPECT_STREQ(dest,
"hello world!");
299TEST(SkStringTest, StrncpyPadding) {
304 sk_strncpy(dest,
"ab", 5);
TEST(SkStringTest, Memcpy)
#define EXPECT_LT(val1, val2, msg)
#define EXPECT_GT(val1, val2, msg)
#define EXPECT_EQ(val1, val2, msg)