1/*
2 WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2);
3*/
4
5#define TST_FUNCTION wcscoll
6
7#include "tsp_common.c"
8#include "dat_wcscoll.c"
9
10int
11tst_wcscoll (FILE * fp, int debug_flg)
12{
13 TST_DECL_VARS (int);
14 wchar_t *ws1, *ws2;
15 int cmp;
16
17 TST_DO_TEST (wcscoll)
18 {
19 TST_HEAD_LOCALE (wcscoll, S_WCSCOLL);
20 TST_DO_REC (wcscoll)
21 {
22 TST_GET_ERRET (wcscoll);
23 ws1 = TST_INPUT (wcscoll).ws1; /* external value: size WCSSIZE */
24 ws2 = TST_INPUT (wcscoll).ws2;
25
26 TST_CLEAR_ERRNO;
27 ret = wcscoll (s1: ws1, s2: ws2);
28 TST_SAVE_ERRNO;
29
30 if (debug_flg)
31 {
32 fprintf (stderr, "tst_wcscoll: ret = %d\n", ret);
33 }
34
35 cmp = TST_EXPECT (wcscoll).cmp_flg;
36 TST_IF_RETURN (S_WCSCOLL)
37 {
38 if (cmp != 0)
39 {
40 if ((cmp == 1 && ret > 0) || (cmp == -1 && ret < 0))
41 {
42 Result (C_SUCCESS, S_WCSCOLL, CASE_3, MS_PASSED);
43 }
44 else
45 {
46 err_count++;
47 if (cmp == 1)
48 {
49 if (ret == 0)
50 Result (C_FAILURE, S_WCSCOLL, CASE_3,
51 "the return value should be positive"
52 " but it's zero.");
53 else
54 Result (C_FAILURE, S_WCSCOLL, CASE_3,
55 "the return value should be positive"
56 " but it's negative.");
57 }
58 else
59 {
60 if (ret == 0)
61 Result (C_FAILURE, S_WCSCOLL, CASE_3,
62 "the return value should be negative"
63 " but it's zero.");
64 else
65 Result (C_FAILURE, S_WCSCOLL, CASE_3,
66 "the return value should be negative"
67 " but it's positive.");
68 }
69 }
70 }
71 }
72 }
73 }
74
75 return err_count;
76}
77

source code of glibc/localedata/tests-mbwc/tst_wcscoll.c