more code

This commit is contained in:
Florian Stinglmayr 2025-04-28 15:24:06 +02:00
parent 277bc9f249
commit 32d0ec167b
4 changed files with 76 additions and 0 deletions

View File

@ -42,6 +42,8 @@ gchar const *ed_journal_file_get_commander(EDJournalFile *self);
gchar const *ed_journal_file_get_gameversion(EDJournalFile *self); gchar const *ed_journal_file_get_gameversion(EDJournalFile *self);
gint ed_journal_file_compare(EDJournalFile *lhs, EDJournalFile *rhs);
G_END_DECLS G_END_DECLS
#endif #endif

View File

@ -382,3 +382,14 @@ gchar const *ed_journal_file_get_gameversion(EDJournalFile *self)
EDJournalFilePrivate *p = ed_journal_file_get_instance_private(self); EDJournalFilePrivate *p = ed_journal_file_get_instance_private(self);
return p->gameversion; return p->gameversion;
} }
gint ed_journal_file_compare(EDJournalFile *lhs, EDJournalFile *rhs)
{
return_if_true(lhs == NULL || rhs == NULL, 0);
GDateTime *ldate = ed_journal_file_get_datetime(lhs);
GDateTime *rdate = ed_journal_file_get_datetime(rhs);
return_if_true(ldate == NULL || rdate == NULL, 0);
return g_date_time_compare(ldate, rdate);
}

View File

@ -136,6 +136,9 @@ static void ed_journal_load_files(EDJournal *self)
g_free(full); g_free(full);
} }
p->files = g_list_sort(
p->files, (GCompareFunc)ed_journal_file_compare);
done: done:
if (loc != NULL) { if (loc != NULL) {

View File

@ -40,6 +40,64 @@ static void test_old_filename(void **state)
g_clear_object(&file); 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) static void test_valid_load(void **state)
{ {
char const *filename = "Journal.2023-04-18T061507.01.log"; char const *filename = "Journal.2023-04-18T061507.01.log";
@ -77,6 +135,8 @@ int main(int ac, char **av)
cmocka_unit_test(test_new_filename), cmocka_unit_test(test_new_filename),
cmocka_unit_test(test_old_filename), cmocka_unit_test(test_old_filename),
cmocka_unit_test(test_valid_load), cmocka_unit_test(test_valid_load),
cmocka_unit_test(test_new_datetime),
cmocka_unit_test(test_old_datetime),
}; };
return cmocka_run_group_tests(tests, NULL, NULL); return cmocka_run_group_tests(tests, NULL, NULL);