all unit tests successful, might have fixed bug
This commit is contained in:
parent
2e60c19b0a
commit
8e4c37fe88
@ -5,6 +5,7 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
|
||||
// buffer needs to contain a string with a strlen of 15 (format: "xxxxxxxxTxxxxxx")
|
||||
// or a strlen of 16 (format: "YYYYmmddTHHMMSSZ")
|
||||
@ -15,13 +16,62 @@ void get_date(char buffer[]) {
|
||||
struct tm* my_tm_local = localtime (&my_unix_ts);
|
||||
if (strlen (buffer) == 15) {
|
||||
strftime (buffer, buffer_size, "%Y%m%dT%H%M%S", my_tm_local);
|
||||
} else if (strlen(buffer) == 16) {
|
||||
}
|
||||
else if (strlen (buffer) == 16) {
|
||||
strftime (buffer, buffer_size, "%Y%m%dT%H%M%SZ", my_tm_local);
|
||||
}
|
||||
}
|
||||
|
||||
// 20230823T194138 -> 2023-08-23 19:41:38
|
||||
// 20230823T194138Z -> 2023-08-23 19:41:38
|
||||
// 20241209 -> 2024-12-09
|
||||
// caller has to free() the returned char array
|
||||
char* pretty_date_time (char date_time[]) {
|
||||
int pdt_len = 20;
|
||||
if (!strchr (date_time, 'T')) {
|
||||
pdt_len = 11;
|
||||
}
|
||||
|
||||
char* pretty_dt = malloc (pdt_len);
|
||||
memset(pretty_dt, '\0', pdt_len);
|
||||
int dt_counter = 0;
|
||||
|
||||
if (!strcmp(date_time, "")) {
|
||||
return pretty_dt;
|
||||
}
|
||||
|
||||
for (int i = 0; i < (pdt_len-1); i++) {
|
||||
if (i == 4 || i == 7) {
|
||||
pretty_dt[i] = '-';
|
||||
continue;
|
||||
}
|
||||
if (i == 13 || i == 16) {
|
||||
pretty_dt[i] = ':';
|
||||
continue;
|
||||
}
|
||||
|
||||
if (date_time[dt_counter] == 'T') {
|
||||
pretty_dt[i] = ' ';
|
||||
} else {
|
||||
pretty_dt[i] = date_time[dt_counter];
|
||||
}
|
||||
dt_counter++;
|
||||
}
|
||||
|
||||
// null-terminate string
|
||||
pretty_dt[strlen(pretty_dt)] = '\0';
|
||||
|
||||
return pretty_dt;
|
||||
}
|
||||
|
||||
// 20230823T194138 -> 2023-08-23 19:41:38
|
||||
void pretty_print_date_time (char date_time[]) {
|
||||
char* pdt = pretty_date_time(date_time);
|
||||
|
||||
printf("%s", pdt);
|
||||
|
||||
free(pdt);
|
||||
/*
|
||||
// copy date_time because strtok will destroy it
|
||||
char date_time_copy[15] = "";
|
||||
strcpy (date_time_copy, date_time);
|
||||
@ -44,6 +94,7 @@ void pretty_print_date_time(char date_time[]) {
|
||||
|
||||
// put variable date_time back together
|
||||
strcpy (date_time, date_time_copy);
|
||||
*/
|
||||
}
|
||||
|
||||
void marshall_date_time (char date_time[]) {
|
||||
@ -54,7 +105,8 @@ void marshall_date_time(char date_time[]) {
|
||||
if (date_time[i] != ':' && date_time[i] != '-') {
|
||||
if (date_time[i] == ' ') {
|
||||
transformed_string[j] = 'T';
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
transformed_string[j] = date_time[i];
|
||||
}
|
||||
|
||||
@ -75,15 +127,18 @@ void print_end_date(char end_date[], char start_date[]) {
|
||||
if (strlen (end_date) == 8) {
|
||||
if (time_difference == 86400) {
|
||||
return;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
printf (" - ");
|
||||
end_uts -= 86400;
|
||||
char *end_date_minus_one = transform_unix_ts_to_date(end_uts);
|
||||
char* end_date_minus_one =
|
||||
transform_unix_ts_to_date (end_uts);
|
||||
pretty_print_date_time (end_date_minus_one);
|
||||
free (end_date_minus_one);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
// end_date is not an all day event
|
||||
|
||||
char* end_date_chunk = strtok (end_date, "T");
|
||||
@ -94,10 +149,13 @@ void print_end_date(char end_date[], char start_date[]) {
|
||||
|
||||
// only print the end date if it is not the same as the start date
|
||||
if (strcmp (start_date_chunk, end_date_chunk) != 0) {
|
||||
printf("%c%c%c%c-", end_date_chunk[0], end_date_chunk[1], \
|
||||
end_date_chunk[2], end_date_chunk[3]);
|
||||
printf("%c%c-", end_date_chunk[4], end_date_chunk[5]);
|
||||
printf("%c%c ", end_date_chunk[6], end_date_chunk[7]);
|
||||
printf ("%c%c%c%c-", end_date_chunk[0],
|
||||
end_date_chunk[1], end_date_chunk[2],
|
||||
end_date_chunk[3]);
|
||||
printf ("%c%c-", end_date_chunk[4],
|
||||
end_date_chunk[5]);
|
||||
printf ("%c%c ", end_date_chunk[6],
|
||||
end_date_chunk[7]);
|
||||
}
|
||||
|
||||
printf ("%c%c:", end_time_chunk[0], end_time_chunk[1]);
|
||||
@ -138,7 +196,8 @@ char *get_tz() {
|
||||
if (bytes_read != -1) {
|
||||
// Null-terminate the string
|
||||
timezone_path[bytes_read] = '\0';
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
perror ("readlink");
|
||||
exit (1);
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
void get_date(char buffer[]);
|
||||
char *get_tz();
|
||||
char* pretty_date_time(char date_time[]);
|
||||
void pretty_print_date_time(char date_time[]);
|
||||
void marshall_date_time(char date_time[]);
|
||||
void print_end_date(char end_date[], char start_date[]);
|
||||
|
@ -1,7 +1,38 @@
|
||||
#include "../src/date_time_handling.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
||||
int main() {
|
||||
// 1
|
||||
char* pdt = pretty_date_time("20251215T080000Z");
|
||||
|
||||
assert(!strcmp(pdt, "2025-12-15 08:00:00"));
|
||||
|
||||
free(pdt);
|
||||
|
||||
// 2
|
||||
char* pdt2 = pretty_date_time("20251215T080000");
|
||||
|
||||
assert(!strcmp(pdt2, "2025-12-15 08:00:00"));
|
||||
|
||||
free(pdt2);
|
||||
|
||||
// 3
|
||||
char* pdt3 = pretty_date_time("");
|
||||
|
||||
assert(!strcmp(pdt3, ""));
|
||||
|
||||
free(pdt3);
|
||||
|
||||
// 4
|
||||
char* pdt4 = pretty_date_time("20251215");
|
||||
|
||||
assert(!strcmp(pdt4, "2025-12-15"));
|
||||
|
||||
free(pdt4);
|
||||
|
||||
// 5
|
||||
char current_date[] = "20240710T103000";
|
||||
|
||||
printf("current_date: %s\n", current_date);
|
||||
@ -13,6 +44,7 @@ int main() {
|
||||
printf("strlen(current_date): %ld\n", strlen(current_date));
|
||||
|
||||
pretty_print_date_time("20251215T080000Z");
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ int main() {
|
||||
// initialize empty list
|
||||
struct event *head = NULL;
|
||||
|
||||
// 1
|
||||
printf("\nTesting tests/failed_cal.ics:\n\n");
|
||||
char *current_date = "20240710T113000";
|
||||
|
||||
printf("DEBUG - current_date: %s\n\n", current_date);
|
||||
@ -13,4 +15,10 @@ int main() {
|
||||
parse_ics_file("../../tests/failed_cal.ics", &head);
|
||||
|
||||
print_upcoming(head, current_date, 0);
|
||||
|
||||
// 2
|
||||
printf("\nTesting tests/calendar.ics:\n\n");
|
||||
parse_ics_file("../../tests/calendar.ics", &head);
|
||||
|
||||
print_upcoming(head, current_date, 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user