GCC Code Coverage Report


Directory: ./
File: s21_trim.c
Date: 2025-07-13 17:59:14
Exec Total Coverage
Lines: 24 24 100.0%
Branches: 24 24 100.0%

Line Branch Exec Source
1 #include "s21_string.h"
2
3 int isTrimChar(char toCheck, const char *trim_chars);
4
5 6 void *s21_trim(const char *src, const char *trim_chars) {
6
4/4
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
6 if (src == S21_NULL || trim_chars == S21_NULL) {
7 2 return S21_NULL;
8 }
9
10 4 s21_size_t n = s21_strlen(src);
11 4 s21_size_t left = 0, right = n - 1;
12
13
14
4/4
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 13 times.
✓ Branch 4 taken 2 times.
17 while (left < n && isTrimChar(src[left], trim_chars)) {
15 13 left++;
16 }
17
18
19
4/4
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 3 times.
6 while (right >= left && isTrimChar(src[right], trim_chars)) {
20 2 right--;
21 }
22
23 4 char *result = S21_NULL;
24
4/4
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
4 if (n != 0 && left <= right) {
25 2 result = malloc((right - left + 2) * sizeof(char));
26
2/2
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 2 times.
13 for (s21_size_t i = left; i <= right; i++) {
27 11 result[i - left] = src[i];
28 }
29 2 result[right - left + 1] = '\0';
30 } else {
31 2 result = malloc(sizeof(char));
32 2 result[0] = '\0';
33 }
34
35 4 return result;
36 }
37
38 20 int isTrimChar(char toCheck, const char *trim_chars) {
39 20 int check = 0;
40
41
4/4
✓ Branch 0 taken 45 times.
✓ Branch 1 taken 16 times.
✓ Branch 2 taken 41 times.
✓ Branch 3 taken 4 times.
61 for (const char *p = trim_chars; *p != '\0' && check == 0; p++) {
42
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 26 times.
41 if (toCheck == *p) {
43 15 check = 1;
44 }
45 }
46
47 20 return check;
48 }
49