efl/src/tests/elementary/elm_code_test_indent.c

234 lines
5.9 KiB
C

#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#include "elm_suite.h"
#include "Elementary.h"
#include "elm_code_indent.h"
static void
_indent_check(Elm_Code_File *file, const char *prev, const char *expected)
{
Elm_Code_Line *line;
char *str;
elm_code_file_clear(file);
elm_code_file_line_append(file, prev, strlen(prev), NULL);
elm_code_file_line_append(file, "", 0, NULL);
line = elm_code_file_line_get(file, 2);
str = elm_code_line_indent_get(line);
ck_assert_str_eq(expected, str);
free(str);
}
EFL_START_TEST(elm_code_indent_whitespace_test)
{
Elm_Code *code;
Elm_Code_File *file;
char *args[] = { "exe" };
elm_init(1, args);
code = elm_code_create();
file = elm_code_file_new(code);
_indent_check(file, "", "");
_indent_check(file, " ", " ");
_indent_check(file, "\t", "\t");
_indent_check(file, "\t ", "\t ");
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_comments_test)
{
Elm_Code *code;
Elm_Code_File *file;
char *args[] = { "exe" };
elm_init(1, args);
code = elm_code_create();
file = elm_code_file_new(code);
_indent_check(file, " /**", " * ");
_indent_check(file, " * ", " * ");
_indent_check(file, " */", " ");
_indent_check(file, "\t//", "\t//");
// test these are not comments
_indent_check(file, " / ", " ");
_indent_check(file, " hi//", " ");
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_simple_braces)
{
Elm_Code *code;
Elm_Code_File *file;
char *args[] = { "exe" };
elm_init(1, args);
code = elm_code_create();
file = elm_code_file_new(code);
code->config.indent_style_efl = EINA_TRUE;
_indent_check(file, "if() {", " ");
_indent_check(file, "}", "");
_indent_check(file, " {", " ");
_indent_check(file, " }", "");
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_tab_simple_braces)
{
Elm_Code *code;
Elm_Code_File *file;
elm_init(1, NULL);
code = elm_code_create();
file = elm_code_file_new(code);
code->config.indent_style_efl = EINA_FALSE;
_indent_check(file, "if() {", "\t");
_indent_check(file, "}", "");
_indent_check(file, "\t{", "\t\t");
_indent_check(file, "\t}", "\t");
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_matching_braces)
{
Elm_Code_File *file;
Elm_Code_Line *line;
Elm_Code *code;
const char *str;
unsigned int str_len;
char *args[] = { "exe" };
elm_init(1, args);
code = elm_code_create();
file = elm_code_file_new(code);
elm_code_file_line_append(file, "", 0, NULL);
line = elm_code_file_line_get(file, 1);
elm_code_file_line_insert(file, 1, " if ()", 8, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_strn_eq(str, "", str_len);
elm_code_file_line_insert(file, 2, " {", 6, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_int_eq(str_len, 5);
ck_assert_strn_eq(str, " ", str_len);
elm_code_file_line_insert(file, 3, " if (){", 14, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_int_eq(str_len, 8);
ck_assert_strn_eq(str, " ", str_len);
elm_code_file_line_insert(file, 4, " }", 9, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_int_eq(str_len, 5);
ck_assert_strn_eq(str, " ", str_len);
elm_code_file_line_insert(file, 5, " }", 6, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_strn_eq(str, "", str_len);
elm_code_free(code);
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_tab_matching_braces)
{
Elm_Code_File *file;
Elm_Code_Line *line;
Elm_Code *code;
const char *str;
unsigned int str_len;
elm_init(1, NULL);
code = elm_code_create();
file = elm_code_file_new(code);
elm_code_file_line_append(file, "", 0, NULL);
line = elm_code_file_line_get(file, 1);
elm_code_file_line_insert(file, 1, "\tif ()", 6, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_strn_eq(str, "", str_len);
elm_code_file_line_insert(file, 2, "\t{", 2, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_int_eq(str_len, 1);
ck_assert_strn_eq(str, "\t", str_len);
elm_code_file_line_insert(file, 3, "\t}", 2, NULL);
str = elm_code_line_indent_matching_braces_get(line, &str_len);
ck_assert_strn_eq(str, "", str_len);
elm_code_free(code);
elm_shutdown();
}
EFL_END_TEST
EFL_START_TEST(elm_code_indent_startswith_keyword)
{
Elm_Code_File *file;
Elm_Code *code;
char *args[] = { "exe" };
elm_init(1, args);
code = elm_code_create();
file = elm_code_file_new(code);
_indent_check(file, "if ()", " ");
_indent_check(file, "else", " ");
_indent_check(file, "else if ()", " ");
_indent_check(file, "for ()", " ");
_indent_check(file, "while ()", " ");
_indent_check(file, "do", " ");
_indent_check(file, "do {", " ");
_indent_check(file, " switch ()", " ");
_indent_check(file, " case a:", " ");
_indent_check(file, " default:", " ");
_indent_check(file, "if ();", "");
_indent_check(file, " for ();", " ");
_indent_check(file, " iffy()", " ");
_indent_check(file, " fi()", " ");
_indent_check(file, " elihw", " ");
_indent_check(file, " if", " ");
_indent_check(file, " while", " ");
elm_code_free(code);
elm_shutdown();
}
EFL_END_TEST
void elm_code_test_indent(TCase *tc)
{
tcase_add_test(tc, elm_code_indent_whitespace_test);
tcase_add_test(tc, elm_code_indent_comments_test);
tcase_add_test(tc, elm_code_indent_tab_simple_braces);
tcase_add_test(tc, elm_code_indent_simple_braces);
tcase_add_test(tc, elm_code_indent_matching_braces);
tcase_add_test(tc, elm_code_indent_tab_matching_braces);
tcase_add_test(tc, elm_code_indent_startswith_keyword);
}