Skip to content

Commit bad4bc6

Browse files
author
Gonzalo Diaz
committed
[REFACTOR] [Hacker Rank] Warmup: Time Conversion solved ✅. Trying to solve sonarcloud warnings.
1 parent ff3d4d2 commit bad4bc6

File tree

3 files changed

+12
-30
lines changed

3 files changed

+12
-30
lines changed

src/lib/exercises/include/exercises/hackerrank/warmup/time_conversion.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern "C" {
66

77
char *HACKERRANK_WARMUP_getStringFragment(const char *s, unsigned long len,
88
unsigned long from, unsigned long to);
9-
char *HACKERRANK_WARMUP_getFirst(const char *s, unsigned long n);
10-
char *HACKERRANK_WARMUP_getLast(const char *s, unsigned long n);
119

1210
char *HACKERRANK_WARMUP_timeConversion(const char *s);
1311

src/lib/exercises/src/hackerrank/warmup/time_conversion.c

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,6 @@
1010

1111
#define HACKERRANK_WARMUP_MAX_STRING_SIZE 10
1212

13-
char *HACKERRANK_WARMUP_getFirst(const char *s, unsigned long n) {
14-
char dest[HACKERRANK_WARMUP_MAX_STRING_SIZE + 1];
15-
dest[sizeof dest - 1] = 0;
16-
strncpy(dest, s, sizeof dest);
17-
if (dest[sizeof dest - 1] != 0) {
18-
return NULL; // Handle error
19-
}
20-
size_t s_len = strlen(s);
21-
22-
return HACKERRANK_WARMUP_getStringFragment(s, s_len, 0, n);
23-
}
24-
25-
char *HACKERRANK_WARMUP_getLast(const char *s, unsigned long n) {
26-
unsigned long len = strlen(s);
27-
return HACKERRANK_WARMUP_getStringFragment(s, len, len - n, n);
28-
}
29-
3013
char *HACKERRANK_WARMUP_getStringFragment(const char *s, unsigned long len,
3114
unsigned long from,
3215
unsigned long to) {
@@ -54,10 +37,10 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
5437
return NULL;
5538
}
5639

57-
char *meridian = HACKERRANK_WARMUP_getLast(s, 2);
58-
char *hour_str = HACKERRANK_WARMUP_getFirst(s, 2);
59-
6040
size_t s_len = strlen(s);
41+
char *meridian = HACKERRANK_WARMUP_getStringFragment(s, s_len, s_len - 2, 2);
42+
char *hour_str = HACKERRANK_WARMUP_getStringFragment(s, s_len, 0, 2);
43+
6144
char *time_str = malloc(s_len + 1);
6245
if (time_str == NULL) {
6346
free(meridian);
@@ -68,11 +51,13 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
6851
strncpy(time_str, s, s_len + 1);
6952
char *temp_time_str;
7053
unsigned long time_str_len = strlen(time_str);
71-
temp_time_str = HACKERRANK_WARMUP_getLast(time_str, time_str_len - 2);
54+
temp_time_str = HACKERRANK_WARMUP_getStringFragment(time_str, time_str_len, 2,
55+
time_str_len);
7256
strncpy(time_str, temp_time_str, time_str_len - 2);
7357
time_str[time_str_len - 2] = '\0';
7458
free(temp_time_str);
75-
temp_time_str = HACKERRANK_WARMUP_getFirst(time_str, time_str_len - 2);
59+
temp_time_str = HACKERRANK_WARMUP_getStringFragment(time_str, time_str_len, 0,
60+
time_str_len - 2);
7661
strncpy(time_str, temp_time_str, time_str_len - 2);
7762
time_str[time_str_len - 2] = '\0';
7863
free(temp_time_str);

src/tests/unit/lib/hackerrank/warmup/time_conversion.test.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,14 @@ TEST_CASE("time_conversion JSON Test Cases",
3434

3535
TEST_CASE("time_conversion helper functions edge cases",
3636
"[hackerrank] [helper] [warmup]") {
37-
// CHECK(HACKERRANK_WARMUP_getFirst(nullptr, 0) == nullptr);
37+
CHECK(HACKERRANK_WARMUP_getStringFragment("", 0, 0, 10) == nullptr);
3838

39-
CHECK(HACKERRANK_WARMUP_getFirst("", 10) == nullptr);
40-
CHECK(HACKERRANK_WARMUP_getLast("", 10) == nullptr);
41-
42-
CHECK(HACKERRANK_WARMUP_getFirst("", 0) == nullptr);
43-
CHECK(HACKERRANK_WARMUP_getLast("", 0) == nullptr);
39+
CHECK(HACKERRANK_WARMUP_getStringFragment("", 0, 0, 0) == nullptr);
40+
CHECK(HACKERRANK_WARMUP_getStringFragment(nullptr, 0, 0, 0) == nullptr);
4441
}
4542

4643
TEST_CASE("time_conversion edge cases", "[hackerrank] [helper] [warmup]") {
44+
CHECK(HACKERRANK_WARMUP_timeConversion(nullptr) == nullptr);
45+
4746
CHECK(HACKERRANK_WARMUP_timeConversion("aa:bb:ccXM") == nullptr);
4847
}

0 commit comments

Comments
 (0)