Fix various bugs. Comment out unresolved issues.
[kopensolaris-gnu/glibc.git] / localedata / tests-mbwc / tst_mblen.c
1 /*
2   MBLEN: int mblen (char *s, size_t n)
3 */
4
5 #define TST_FUNCTION mblen
6
7 #include "tsp_common.c"
8 #include "dat_mblen.c"
9
10 int
11 tst_mblen (FILE * fp, int debug_flg)
12 {
13   TST_DECL_VARS (int);
14   char s_flg;
15   const char *s_in;
16   size_t n;
17
18   TST_DO_TEST (mblen)
19   {
20     TST_HEAD_LOCALE (mblen, S_MBLEN);
21     TST_DO_REC (mblen)
22     {
23       TST_GET_ERRET (mblen);
24       s_flg = TST_INPUT (mblen).s_flg;
25       s_in = TST_INPUT (mblen).s;
26       n = TST_INPUT (mblen).n;
27
28       if (s_flg == 0)
29         {
30           s_in = NULL;
31         }
32
33       if (n == USE_MBCURMAX)
34         {
35           n = MB_CUR_MAX;
36         }
37
38       TST_CLEAR_ERRNO;
39       ret = mblen (s_in, n);
40       TST_SAVE_ERRNO;
41
42       TST_IF_RETURN (S_MBLEN)
43       {
44         if (s_in == NULL)
45           {                     /* state dependency */
46             if (ret_exp == +1)
47               {                 /* state-dependent  */
48                 if (ret != 0)
49                   {
50                     /* non-zero: state-dependent encoding */
51                     Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED);
52                   }
53                 else
54                   {
55                     err_count++;
56                     Result (C_FAILURE, S_MBLEN, CASE_3,
57                             "should be state-dependent encoding, "
58                             "but the return value shows it is"
59                             " state-independent");
60                   }
61               }
62
63             if (ret_exp == 0)
64               {                 /* state-independent */
65                 if (ret == 0)
66                   {
67                     /* non-zero: state-dependent encoding */
68                     Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED);
69                   }
70                 else
71                   {
72                     err_count++;
73                     Result (C_FAILURE, S_MBLEN, CASE_3,
74                             "should be state-independent encoding, "
75                             "but the return value shows it is"
76                             " state-dependent");
77                   }
78               }
79           }
80       }
81     }
82   }
83
84   return err_count;
85 }