summary refs log tree commit diff stats
path: root/pkg
diff options
context:
space:
mode:
authorAndinus <andinus@inventati.org>2020-03-14 12:19:20 +0530
committerAndinus <andinus@inventati.org>2020-03-14 12:19:20 +0530
commit4b2099eb3d6aa88332cd8bdb89992ea6e639840f (patch)
tree438ad38438959596d5fee0b03b8f623413c514d7 /pkg
parent666c04dc05231c171937a2e84a2f2668b5e351a3 (diff)
downloadcetus-4b2099eb3d6aa88332cd8bdb89992ea6e639840f.tar.gz
Reinitialize project
Diffstat (limited to 'pkg')
0 files changed, 0 insertions, 0 deletions
#n90'>90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
#include <setjmp.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdlib.h>
#include <cmocka.h>
#include <glib.h>
#include <stdio.h>
#include <unistd.h>

#include "common.h"
#include "helpers.h"
#include "config/preferences.h"
#include "xmpp/chat_session.h"

void
create_config_dir(void** state)
{
    setenv("XDG_CONFIG_HOME", "./tests/files/xdg_config_home", 1);
    if (!create_dir("./tests/files/xdg_config_home/profanity")) {
        assert_true(FALSE);
    }
}

void
remove_config_dir(void** state)
{
    rmdir("./tests/files/xdg_config_home/profanity");
    rmdir("./tests/files/xdg_config_home");
}

void
create_data_dir(void** state)
{
    setenv("XDG_DATA_HOME", "./tests/files/xdg_data_home", 1);
    if (!create_dir("./tests/files/xdg_data_home/profanity")) {
        assert_true(FALSE);
    }
}

void
remove_data_dir(void** state)
{
    rmdir("./tests/files/xdg_data_home/profanity");
    rmdir("./tests/files/xdg_data_home");
}

void
load_preferences(void** state)
{
    create_config_dir(state);
    FILE* f = fopen("./tests/files/xdg_config_home/profanity/profrc", "ab+");
    if (f) {
        prefs_load(NULL);
    }
    fclose(f);
}

void
close_preferences(void** state)
{
    prefs_close();
    remove("./tests/files/xdg_config_home/profanity/profrc");
    remove_config_dir(state);
    rmdir("./tests/files");
}

void
init_chat_sessions(void** state)
{
    load_preferences(NULL);
    chat_sessions_init();
}

void
close_chat_sessions(void** state)
{
    chat_sessions_clear();
    close_preferences(NULL);
}

int
utf8_pos_to_col(char* str, int utf8_pos)
{
    int col = 0;

    int i = 0;
    for (i = 0; i < utf8_pos; i++) {
        col++;
        gchar* ch = g_utf8_offset_to_pointer(str, i);
        gunichar uni = g_utf8_get_char(ch);
        if (g_unichar_iswide(uni)) {
            col++;
        }
    }

    return col;
}

static GCompareFunc cmp_func;

void
glist_set_cmp(GCompareFunc func)
{
    cmp_func = func;
}

int
glist_contents_equal(const void* actual, const void* expected)
{
    GList* ac = (GList*)actual;
    GList* ex = (GList*)expected;

    GList* p = ex;
    printf("\nExpected\n");
    while (ex) {
        printf("\n\n%s\n", (char*)p->data);
        ex = g_list_next(ex);
    }
    printf("\n\n");
    p = ac;
    printf("\nActual\n");
    while (ac) {
        printf("\n\n%s\n", (char*)p->data);
        ac = g_list_next(ac);
    }
    printf("\n\n");

    if (g_list_length(ex) != g_list_length(ac)) {
        return 0;
    }

    GList* ex_curr = ex;
    while (ex_curr != NULL) {
        if (g_list_find_custom(ac, ex_curr->data, cmp_func) == NULL) {
            return 0;
        }
        ex_curr = g_list_next(ex_curr);
    }

    return 1;
}