forked from enlightenment/edi
109 lines
2.5 KiB
C
109 lines
2.5 KiB
C
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#include <Elementary.h>
|
|
|
|
#include "../bin/edi_private.h"
|
|
#include "language/edi_language_provider.h"
|
|
|
|
#include "edi_suite.h"
|
|
|
|
static Elm_Code *
|
|
_setup(Edi_Editor *editor, Evas_Object *win)
|
|
{
|
|
Elm_Code *code;
|
|
Elm_Code_Widget *widget;
|
|
|
|
editor->mimetype = "text/x-csrc";
|
|
|
|
code = elm_code_create();
|
|
elm_code_file_open(code, PACKAGE_TESTS_DIR "test.c");
|
|
|
|
widget = elm_code_widget_add(win, code);
|
|
editor->entry = widget;
|
|
elm_code_widget_cursor_position_set(widget, 3, 12);
|
|
elm_code_widget_font_set(widget, "Mono", 14);
|
|
|
|
return code;
|
|
}
|
|
|
|
static Eina_List *
|
|
_filtered_list_get(Eina_List *list, const char *word)
|
|
{
|
|
Edi_Language_Suggest_Item *suggest_it;
|
|
Eina_List *l, *ret = NULL;
|
|
|
|
EINA_LIST_FOREACH(list, l, suggest_it)
|
|
{
|
|
if (eina_str_has_prefix(suggest_it->summary, word))
|
|
ret = eina_list_append(ret, suggest_it);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
START_TEST (edi_test_language_provider_c_lookup)
|
|
{
|
|
Elm_Code *code;
|
|
Evas_Object *win;
|
|
Edi_Editor editor;
|
|
Edi_Language_Provider *provider;
|
|
Edi_Language_Suggest_Item *item;
|
|
Eina_List *list;
|
|
|
|
elm_init(1, NULL);
|
|
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
|
|
code = _setup(&editor, win);
|
|
|
|
provider = edi_language_provider_get(&editor);
|
|
provider->add(&editor);
|
|
list = provider->lookup(&editor, 3, 12);
|
|
ck_assert_int_eq(eina_list_count(_filtered_list_get(list, "_xyzabc_")), 1);
|
|
|
|
EINA_LIST_FREE(list, item)
|
|
edi_language_suggest_item_free(item);
|
|
|
|
provider->del(&editor);
|
|
elm_code_free(code);
|
|
elm_shutdown();
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST (edi_test_language_provider_c_summary)
|
|
{
|
|
Elm_Code *code;
|
|
Evas_Object *win;
|
|
Edi_Editor editor;
|
|
Edi_Language_Provider *provider;
|
|
Edi_Language_Suggest_Item *item;
|
|
Eina_List *list;
|
|
|
|
elm_init(1, NULL);
|
|
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
|
|
code = _setup(&editor, win);
|
|
|
|
provider = edi_language_provider_get(&editor);
|
|
provider->add(&editor);
|
|
list = provider->lookup(&editor, 3, 12);
|
|
item = eina_list_nth(_filtered_list_get(list, "_xyzabc_"), 0);
|
|
ck_assert_str_eq(item->summary, "_xyzabc_test");
|
|
|
|
EINA_LIST_FREE(list, item)
|
|
edi_language_suggest_item_free(item);
|
|
|
|
provider->del(&editor);
|
|
elm_code_free(code);
|
|
elm_shutdown();
|
|
}
|
|
END_TEST
|
|
|
|
void edi_test_language_provider_c(TCase *tc)
|
|
{
|
|
#if HAVE_LIBCLANG
|
|
tcase_add_test(tc, edi_test_language_provider_c_lookup);
|
|
tcase_add_test(tc, edi_test_language_provider_c_summary);
|
|
#endif
|
|
}
|
|
|