LCOV - code coverage report
Current view: top level - templating - test_mustach_jansson.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 42 42
Test Date: 2026-04-14 15:39:31 Functions: 100.0 % 2 2

            Line data    Source code
       1              : /*
       2              :   This file is part of TALER
       3              :   Copyright (C) 2014-2020 Taler Systems SA
       4              : 
       5              :   TALER is free software; you can redistribute it and/or modify
       6              :   it under the terms of the GNU General Public License as
       7              :   published by the Free Software Foundation; either version 3, or
       8              :   (at your option) any later version.
       9              : 
      10              :   TALER is distributed in the hope that it will be useful, but
      11              :   WITHOUT ANY WARRANTY; without even the implied warranty of
      12              :   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13              :   GNU General Public License for more details.
      14              : 
      15              :   You should have received a copy of the GNU General Public
      16              :   License along with TALER; see the file COPYING.  If not, see
      17              :   <http://www.gnu.org/licenses/>
      18              : */
      19              : 
      20              : /**
      21              :  * @file test_mustach_jansson.c
      22              :  * @brief testcase to test the mustach/jansson integration
      23              :  * @author Florian Dold
      24              :  */
      25              : #include "mustach-jansson.h"
      26              : #include <gnunet/gnunet_util_lib.h>
      27              : 
      28              : static void
      29            6 : assert_template (const char *template,
      30              :                  json_t *root,
      31              :                  const char *expected)
      32              : {
      33              :   char *r;
      34              :   size_t sz;
      35              : 
      36            6 :   GNUNET_assert (0 == mustach_jansson_mem (template,
      37              :                                            0,
      38              :                                            root,
      39              :                                            Mustach_With_AllExtensions,
      40              :                                            &r,
      41              :                                            &sz));
      42            6 :   GNUNET_assert (0 == strcmp (r,
      43              :                               expected));
      44            6 :   GNUNET_free (r);
      45            6 : }
      46              : 
      47              : 
      48              : int
      49            1 : main (int argc,
      50              :       char *const *argv)
      51              : {
      52            1 :   json_t *root = json_object ();
      53            1 :   json_t *arr = json_array ();
      54            1 :   json_t *obj = json_object ();
      55              :   /* test 1 */
      56            1 :   const char *t1 = "hello world";
      57            1 :   const char *x1 = "hello world";
      58              :   /* test 2 */
      59            1 :   const char *t2 = "hello {{ v1 }}";
      60            1 :   const char *x2 = "hello world";
      61              :   /* test 3 */
      62            1 :   const char *t3 = "hello {{ v3.x }}";
      63            1 :   const char *x3 = "hello baz";
      64              :   /* test 4 */
      65            1 :   const char *t4 = "hello {{# v2 }}{{ . }}{{/ v2 }}";
      66            1 :   const char *x4 = "hello foobar";
      67              :   /* test 5 */
      68            1 :   const char *t5 = "hello {{# v3 }}{{ y }}/{{ x }}{{ z }}{{/ v3 }}";
      69            1 :   const char *x5 = "hello quux/baz";
      70              :   /* test 8 */
      71            1 :   const char *t8 = "{{^ v4 }}fallback{{/ v4 }}";
      72            1 :   const char *x8 = "fallback";
      73              : 
      74              :   (void) argc;
      75              :   (void) argv;
      76            1 :   GNUNET_log_setup ("test-mustach-jansson",
      77              :                     "INFO",
      78              :                     NULL);
      79            1 :   GNUNET_assert (NULL != root);
      80            1 :   GNUNET_assert (NULL != arr);
      81            1 :   GNUNET_assert (NULL != obj);
      82            1 :   GNUNET_assert (0 ==
      83              :                  json_object_set_new (root,
      84              :                                       "v1",
      85              :                                       json_string ("world")));
      86            1 :   GNUNET_assert (0 ==
      87              :                  json_object_set_new (root,
      88              :                                       "v4",
      89              :                                       json_array ()));
      90            1 :   GNUNET_assert (0 ==
      91              :                  json_array_append_new (arr,
      92              :                                         json_string ("foo")));
      93            1 :   GNUNET_assert (0 ==
      94              :                  json_array_append_new (arr,
      95              :                                         json_string ("bar")));
      96            1 :   GNUNET_assert (0 ==
      97              :                  json_object_set_new (root,
      98              :                                       "v2",
      99              :                                       arr));
     100            1 :   GNUNET_assert (0 ==
     101              :                  json_object_set_new (root,
     102              :                                       "v3",
     103              :                                       obj));
     104            1 :   GNUNET_assert (0 ==
     105              :                  json_object_set_new (root,
     106              :                                       "amt",
     107              :                                       json_string ("EUR:123.00")));
     108            1 :   GNUNET_assert (0 ==
     109              :                  json_object_set_new (obj,
     110              :                                       "x",
     111              :                                       json_string ("baz")));
     112            1 :   GNUNET_assert (0 ==
     113              :                  json_object_set_new (obj,
     114              :                                       "y",
     115              :                                       json_string ("quux")));
     116            1 :   assert_template (t1, root, x1);
     117            1 :   assert_template (t2, root, x2);
     118            1 :   assert_template (t3, root, x3);
     119            1 :   assert_template (t4, root, x4);
     120            1 :   assert_template (t5, root, x5);
     121            1 :   assert_template (t8, root, x8);
     122            1 :   json_decref (root);
     123            1 :   return 0;
     124              : }
        

Generated by: LCOV version 2.0-1