42sh/tests/unit/utils/insert_into.c

86 lines
1.8 KiB
C
Raw Normal View History

2026-01-17 23:59:09 +00:00
#define _POSIX_C_SOURCE 200809L
#include <criterion/criterion.h>
#include <criterion/new/assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../../../src/utils/string_utils/string_utils.h"
TestSuite(insert_into);
Test(insert_into, basic)
{
char *dest = strdup("The <WORD> is nice.");
const char *src = "weather";
size_t pos = 4;
char *result = insert_into(dest, src, pos, 6);
cr_expect(result != NULL);
cr_expect(eq(str, result, "The weather is nice."));
if (result)
free(result);
}
Test(insert_into, begin)
{
char *dest = strdup("Hello World!");
const char *src = "Hi";
size_t pos = 0;
char *result = insert_into(dest, src, pos, 5);
cr_expect(result != NULL);
cr_expect(eq(str, result, "Hi World!"));
if (result)
free(result);
}
Test(insert_into, end)
{
char *dest = strdup("The number is 1024");
const char *src = "2048";
size_t pos = 14;
char *result = insert_into(dest, src, pos, 4);
cr_expect(result != NULL);
cr_expect(eq(str, result, "The number is 2048"));
if (result)
free(result);
}
Test(insert_into, big)
{
char *dest = strdup("I could insert [VAR] here.");
const char *src = "a very very long string";
size_t pos = 15;
char *result = insert_into(dest, src, pos, 5);
cr_expect(result != NULL);
cr_expect(eq(str, result, "I could insert a very very long string here."));
if (result)
free(result);
}
Test(insert_into, small)
{
char *dest = strdup("I could insert [VARNAME_IS_SO_LONG] string here.");
const char *src = "a short";
size_t pos = 15;
char *result = insert_into(dest, src, pos, 20);
cr_expect(result != NULL);
cr_expect(eq(str, result, "I could insert a short string here."));
if (result)
free(result);
}