1.1 --- a/gplate/functions/tests/test-for-function.c Sun Jul 04 03:36:01 2010 -0500
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,188 +0,0 @@
1.4 -/*
1.5 - * Copyright (C) 2007-2010 Gary Kramlich <grim@reaperworld.com>
1.6 - *
1.7 - * This program is free software: you can redistribute it and/or modify
1.8 - * it under the terms of the GNU General Public License as published by
1.9 - * the Free Software Foundation, either version 3 of the License, or
1.10 - * (at your option) any later version.
1.11 - *
1.12 - * This program is distributed in the hope that it will be useful,
1.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 - * GNU General Public License for more details.
1.16 - *
1.17 - * You should have received a copy of the GNU General Public License
1.18 - * along with this program. If not, see <http://www.gnu.org/licenses/>.
1.19 - */
1.20 -#include <gplate/gplate.h>
1.21 -#include <gplate/variables/gplate-dictionary-variable.h>
1.22 -
1.23 -#include <glib.h>
1.24 -
1.25 -/******************************************************************************
1.26 - * Structs
1.27 - *****************************************************************************/
1.28 -typedef struct {
1.29 - const gchar *name;
1.30 - const gchar *value;
1.31 -} GPlateForFunctionTestData;
1.32 -
1.33 -typedef struct {
1.34 - GPlateTemplate *template;
1.35 -
1.36 - GPlateVariable *dict;
1.37 -
1.38 - const gchar *template_string;
1.39 -
1.40 - gchar *actual;
1.41 - const gchar *expected;
1.42 -
1.43 - GError *error;
1.44 -
1.45 - GPlateForFunctionTestData *data;
1.46 -} GPlateForFunctionTestFixture;
1.47 -
1.48 -/******************************************************************************
1.49 - * Fixtures
1.50 - *****************************************************************************/
1.51 -static void
1.52 -gplate_for_function_test_setup(GPlateForFunctionTestFixture *fixture,
1.53 - gconstpointer d)
1.54 -{
1.55 - fixture->template = gplate_template_new();
1.56 - fixture->dict = gplate_dictionary_variable_new("list");
1.57 -
1.58 - gplate_collection_add_variable(GPLATE_COLLECTION(fixture->template),
1.59 - fixture->dict);
1.60 -}
1.61 -
1.62 -static void
1.63 -gplate_for_function_test_teardown(GPlateForFunctionTestFixture *fixture,
1.64 - gconstpointer d)
1.65 -{
1.66 - g_object_unref(fixture->template);
1.67 - fixture->template = NULL;
1.68 -
1.69 - g_object_unref(fixture->dict);
1.70 - fixture->dict = NULL;
1.71 -
1.72 - g_free(fixture->actual);
1.73 - fixture->actual = NULL;
1.74 -
1.75 - fixture->expected = NULL;
1.76 -
1.77 - if(fixture->error) {
1.78 - g_error_free(fixture->error);
1.79 - fixture->error = NULL;
1.80 - }
1.81 -}
1.82 -
1.83 -/******************************************************************************
1.84 - * Helpers
1.85 - *****************************************************************************/
1.86 -static void
1.87 -gplate_for_function_test(GPlateForFunctionTestFixture *fixture) {
1.88 - gint i = 0;
1.89 -
1.90 - /* add the variables */
1.91 - for(i = 0; fixture->data[i].name; i++) {
1.92 - gplate_collection_add_string(fixture->dict,
1.93 - fixture->data[i].name,
1.94 - fixture->data[i].value);
1.95 - }
1.96 -
1.97 - fixture->actual = gplate_template_render(fixture->template,
1.98 - fixture->template_string,
1.99 - &fixture->error);
1.100 -
1.101 - g_assert(fixture->error == NULL);
1.102 -
1.103 - g_assert_cmpstr(fixture->expected, ==, fixture->actual);
1.104 -}
1.105 -
1.106 -/******************************************************************************
1.107 - * Simple For's
1.108 - *****************************************************************************/
1.109 -static void
1.110 -gplate_for_function_test_zero_elements(GPlateForFunctionTestFixture *fixture,
1.111 - gconstpointer user_data)
1.112 -{
1.113 - GPlateForFunctionTestData data[] = {
1.114 - { NULL, NULL },
1.115 - };
1.116 -
1.117 - fixture->data = data;
1.118 - fixture->template_string = "{% for in in line %}{{ i }}{% endfor %}";
1.119 - fixture->expected = "";
1.120 -
1.121 - gplate_for_function_test(fixture);
1.122 -}
1.123 -
1.124 -static void
1.125 -gplate_for_function_test_one_element(GPlateForFunctionTestFixture *fixture,
1.126 - gconstpointer user_data)
1.127 -{
1.128 - GPlateForFunctionTestData data[] = {
1.129 - { "one", "1" },
1.130 - { NULL, NULL },
1.131 - };
1.132 -
1.133 - fixture->data = data;
1.134 - fixture->template_string = "{% for i in list %}{{ i }}{% endfor %}";
1.135 - fixture->expected = "1";
1.136 -
1.137 - gplate_for_function_test(fixture);
1.138 -}
1.139 -
1.140 -static void
1.141 -gplate_for_function_test_two_elements(GPlateForFunctionTestFixture *fixture,
1.142 - gconstpointer user_data)
1.143 -{
1.144 - GPlateForFunctionTestData data[] = {
1.145 - { "a", "A" },
1.146 - { "b", "B" },
1.147 - { NULL, NULL },
1.148 - };
1.149 -
1.150 - fixture->data = data;
1.151 - fixture->template_string = "{% for i in list %}{{ i }}{% endfor %}";
1.152 - fixture->expected = "AB";
1.153 -
1.154 - gplate_for_function_test(fixture);
1.155 -}
1.156 -
1.157 -/******************************************************************************
1.158 - * Main!
1.159 - *****************************************************************************/
1.160 -gint
1.161 -main(gint argc, gchar **argv) {
1.162 - g_test_init(&argc, &argv, NULL);
1.163 -
1.164 - g_type_init();
1.165 -
1.166 - gplate_config_load_default();
1.167 -
1.168 - g_test_add("/functions/foo/zero_elements",
1.169 - GPlateForFunctionTestFixture,
1.170 - NULL,
1.171 - gplate_for_function_test_setup,
1.172 - gplate_for_function_test_zero_elements,
1.173 - gplate_for_function_test_teardown);
1.174 -
1.175 - g_test_add("/functions/foo/one_element",
1.176 - GPlateForFunctionTestFixture,
1.177 - NULL,
1.178 - gplate_for_function_test_setup,
1.179 - gplate_for_function_test_one_element,
1.180 - gplate_for_function_test_teardown);
1.181 -
1.182 - g_test_add("/functions/foo/two_elements",
1.183 - GPlateForFunctionTestFixture,
1.184 - NULL,
1.185 - gplate_for_function_test_setup,
1.186 - gplate_for_function_test_two_elements,
1.187 - gplate_for_function_test_teardown);
1.188 -
1.189 - return g_test_run();
1.190 -}
1.191 -