#include "s21_string.h"
void s21_strlen_test(void) {
const char *tests[] = {"Hello", "", "School 21"};
const size_t expected[] = {5, 0, 9};
const size_t count = sizeof(tests) / sizeof(tests[0]);
for (size_t i = 0; i < count; i++) {
size_t result = s21_strlen(tests[i]);
printf("Input: \"%s\", Output: %zu, Expected: %zu — %s\n", tests[i], result, expected[i],
result == expected[i] ? "SUCCESS" : "FAIL");
}
}
void s21_strcmp_test(void) {
const char *str1[] = {"abc", "abc", "abc", "", "a"};
const char *str2[] = {"abc", "abd", "abb", "", ""};
const int expected[] = {0, -1, 1, 0, 97};
const size_t count = sizeof(str1) / sizeof(str1[0]);
for (size_t i = 0; i < count; i++) {
int result = s21_strcmp(str1[i], str2[i]);
int success = (result == 0 && expected[i] == 0) || (result < 0 && expected[i] < 0) ||
(result > 0 && expected[i] > 0);
printf("Input: \"%s\", \"%s\", Output: %d, Expected sign: %d — %s\n", str1[i], str2[i], result,
expected[i], success ? "SUCCESS" : "FAIL");
}
}
void s21_strcat_test(void) {
char dest1[50] = "Hello, ";
char dest2[50] = "";
char dest3[50] = "School";
const char *src1 = "world!";
const char *src2 = "abc";
const char *src3 = "";
s21_strcat(dest1, src1);
s21_strcat(dest2, src2);
s21_strcat(dest3, src3);
printf("Test 1: %s — %s\n", dest1,
s21_strcmp(dest1, "Hello, world!") == 0 ? "SUCCESS" : "FAIL");
printf("Test 2: %s — %s\n", dest2,
s21_strcmp(dest2, "abc") == 0 ? "SUCCESS" : "FAIL");
printf("Test 3: %s — %s\n", dest3,
s21_strcmp(dest3, "School") == 0 ? "SUCCESS" : "FAIL");
}
int main(void) {
#ifdef TEST_STRLEN_ONLY
s21_strlen_test();
#elif defined(TEST_STRCMP_ONLY)
s21_strcmp_test();
#elif defined(TEST_STRCAT_ONLY)
s21_strcat_test();
#else
s21_strlen_test();
s21_strcmp_test();
#endif
return 0;
}