root/maint/gnulib/tests/uninorm/test-u32-nfkc-big.c

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

DEFINITIONS

This source file includes following definitions.
  1. check
  2. main
  3. main

   1 /* Test of Unicode compliance of compatibility normalization of UTF-32 strings.
   2    Copyright (C) 2009-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 /* Written by Bruno Haible <bruno@clisp.org>, 2009.  */
  18 
  19 #include <config.h>
  20 
  21 #if GNULIB_TEST_UNINORM_U32_NORMALIZE
  22 
  23 #include "uninorm.h"
  24 
  25 #include <stdlib.h>
  26 
  27 #include "unistr.h"
  28 #include "test-u32-normalize-big.h"
  29 
  30 static int
  31 check (const uint32_t *c1, size_t c1_length,
     /* [previous][next][first][last][top][bottom][index][help] */
  32        const uint32_t *c2, size_t c2_length,
  33        const uint32_t *c3, size_t c3_length,
  34        const uint32_t *c4, size_t c4_length,
  35        const uint32_t *c5, size_t c5_length)
  36 {
  37   /* Check c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5).  */
  38   {
  39     size_t length;
  40     uint32_t *result;
  41 
  42     result = u32_normalize (UNINORM_NFKC, c1, c1_length, NULL, &length);
  43     if (!(result != NULL
  44           && length == c4_length
  45           && u32_cmp (result, c4, c4_length) == 0))
  46       return 1;
  47     free (result);
  48   }
  49   {
  50     size_t length;
  51     uint32_t *result;
  52 
  53     result = u32_normalize (UNINORM_NFKC, c2, c2_length, NULL, &length);
  54     if (!(result != NULL
  55           && length == c4_length
  56           && u32_cmp (result, c4, c4_length) == 0))
  57       return 2;
  58     free (result);
  59   }
  60   {
  61     size_t length;
  62     uint32_t *result;
  63 
  64     result = u32_normalize (UNINORM_NFKC, c3, c3_length, NULL, &length);
  65     if (!(result != NULL
  66           && length == c4_length
  67           && u32_cmp (result, c4, c4_length) == 0))
  68       return 3;
  69     free (result);
  70   }
  71   {
  72     size_t length;
  73     uint32_t *result;
  74 
  75     result = u32_normalize (UNINORM_NFKC, c4, c4_length, NULL, &length);
  76     if (!(result != NULL
  77           && length == c4_length
  78           && u32_cmp (result, c4, c4_length) == 0))
  79       return 4;
  80     free (result);
  81   }
  82   {
  83     size_t length;
  84     uint32_t *result;
  85 
  86     result = u32_normalize (UNINORM_NFKC, c5, c5_length, NULL, &length);
  87     if (!(result != NULL
  88           && length == c4_length
  89           && u32_cmp (result, c4, c4_length) == 0))
  90       return 5;
  91     free (result);
  92   }
  93   return 0;
  94 }
  95 
  96 int
  97 main (int argc, char *argv[])
     /* [previous][next][first][last][top][bottom][index][help] */
  98 {
  99   struct normalization_test_file file;
 100 
 101   read_normalization_test_file (argv[1], &file);
 102 
 103   test_specific (&file, check);
 104   test_other (&file, UNINORM_NFKC);
 105 
 106   free_normalization_test_file (&file);
 107 
 108   return 0;
 109 }
 110 
 111 #else
 112 
 113 #include <stdio.h>
 114 
 115 int
 116 main ()
     /* [previous][next][first][last][top][bottom][index][help] */
 117 {
 118   fprintf (stderr, "Skipping test: uninorm/u32-normalize module not included.\n");
 119   return 77;
 120 }
 121 
 122 #endif

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