(root)/
glibc-2.38/
localedata/
tests-mbwc/
dat_wcscoll.c
       1  /*
       2   *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
       3   *
       4   *	 FILE: dat_wcscoll.c
       5   *
       6   *	 WCSCOLL:  int	wcscoll (const wchar_t *ws1, const wchar_t *ws2);
       7   */
       8  
       9  /*
      10   *  CAUTION:
      11   *	     When LC_COLLATE (or LC_ALL) is set for ja_JP.EUC,
      12   *	     wcscoll() core-dumps for big values such as 0x3041
      13   *	     (0x0041 is okay) in glibc 2.1.2.
      14   *
      15   *  NOTE:
      16   *    a) When 0 is expected as a return value, set ret_flg=1.
      17   *	 - the return value is compared with an expected value: ret_val.
      18   *    b) When a positive value is expected as a return value,
      19   *	 set ret_flg=0 and set cmp_flg=+1.
      20   *	 - the return value is not compared with the expected value
      21   *	   (can not be compared); instead, the test program checks
      22   *	   if the return value is positive when cmp_flg=+1.
      23   *    c) When a negative value is expected as a return value,
      24   *	 ......
      25   *    d) When data contains invalid values, set err_val to the expected errno.
      26   *	 Set ret_flg=0 and cmp_flg=0 so that it doesn't compare
      27   *	 the return value with an expected value or doesn't check
      28   *	 the sign of the return value.
      29   *
      30   *
      31   *	     -------------------------------------------
      32   *	     CASE  err_val   ret_flg  ret_val	 cmp_flg
      33   *	     -------------------------------------------
      34   *	      a)      0	 1	  0	    0
      35   *	      b)      0	 0	  0	   +1
      36   *	      c)      0	 0	  0	   -1
      37   *	      d)    EINVAL	 0	  0	    0
      38   *	     -------------------------------------------
      39   */
      40  
      41  
      42  TST_WCSCOLL tst_wcscoll_loc [] = {
      43  
      44      {	{ Twcscoll, TST_LOC_de },
      45  	{
      46  	  { /*input.*/ { { 0x00E1,0x00E2,0x00E3,0x0000 },
      47  			 { 0x00E1,0x00E2,0x00E3,0x0000 }, },  /* #1 */
      48  	    /*expect*/ { 0,1,0, 0,			  },
      49  	  },
      50  	  { /*input.*/ { { 0x0000,0x00E1,0x00E3,0x0000 },
      51  			 { 0x0000,0x00E2,0x00E3,0x0000 }, },  /* #2 */
      52  	    /*expect*/ { 0,1,0, 0,			  },
      53  	  },
      54  	  { /*input.*/ { { 0x00E1,0x00E1,0x00E3,0x0000 },
      55  			 { 0x0000,0x00E2,0x00E3,0x0000 }, },  /* #3 */
      56  	    /*expect*/ { 0,0,0, +1,			  },
      57  	  },
      58  	  { /*input.*/ { { 0x0000,0x00E2,0x00E3,0x0000 },
      59  			 { 0x00E1,0x00E1,0x00E3,0x0000 }, },  /* #4 */
      60  	    /*expect*/ { 0,0,0, -1,			  },
      61  	  },
      62  	  { /*input.*/ { { 0x00E1,0x0042,0x00E3,0x0000 },
      63  			 { 0x00E1,0x0061,0x00E3,0x0000 }, },  /* #5 */
      64  	    /*expect*/ { 0,0,0, +1,			  },
      65  	  },
      66  	  { /*input.*/ { { 0x00E1,0x0061,0x00E3,0x0000 },
      67  			 { 0x00E1,0x0042,0x00E3,0x0000 }, },  /* #6 */
      68  	    /*expect*/ { 0,0,0, -1,			  },
      69  	  },
      70  	  { /*input.*/ { { 0x00E1,0x00E2,0x0000	       },
      71  			 { 0x00E1,0x00E2,0x00E9,0x0000 }, },  /* #7 */
      72  	    /*expect*/ { 0,0,0, -1,			  },
      73  	  },
      74  	  { /*input.*/ { { 0x00E1,0x00E2,0x00E9,0x0000 },
      75  			 { 0x00E1,0x00E2,0x0000	       }, },  /* #8 */
      76  	    /*expect*/ { 0,0,0, +1,			  },
      77  	  },
      78  	  { /*input.*/ { { 0x00E1,0x0092,0x00E9,0x0000 },
      79  			 { 0x00E1,0x008E,0x00E9,0x0000 }, },  /* #9 */
      80  	    /*expect*/ { 0,0,0, +1,		       },
      81  	  },
      82  	  { /*input.*/ { { 0x00E1,0x008E,0x00E9,0x0000 },
      83  			 { 0x00E1,0x0092,0x00E9,0x0000 }, },  /* #10 */
      84  	    /*expect*/ { 0,0,0, -1,		       },
      85  	  },
      86  	  { .is_last = 1 }
      87  	}
      88      },
      89      {	{ Twcscoll, TST_LOC_enUS },
      90  	{
      91  	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
      92  			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #1 */
      93  	    /*expect*/ { 0,1,0, 0,			  },
      94  	  },
      95  	  { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 },
      96  			 { 0x0000,0x0042,0x0043,0x0000 }, },  /* #2 */
      97  	    /*expect*/ { 0,1,0, 0,			  },
      98  	  },
      99  	  { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 },
     100  			 { 0x0000,0x0042,0x0043,0x0000 }, },  /* #3 */
     101  	    /*expect*/ { 0,0,0, +1,			  },
     102  	  },
     103  	  { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
     104  			 { 0x0041,0x0041,0x0043,0x0000 }, },  /* #4 */
     105  	    /*expect*/ { 0,0,0, -1,			  },
     106  	  },
     107  	  /* XXX Correct order is lowercase before uppercase.  */
     108  	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
     109  			 { 0x0041,0x0061,0x0043,0x0000 }, },  /* #5 */
     110  	    /*expect*/ { 0,0,0, +1,			  },
     111  	  },
     112  	  { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 },
     113  			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #6 */
     114  	    /*expect*/ { 0,0,0, -1,			  },
     115  	  },
     116  	  { /*input.*/ { { 0x0041,0x0042,0x0000	       },
     117  			 { 0x0041,0x0042,0x0049,0x0000 }, },  /* #7 */
     118  	    /*expect*/ { 0,0,0, -1,			  },
     119  	  },
     120  	  { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 },
     121  			 { 0x0041,0x0042,0x0000	       }, },  /* #8 */
     122  	    /*expect*/ { 0,0,0, +1,			  },
     123  	  },
     124  	  /* Do not assume position of character out of range.  */
     125  	  { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 },
     126  			 { 0x0041,0x008E,0x0049,0x0000 }, },  /* #9 */
     127  	    /*expect*/ { 0,0,0, 0,		       },
     128  	  },
     129  	  { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 },
     130  			 { 0x0041,0x0092,0x0049,0x0000 }, },  /* #10 */
     131  	    /*expect*/ { 0,0,0, 0,		       },
     132  	  },
     133  	  { .is_last = 1 }
     134  	}
     135      },
     136      {	{ Twcscoll, TST_LOC_eucJP },
     137  	{
     138  	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
     139  			 { 0x3041,0x3042,0x3043,0x0000 }, },  /* #1 */
     140  	    /*expect*/ { 0,1,0, 0,			  },
     141  	  },
     142  	  { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 },
     143  			 { 0x0000,0x3042,0x3043,0x0000 }, },  /* #2 */
     144  	    /*expect*/ { 0,1,0, 0,			  },
     145  	  },
     146  	  { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 },
     147  			 { 0x0000,0x3042,0x3043,0x0000 }, },  /* #3 */
     148  	    /*expect*/ { 0,0,0, +1,			  },
     149  	  },
     150  	  { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
     151  			 { 0x3041,0x3041,0x3043,0x0000 }, },  /* #4 */
     152  	    /*expect*/ { 0,0,0, -1,			  },
     153  	  },
     154  	  { /*input.*/ { { 0x3041,0x0042,0x3043,0x0000 },
     155  			 { 0x3041,0x0061,0x3043,0x0000 }, },  /* #5 */
     156  	    /*expect*/ { 0,0,0, -1,			  },
     157  	  },
     158  	  { /*input.*/ { { 0x3041,0x0061,0x3043,0x0000 },
     159  			 { 0x3041,0x0042,0x3043,0x0000 }, },  /* #6 */
     160  	    /*expect*/ { 0,0,0, +1,			  },
     161  	  },
     162  	  { /*input.*/ { { 0x3041,0x3042,0xFF71,0x0000 },
     163  			 { 0x3041,0x3042,0x30A2,0x0000 }, },  /* #7 */
     164  	    /*expect*/ { 0,0,0, -1,			  },
     165  	  },
     166  	  { /*input.*/ { { 0x3041,0x3042,0x30A2,0x0000 },
     167  			 { 0x3041,0x3042,0xFF71,0x0000 }, },  /* #8 */
     168  	    /*expect*/ { 0,0,0, +1,			  },
     169  	  },
     170  	  { /*input.*/ { { 0x30FF,0x3092,0x3049,0x0000 },
     171  			 { 0x3041,0x308E,0x3049,0x0000 }, },  /* #9 */
     172  	    /*expect*/ { 0,0,0, -1,		       },
     173  	  },
     174  	  { /*input.*/ { { 0x3041,0x308E,0x3049,0x0000 },
     175  			 { 0x30FF,0x3092,0x3049,0x0000 }, },  /* #10 */
     176  	    /*expect*/ { 0,0,0, +1,		       },
     177  	  },
     178  	  { .is_last = 1 }
     179  	}
     180      },
     181      {	{ Twcscoll, TST_LOC_end } }
     182  };