grim/gplate
Clone
Summary
Browse
Changes
Graph
rewording so vim syntax highlighting doesn't blow up
2009-06-21, Gary Kramlich
4e8d21e4d53d
rewording so vim syntax highlighting doesn't blow up
#ifdef HAVE_CONFIG_H
#
include
<config.h>
#endif
/* HAVE_CONFIG_H */
#include
<check.h>
#include
<stdio.h>
#include
<string.h>
#include
<gplate/gplate.h>
#include
"test.h"
#define OUTPUT_TEST(tplate, input, output) { \
gchar *o = NULL, *msg = NULL; \
\
o = gplate_template_render(tplate, input, NULL); \
\
msg = g_strdup_printf("\ngot: '%s'\nwanted: '%s'\n", \
g_strescape(o, NULL), g_strescape(output, NULL)); \
\
fail_unless(g_ascii_strcasecmp(o, output) == 0, msg); \
}
#define SIMPLE_OUTPUT_TEST(input, output) { \
GPlateTemplate *tplate = gplate_template_new(); \
OUTPUT_TEST(tplate, input, output); \
}
/******************************************************************************
* Text Tags
*****************************************************************************/
START_TEST
(
test_syntax_no_keywords_no_variables
)
SIMPLE_OUTPUT_TEST
(
"simple template"
,
"simple template"
);
END_TEST
START_TEST
(
test_syntax_keywords_no_subst
)
SIMPLE_OUTPUT_TEST
(
"extends if else endif for endfor"
,
"extends if else endif for endfor"
);
END_TEST
START_TEST
(
test_syntax_keywords_no_subst_case
)
SIMPLE_OUTPUT_TEST
(
"EXteNds iF eLse enDif fOr enDFor"
,
"EXteNds iF eLse enDif fOr enDFor"
);
END_TEST
/******************************************************************************
* Variable Tags
*****************************************************************************/
START_TEST
(
test_syntax_one_var
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_integer
(
tplate
,
"two"
,
2
);
OUTPUT_TEST
(
tplate
,
"one {{ two }} three"
,
"one 2 three"
);
END_TEST
START_TEST
(
test_variable_newline_prefix
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"bar"
,
"|"
);
OUTPUT_TEST
(
tplate
,
"{{
\n
bar}}"
,
"|"
);
END_TEST
START_TEST
(
test_variable_newline_suffix
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"bar"
,
"|"
);
OUTPUT_TEST
(
tplate
,
"{{bar
\n
}}"
,
"|"
);
END_TEST
START_TEST
(
test_variable_newline_wrapped
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"bar"
,
"|"
);
OUTPUT_TEST
(
tplate
,
"{{
\n
bar
\n
}}"
,
"|"
);
END_TEST
START_TEST
(
test_syntax_var_in_single_quotes
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"quoted"
,
"in quotes"
);
OUTPUT_TEST
(
tplate
,
"abc '{{ quoted }}' xyz"
,
"abc 'in quotes' xyz"
);
END_TEST
START_TEST
(
test_syntax_var_in_double_quotes
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"quoted"
,
"in quotes"
);
OUTPUT_TEST
(
tplate
,
"abc
\"
{{ quoted }}
\"
xyz"
,
"abc
\"
in quotes
\"
xyz"
);
END_TEST
START_TEST
(
test_syntax_var_in_anchor_tag
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_string
(
tplate
,
"href"
,
"http://guifications.org"
);
OUTPUT_TEST
(
tplate
,
"<a href=
\"
{{ href }}
\"
>{{ href }}</a>"
,
"<a href=
\"
http://guifications.org
\"
>http://guifications.org</a>"
);
END_TEST
START_TEST
(
test_syntax_two_vars_one_block
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
gplate_collection_add_integer
(
tplate
,
"two"
,
2
);
gplate_collection_add_integer
(
tplate
,
"three"
,
3
);
OUTPUT_TEST
(
tplate
,
"one {{ two three }} four"
,
"one 2 four"
);
END_TEST
START_TEST
(
test_syntax_one_var_nested
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
GPlateVariable
*
dict
=
NULL
;
dict
=
gplate_dictionary_variable_new
(
"two"
);
gplate_collection_add_variable
(
GPLATE_COLLECTION
(
tplate
),
dict
);
gplate_collection_add_integer
(
dict
,
"too"
,
2
);
OUTPUT_TEST
(
tplate
,
"one {{ two.too }} three"
,
"one 2 three"
);
END_TEST
START_TEST
(
test_syntax_one_var_double_nested
)
GPlateTemplate
*
tplate
=
gplate_template_new
();
GPlateVariable
*
dict1
=
NULL
,
*
dict2
=
NULL
;
dict1
=
gplate_dictionary_variable_new
(
"one"
);
gplate_collection_add_variable
(
GPLATE_COLLECTION
(
tplate
),
dict1
);
dict2
=
gplate_dictionary_variable_new
(
"two"
);
gplate_collection_add_variable
(
GPLATE_COLLECTION
(
dict1
),
dict2
);
gplate_collection_add_string
(
dict2
,
"five"
,
"three sir!"
);
OUTPUT_TEST
(
tplate
,
"one, two, five! {{ one.two.five }}"
,
"one, two, five! three sir!"
);
END_TEST
/******************************************************************************
* Comment Tags
*****************************************************************************/
START_TEST
(
test_comment_empty
)
SIMPLE_OUTPUT_TEST
(
"{##}"
,
""
);
END_TEST
START_TEST
(
test_comment_simple
)
SIMPLE_OUTPUT_TEST
(
"{#simple#}"
,
""
);
END_TEST
START_TEST
(
test_comment_simple_with_whitespace
)
SIMPLE_OUTPUT_TEST
(
"{# simple #}"
,
""
);
END_TEST
START_TEST
(
test_comment_newline_prefix
)
SIMPLE_OUTPUT_TEST
(
"{#
\n
1#}"
,
""
);
END_TEST
START_TEST
(
test_comment_newline_suffix
)
SIMPLE_OUTPUT_TEST
(
"{#1
\n
#}"
,
""
);
END_TEST
START_TEST
(
test_comment_newline_wrapped
)
SIMPLE_OUTPUT_TEST
(
"{#
\n
1
\n
#}"
,
""
);
END_TEST
/******************************************************************************
* Exported
*****************************************************************************/
Suite
*
syntax_suite
(
void
)
{
Suite
*
s
=
suite_create
(
"Tag Suite"
);
TCase
*
tc
=
NULL
;
tc
=
tcase_create
(
"Text Tag"
);
tcase_add_test
(
tc
,
test_syntax_no_keywords_no_variables
);
tcase_add_test
(
tc
,
test_syntax_keywords_no_subst
);
tcase_add_test
(
tc
,
test_syntax_keywords_no_subst_case
);
suite_add_tcase
(
s
,
tc
);
tc
=
tcase_create
(
"Variable Tag"
);
tcase_add_test
(
tc
,
test_syntax_one_var
);
tcase_add_test
(
tc
,
test_variable_newline_prefix
);
tcase_add_test
(
tc
,
test_variable_newline_suffix
);
tcase_add_test
(
tc
,
test_variable_newline_wrapped
);
tcase_add_test
(
tc
,
test_syntax_var_in_single_quotes
);
tcase_add_test
(
tc
,
test_syntax_var_in_double_quotes
);
tcase_add_test
(
tc
,
test_syntax_var_in_anchor_tag
);
tcase_add_test
(
tc
,
test_syntax_two_vars_one_block
);
tcase_add_test
(
tc
,
test_syntax_one_var_nested
);
tcase_add_test
(
tc
,
test_syntax_one_var_double_nested
);
suite_add_tcase
(
s
,
tc
);
tc
=
tcase_create
(
"Comment Tag"
);
tcase_add_test
(
tc
,
test_comment_empty
);
tcase_add_test
(
tc
,
test_comment_simple
);
tcase_add_test
(
tc
,
test_comment_simple_with_whitespace
);
tcase_add_test
(
tc
,
test_comment_newline_prefix
);
tcase_add_test
(
tc
,
test_comment_newline_suffix
);
tcase_add_test
(
tc
,
test_comment_newline_wrapped
);
suite_add_tcase
(
s
,
tc
);
return
s
;
}