1 | /* |
2 | STRCOLL: int strcoll (const char *s1, const char *s2) |
3 | */ |
4 | |
5 | #define TST_FUNCTION strcoll |
6 | |
7 | #include "tsp_common.c" |
8 | #include "dat_strcoll.c" |
9 | |
10 | int |
11 | tst_strcoll (FILE * fp, int debug_flg) |
12 | { |
13 | TST_DECL_VARS (int); |
14 | const char *s1, *s2; |
15 | |
16 | TST_DO_TEST (strcoll) |
17 | { |
18 | TST_HEAD_LOCALE (strcoll, S_STRCOLL); |
19 | TST_DO_REC (strcoll) |
20 | { |
21 | TST_GET_ERRET (strcoll); |
22 | s1 = TST_INPUT (strcoll).s1; |
23 | s2 = TST_INPUT (strcoll).s2; |
24 | |
25 | TST_CLEAR_ERRNO; |
26 | ret = strcoll (s1, s2); |
27 | TST_SAVE_ERRNO; |
28 | |
29 | if (debug_flg) |
30 | { |
31 | fprintf (stdout, "strcoll() [ %s : %d ] ret = %d\n" , locale, |
32 | rec + 1, ret); |
33 | fprintf (stdout, " errno = %d\n" , |
34 | errno_save); |
35 | fprintf (stdout, " LC_COLLATE = %s\n" , |
36 | (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE, |
37 | NULL) : "" ); |
38 | } |
39 | |
40 | TST_IF_RETURN (S_STRCOLL) |
41 | { |
42 | if (ret_exp == +1) |
43 | { |
44 | if (ret > 0) |
45 | { |
46 | Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); |
47 | } |
48 | else |
49 | { |
50 | err_count++; |
51 | Result (C_FAILURE, S_STRCOLL, CASE_3, |
52 | "the return value should be greater than 0," |
53 | " but is not ..." ); |
54 | } |
55 | } |
56 | else if (ret_exp == -1) |
57 | { |
58 | if (ret < 0) |
59 | { |
60 | Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); |
61 | } |
62 | else |
63 | { |
64 | err_count++; |
65 | Result (C_FAILURE, S_STRCOLL, CASE_3, |
66 | "the return value should less than 0, but not ..." ); |
67 | } |
68 | } |
69 | else if (ret_exp != 0) |
70 | { |
71 | if (debug_flg) |
72 | { |
73 | fprintf (stderr, "*** Warning *** : tst_strcoll : " |
74 | "(check the test data); should set ret_flg=1" |
75 | " to check a return value" ); |
76 | } |
77 | |
78 | Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data); " |
79 | "should set ret_flg=1 to check a return value" ); |
80 | } |
81 | } |
82 | } |
83 | } |
84 | |
85 | return err_count; |
86 | } |
87 | |