ADD_EXECUTABLE(${PROJECT_NAME}
feierabend.c
+ validate.c
time_format.c
worktime.c
break.c)
ADD_EXECUTABLE(${PROJECT_NAME}xml
feierabendxml.c
+ validate.c
xml.c
time_format.c
worktime.c
#include <stdio.h>
#include "feierabend.h"
#include "time_format.h"
+#include "validate.h"
#include "worktime.h"
#include "break.h"
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include "config.h"
-#include "time_format.h"
+#include "validate.h"
#include "xml.h"
int main(int argc, char* argv[])
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <regex.h>
#include "time_format.h"
#define ONE_HOUR 3600
#define SHORT_WEEKDAY_STR_LEN 3
#define MAX_TIME_STR_LENGTH 7
-#define DATE_REGEX "^[0-9]{4}-([0][1-9]|1[0-2])-([0-2][1-9]|[1-3]0|3[01])$"
-#define HOUR_REGEX "^([0-9]|1[0-9]|2[0-3])$"
-#define MINUTE_REGEX "^([0-9]|[1-5][0-9])$"
-
void get_time_str(time_t timediff, char* timestr)
{
memset(timestr, 0, MAX_TIME_STR_LENGTH);
free(str_first_pos);
str_first_pos = NULL;
return value;
-}
-
-bool validate_string(const char* str, const char* regex_pattern)
-{
- regex_t* regex = malloc(sizeof(regex_t));
- if (regex == NULL)
- return false;
-
- int comp_success = regcomp(regex, regex_pattern, REG_NOSUB | REG_EXTENDED);
- if (comp_success != 0) {
- free(regex);
- return false;
- }
-
- int match = regexec(regex, str, 0, NULL, 0);
-
- regfree(regex);
- free(regex);
- regex = NULL;
-
- if (match == REG_NOMATCH)
- return false;
-
- if (match == 0)
- return true;
-
- return false;
-}
-
-bool validate_datestring(const char* date)
-{
- return validate_string(date, DATE_REGEX);
-}
-
-bool validate_hourstring(const char* hour)
-{
- return validate_string(hour, HOUR_REGEX);
-}
-
-bool validate_minutestring(const char* minutes)
-{
- return validate_string(minutes, MINUTE_REGEX);
}
\ No newline at end of file
int get_year_from_str(const char* date);
int get_month_from_str(const char* date);
int get_day_from_str(const char* date);
-bool validate_datestring(const char* date);
-bool validate_hourstring(const char* hour);
-bool validate_minutestring(const char* minutes);
#endif
\ No newline at end of file
--- /dev/null
+#include <stdlib.h>
+#include <regex.h>
+#include "validate.h"
+
+#define DATE_REGEX "^[0-9]{4}-([0][1-9]|1[0-2])-([0-2][1-9]|[1-3]0|3[01])$"
+#define HOUR_REGEX "^([0-9]|1[0-9]|2[0-3])$"
+#define MINUTE_REGEX "^([0-9]|[1-5][0-9])$"
+
+bool validate_string(const char* str, const char* regex_pattern)
+{
+ regex_t* regex = malloc(sizeof(regex_t));
+ if (regex == NULL)
+ return false;
+
+ int comp_success = regcomp(regex, regex_pattern, REG_NOSUB | REG_EXTENDED);
+ if (comp_success != 0) {
+ free(regex);
+ return false;
+ }
+
+ int match = regexec(regex, str, 0, NULL, 0);
+
+ regfree(regex);
+ free(regex);
+ regex = NULL;
+
+ if (match == REG_NOMATCH)
+ return false;
+
+ if (match == 0)
+ return true;
+
+ return false;
+}
+
+bool validate_datestring(const char* date)
+{
+ return validate_string(date, DATE_REGEX);
+}
+
+bool validate_hourstring(const char* hour)
+{
+ return validate_string(hour, HOUR_REGEX);
+}
+
+bool validate_minutestring(const char* minutes)
+{
+ return validate_string(minutes, MINUTE_REGEX);
+}
\ No newline at end of file
--- /dev/null
+#ifndef VALIDATE_H
+#define VALIDATE_H
+#include <stdbool.h>
+
+bool validate_datestring(const char* date);
+bool validate_hourstring(const char* hour);
+bool validate_minutestring(const char* minutes);
+
+#endif
\ No newline at end of file
TARGET_LINK_LIBRARIES(time_format_tests
${CMOCKA})
+ADD_EXECUTABLE(validate_tests
+ validate_tests.c
+ ../src/validate.c)
+TARGET_LINK_LIBRARIES(validate_tests
+ ${CMOCKA})
+
ADD_CUSTOM_TARGET(run_tests
ALL ./break_tests
COMMAND ./worktime_tests
COMMAND ./time_format_tests
+ COMMAND ./validate_tests
DEPENDS break_tests
worktime_tests
- time_format_tests)
+ time_format_tests
+ validate_tests)
ADD_CUSTOM_COMMAND(TARGET run_tests
POST_BUILD
#include <cmocka.h>
#include <string.h>
#include <stdlib.h>
-#include <stdio.h>
#include "../src/time_format.h"
void get_zero_hour_and_fifteen_minutes()
assert_int_equal(result, 24);
}
-void validate_valid_date_string(const char* date)
-{
- bool valid = validate_datestring(date);
-
- assert_true(valid);
-}
-
-void validate_valid_date_string_tests()
-{
- validate_valid_date_string("2025-01-01");
- validate_valid_date_string("2025-01-31");
- validate_valid_date_string("2025-10-01");
- validate_valid_date_string("2025-10-31");
- validate_valid_date_string("2025-12-01");
- validate_valid_date_string("2025-12-31");
-}
-
-void validate_invalid_date_string(const char* date)
-{
- bool valid = validate_datestring(date);
-
- assert_false(valid);
-}
-
-void validate_invalid_date_string_tests()
-{
- validate_invalid_date_string("text");
- validate_invalid_date_string("2025-13-01");
- validate_invalid_date_string("2025-12-32");
- validate_invalid_date_string("2025--2-32");
- validate_invalid_date_string("2025-1-1");
- validate_invalid_date_string("2025-01--1");
- validate_invalid_date_string("2025-001-01");
- validate_invalid_date_string("2025-001-011");
- validate_invalid_date_string("20255-01-11");
-}
-
-void validate_vaild_hour_string(const char* hour)
-{
- bool valid = validate_hourstring(hour);
-
- assert_true(valid);
-}
-
-void validate_valid_hour_string_test()
-{
- char* hour = malloc(sizeof(char) * 3);
- if (hour == NULL)
- return;
-
- for (int i = 0; i < 24; i++) {
- memset(hour, 0, 3);
- sprintf(hour, "%d", i);
- validate_vaild_hour_string(hour);
- }
-
- free(hour);
- hour = NULL;
-}
-
-void validate_invaild_hour_string(const char* hour)
-{
- bool valid = validate_hourstring(hour);
-
- assert_false(valid);
-}
-
-void validate_invalid_hour_string_test()
-{
- validate_invaild_hour_string("text");
- validate_invaild_hour_string("-1");
- validate_invaild_hour_string("01");
- validate_invaild_hour_string("25");
- validate_invaild_hour_string("100");
-}
-
-void validate_vaild_minutes_string(const char* minutes)
-{
- bool valid = validate_minutestring(minutes);
-
- assert_true(valid);
-}
-
-void validate_valid_minutes_string_test()
-{
- char* minutes = malloc(sizeof(char) * 3);
- if (minutes == NULL)
- return;
-
- for (int i = 0; i < 60; i++) {
- memset(minutes, 0, 3);
- sprintf(minutes, "%d", i);
- validate_vaild_minutes_string(minutes);
- }
-
- free(minutes);
- minutes = NULL;
-}
-
-void validate_invaild_minutes_string(const char* minutes)
-{
- bool valid = validate_minutestring(minutes);
-
- assert_false(valid);
-}
-
-void validate_invalid_minutes_string_test()
-{
- validate_invaild_minutes_string("text");
- validate_invaild_minutes_string("-1");
- validate_invaild_minutes_string("01");
- validate_invaild_minutes_string("60");
- validate_invaild_minutes_string("100");
-}
-
int main()
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(get_seconds_from_str_minus),
cmocka_unit_test(get_year_from_date),
cmocka_unit_test(get_month_from_date),
- cmocka_unit_test(get_dat_from_date),
- cmocka_unit_test(validate_valid_date_string_tests),
- cmocka_unit_test(validate_invalid_date_string_tests),
- cmocka_unit_test(validate_valid_hour_string_test),
- cmocka_unit_test(validate_invalid_hour_string_test),
- cmocka_unit_test(validate_valid_minutes_string_test),
- cmocka_unit_test(validate_invalid_minutes_string_test)
+ cmocka_unit_test(get_dat_from_date)
};
return cmocka_run_group_tests(tests, NULL, NULL);
--- /dev/null
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <setjmp.h>
+#include <cmocka.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include "../src/validate.h"
+
+void validate_valid_date_string(const char* date)
+{
+ bool valid = validate_datestring(date);
+
+ assert_true(valid);
+}
+
+void validate_valid_date_string_tests()
+{
+ validate_valid_date_string("2025-01-01");
+ validate_valid_date_string("2025-01-31");
+ validate_valid_date_string("2025-10-01");
+ validate_valid_date_string("2025-10-31");
+ validate_valid_date_string("2025-12-01");
+ validate_valid_date_string("2025-12-31");
+}
+
+void validate_invalid_date_string(const char* date)
+{
+ bool valid = validate_datestring(date);
+
+ assert_false(valid);
+}
+
+void validate_invalid_date_string_tests()
+{
+ validate_invalid_date_string("text");
+ validate_invalid_date_string("2025-13-01");
+ validate_invalid_date_string("2025-12-32");
+ validate_invalid_date_string("2025--2-32");
+ validate_invalid_date_string("2025-1-1");
+ validate_invalid_date_string("2025-01--1");
+ validate_invalid_date_string("2025-001-01");
+ validate_invalid_date_string("2025-001-011");
+ validate_invalid_date_string("20255-01-11");
+}
+
+void validate_vaild_hour_string(const char* hour)
+{
+ bool valid = validate_hourstring(hour);
+
+ assert_true(valid);
+}
+
+void validate_valid_hour_string_test()
+{
+ char* hour = malloc(sizeof(char) * 3);
+ if (hour == NULL)
+ return;
+
+ for (int i = 0; i < 24; i++) {
+ memset(hour, 0, 3);
+ sprintf(hour, "%d", i);
+ validate_vaild_hour_string(hour);
+ }
+
+ free(hour);
+ hour = NULL;
+}
+
+void validate_invaild_hour_string(const char* hour)
+{
+ bool valid = validate_hourstring(hour);
+
+ assert_false(valid);
+}
+
+void validate_invalid_hour_string_test()
+{
+ validate_invaild_hour_string("text");
+ validate_invaild_hour_string("-1");
+ validate_invaild_hour_string("01");
+ validate_invaild_hour_string("25");
+ validate_invaild_hour_string("100");
+}
+
+void validate_vaild_minutes_string(const char* minutes)
+{
+ bool valid = validate_minutestring(minutes);
+
+ assert_true(valid);
+}
+
+void validate_valid_minutes_string_test()
+{
+ char* minutes = malloc(sizeof(char) * 3);
+ if (minutes == NULL)
+ return;
+
+ for (int i = 0; i < 60; i++) {
+ memset(minutes, 0, 3);
+ sprintf(minutes, "%d", i);
+ validate_vaild_minutes_string(minutes);
+ }
+
+ free(minutes);
+ minutes = NULL;
+}
+
+void validate_invaild_minutes_string(const char* minutes)
+{
+ bool valid = validate_minutestring(minutes);
+
+ assert_false(valid);
+}
+
+void validate_invalid_minutes_string_test()
+{
+ validate_invaild_minutes_string("text");
+ validate_invaild_minutes_string("-1");
+ validate_invaild_minutes_string("01");
+ validate_invaild_minutes_string("60");
+ validate_invaild_minutes_string("100");
+}
+
+int main()
+{
+ const struct CMUnitTest tests[] = {
+ cmocka_unit_test(validate_valid_date_string_tests),
+ cmocka_unit_test(validate_invalid_date_string_tests),
+ cmocka_unit_test(validate_valid_hour_string_test),
+ cmocka_unit_test(validate_invalid_hour_string_test),
+ cmocka_unit_test(validate_valid_minutes_string_test),
+ cmocka_unit_test(validate_invalid_minutes_string_test)
+ };
+
+ return cmocka_run_group_tests(tests, NULL, NULL);
+}
\ No newline at end of file