GCC Code Coverage Report


Directory: ./
File: s21_trim.c
Date: 2025-11-01 23:04:41
Exec Total Coverage
Lines: 24 24 100.0%
Branches: 26 26 100.0%

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