root/maint/gnulib/tests/unigbrk/test-uc-gbrk-prop.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. graphemebreakproperty_to_string
  2. main

   1 /* Test the Unicode grapheme break property function.
   2    Copyright (C) 2010-2021 Free Software Foundation, Inc.
   3 
   4    This program is free software: you can redistribute it and/or modify
   5    it under the terms of the GNU General Public License as published by
   6    the Free Software Foundation; either version 3 of the License, or
   7    (at your option) any later version.
   8 
   9    This program is distributed in the hope that it will be useful,
  10    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12    GNU General Public License for more details.
  13 
  14    You should have received a copy of the GNU General Public License
  15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  16 
  17 #include <config.h>
  18 
  19 /* Specification. */
  20 #include <unigbrk.h>
  21 
  22 struct uc_gbrk_prop_range
  23 {
  24   ucs4_t end;
  25   int gbp;
  26 };
  27 
  28 static const struct uc_gbrk_prop_range set[] =
  29   {
  30 #include "test-uc-gbrk-prop.h"
  31   };
  32 
  33 #include "macros.h"
  34 
  35 const char *
  36 graphemebreakproperty_to_string (int gbp)
     /* [previous][next][first][last][top][bottom][index][help] */
  37 {
  38   switch (gbp)
  39     {
  40 #define CASE(VALUE) case GBP_##VALUE: return #VALUE;
  41       CASE(OTHER)
  42       CASE(CR)
  43       CASE(LF)
  44       CASE(CONTROL)
  45       CASE(EXTEND)
  46       CASE(PREPEND)
  47       CASE(SPACINGMARK)
  48       CASE(L)
  49       CASE(V)
  50       CASE(T)
  51       CASE(LV)
  52       CASE(LVT)
  53       CASE(RI)
  54       CASE(ZWJ)
  55       CASE(EB)
  56       CASE(EM)
  57       CASE(GAZ)
  58       CASE(EBG)
  59     }
  60   abort ();
  61 }
  62 
  63 int
  64 main (void)
     /* [previous][next][first][last][top][bottom][index][help] */
  65 {
  66   const struct uc_gbrk_prop_range *r;
  67   ucs4_t uc;
  68 
  69   uc = 0;
  70   for (r = set; r < set + SIZEOF (set); r++)
  71     {
  72       for (; uc < r->end; uc++)
  73         {
  74           int retval = uc_graphemeclusterbreak_property (uc);
  75           if (retval != r->gbp)
  76             {
  77               fprintf (stderr, "uc_graphemeclusterbreak_property(%#x) "
  78                        "yielded %s but should have been %s\n",
  79                        uc, graphemebreakproperty_to_string (retval),
  80                        graphemebreakproperty_to_string (r->gbp));
  81               fflush (stderr);
  82               abort ();
  83             }
  84         }
  85     }
  86   ASSERT (uc == 0x110000);
  87 
  88   return 0;
  89 }

/* [previous][next][first][last][top][bottom][index][help] */