264 lines
6.8 KiB
C
264 lines
6.8 KiB
C
#include <stdarg.h>
|
|
#include <setjmp.h>
|
|
#include <stddef.h>
|
|
#include <cmocka.h>
|
|
|
|
#include <stdio.h>
|
|
#include <edapi/journal/file.h>
|
|
|
|
static void test_new_filename(void **state)
|
|
{
|
|
char const *filename = "Journal.2023-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = ed_journal_file_new();
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
assert_null(error);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_old_filename(void **state)
|
|
{
|
|
char const *filename = "Journal.230418061507.01.log";
|
|
|
|
EDJournalFile *file = ed_journal_file_new();
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
assert_null(error);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_new_datetime(void **state)
|
|
{
|
|
char const *filename = "Journal.2023-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = ed_journal_file_new();
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
assert_null(error);
|
|
|
|
GDateTime *dt = ed_journal_file_get_datetime(file);
|
|
|
|
assert_non_null(dt);
|
|
|
|
assert_int_equal(g_date_time_get_year(dt), 2023);
|
|
assert_int_equal(g_date_time_get_month(dt), 04);
|
|
assert_int_equal(g_date_time_get_day_of_month(dt), 18);
|
|
|
|
assert_int_equal(g_date_time_get_hour(dt), 6);
|
|
assert_int_equal(g_date_time_get_minute(dt), 15);
|
|
assert_int_equal(g_date_time_get_second(dt), 7);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_old_datetime(void **state)
|
|
{
|
|
char const *filename = "Journal.230418061507.01.log";
|
|
|
|
EDJournalFile *file = ed_journal_file_new();
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
assert_null(error);
|
|
|
|
GDateTime *dt = ed_journal_file_get_datetime(file);
|
|
|
|
assert_non_null(dt);
|
|
|
|
assert_int_equal(g_date_time_get_year(dt), 2023);
|
|
assert_int_equal(g_date_time_get_month(dt), 04);
|
|
assert_int_equal(g_date_time_get_day_of_month(dt), 18);
|
|
|
|
assert_int_equal(g_date_time_get_hour(dt), 6);
|
|
assert_int_equal(g_date_time_get_minute(dt), 15);
|
|
assert_int_equal(g_date_time_get_second(dt), 7);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_valid_load(void **state)
|
|
{
|
|
char const *filename = "Journal.2023-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = NULL;
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
file = ed_journal_file_new();
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
|
|
assert_null(error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_valid_peek(void **state)
|
|
{
|
|
char const *filename = "Journal.2023-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = NULL;
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
file = ed_journal_file_new();
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
|
|
assert_null(error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
|
|
char const *sval = NULL;
|
|
EDCommander *cmdr = NULL;
|
|
|
|
cmdr = ed_journal_file_get_commander(file);
|
|
assert_non_null(cmdr);
|
|
sval = ed_commander_get_name(cmdr);
|
|
assert_non_null(sval);
|
|
assert_string_equal(sval, "DeiMuata");
|
|
|
|
sval = ed_journal_file_get_gameversion(file);
|
|
assert_non_null(sval);
|
|
assert_string_equal(sval, "4.0.0.1477");
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_first_last(void **state)
|
|
{
|
|
char const *filename = "Journal.2024-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = NULL;
|
|
EDErrorCode ret = 0;
|
|
EDJournalEntry *e = NULL;
|
|
GError *error = NULL;
|
|
|
|
file = ed_journal_file_new();
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
|
|
assert_null(error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
|
|
e = ed_journal_file_get_first(file);
|
|
assert_non_null(e);
|
|
assert_true(ed_journal_entry_is(e, "Fileheader"));
|
|
|
|
e = ed_journal_file_get_last(file);
|
|
assert_non_null(e);
|
|
assert_true(ed_journal_entry_is(e, "Shutdown"));
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
static void test_in_range(void **state)
|
|
{
|
|
char const *filename = "Journal.2024-04-18T061507.01.log";
|
|
|
|
EDJournalFile *file = NULL;
|
|
EDErrorCode ret = 0;
|
|
GError *error = NULL;
|
|
|
|
GDateTime *start = NULL;
|
|
GDateTime *end = NULL;
|
|
|
|
gboolean b;
|
|
|
|
file = ed_journal_file_new();
|
|
assert_non_null(file);
|
|
|
|
ret = ed_journal_file_open(file, filename, &error);
|
|
|
|
assert_null(error);
|
|
assert_int_equal(ret, ed_error_success);
|
|
|
|
/* start in range
|
|
*/
|
|
start = g_date_time_new_from_iso8601("2024-04-18T04:15:39Z", NULL);
|
|
end = g_date_time_new_from_iso8601("2024-04-19T04:15:39Z", NULL);
|
|
b = ed_journal_file_has_entries_in_range(file, start, end);
|
|
assert_true(b);
|
|
g_date_time_unref(start);
|
|
g_date_time_unref(end);
|
|
|
|
/* end in range
|
|
*/
|
|
start = g_date_time_new_from_iso8601("2024-04-17T04:15:39Z", NULL);
|
|
end = g_date_time_new_from_iso8601("2024-04-18T05:15:39Z", NULL);
|
|
b = ed_journal_file_has_entries_in_range(file, start, end);
|
|
assert_true(b);
|
|
g_date_time_unref(start);
|
|
g_date_time_unref(end);
|
|
|
|
/* both outside
|
|
*/
|
|
start = g_date_time_new_from_iso8601("2023-04-17T04:15:39Z", NULL);
|
|
end = g_date_time_new_from_iso8601("2025-04-18T05:15:39Z", NULL);
|
|
b = ed_journal_file_has_entries_in_range(file, start, end);
|
|
assert_true(b);
|
|
g_date_time_unref(start);
|
|
g_date_time_unref(end);
|
|
|
|
/* too early
|
|
*/
|
|
start = g_date_time_new_from_iso8601("2023-04-17T04:15:39Z", NULL);
|
|
end = g_date_time_new_from_iso8601("2023-04-18T05:15:39Z", NULL);
|
|
b = ed_journal_file_has_entries_in_range(file, start, end);
|
|
assert_false(b);
|
|
g_date_time_unref(start);
|
|
g_date_time_unref(end);
|
|
|
|
/* too late
|
|
*/
|
|
start = g_date_time_new_from_iso8601("2025-04-17T04:15:39Z", NULL);
|
|
end = g_date_time_new_from_iso8601("2025-04-18T05:15:39Z", NULL);
|
|
b = ed_journal_file_has_entries_in_range(file, start, end);
|
|
assert_false(b);
|
|
g_date_time_unref(start);
|
|
g_date_time_unref(end);
|
|
|
|
g_clear_object(&file);
|
|
}
|
|
|
|
int main(int ac, char **av)
|
|
{
|
|
static const struct CMUnitTest tests[] = {
|
|
cmocka_unit_test(test_new_filename),
|
|
cmocka_unit_test(test_old_filename),
|
|
cmocka_unit_test(test_valid_load),
|
|
cmocka_unit_test(test_new_datetime),
|
|
cmocka_unit_test(test_old_datetime),
|
|
cmocka_unit_test(test_valid_peek),
|
|
cmocka_unit_test(test_first_last),
|
|
cmocka_unit_test(test_in_range),
|
|
};
|
|
|
|
return cmocka_run_group_tests(tests, NULL, NULL);
|
|
}
|