Back to index

glibc  2.9
dat_swscanf.c
Go to the documentation of this file.
00001 /*
00002  *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
00003  *
00004  *      FILE: dat_swscanf.c
00005  *
00006  *      SWSCANF:  int       swscanf (const wchar_t *s, const wchar_t *fmt, ...);
00007  */
00008 
00009 
00010 #include <errno.h>
00011 #include <stdlib.h>
00012 #include "tst_types.h"
00013 #include "tgn_locdef.h"
00014 
00015 
00016 TST_SWSCANF tst_swscanf_loc [] =
00017 {
00018   {
00019     { Tswscanf, TST_LOC_de },
00020     {
00021       /*------------------------ 01 -----------------------*/
00022       { { {
00023        0x002D, 0x0031,             0x003A,          /* %d: -1   */
00024        0x0032,                     0x003A,          /* %u:  2   */
00025        0x0033, 0x002C, 0x0033, 0x003A,       /* %f:  3.3 */
00026        0x00E4,                     0x003A,          /* %c: ''  */
00027        0x00C4, 0x00DC, 0x0000, 0x0000,       /* %s: "" */
00028       },
00029          L"%d:%u:%f:%c:%s", 0
00030       },
00031        { /* The fields are: err_val, ret_flag, ret_val,
00032             val_int, val_uns, val_flt, val_c, val_s, val_S.  */
00033          0,1,5,
00034          -1, 2, 3.3, '', "", { 0x0000, },
00035        },
00036       },
00037       /*------------------------ 02 -----------------------*/
00038       { { {
00039        0x00E4, 0x00C4, 0x0000                    /* "" */
00040       },
00041          L"%lc", 'C'
00042       },
00043        { 0,1,1,
00044          0,0,0,0,"", { 0x00E4, 0x0000 },
00045        },
00046       },
00047       /*------------------------ 03 -----------------------*/
00048       { { {
00049        0x00E4, 0x00C4, 0x0000                    /* "" */
00050       },
00051          L"%ls", 'S'
00052       },
00053        { 0,1,1,
00054          0,0,0,0,"", { 0x00E4, 0x00C4, 0x0000 },
00055        },
00056       },
00057       /*------------------------ 04 -----------------------*/
00058       /* <NO_WAIVER> x 2 */
00059       { { {
00060        0x00E4, 0x00C4, 0x0000                    /* "" */
00061       },
00062          L"1%d:2%d:3%d:4%d:5%d:6%d:7%d:8%d:9%d", 0
00063       },
00064 #ifdef SHOJI_IS_RIGHT
00065        { 1,EINVAL,1,WEOF,
00066          0,0,0,0,"", { 0x0000 },
00067 #else
00068        { 0,1,0,
00069          0,0,0,0,"", { 0x0000 },
00070 #endif
00071        },
00072       },
00073       /*---------------------------------------------------*/
00074       { .is_last = 1}       /* Last element.  */
00075     }
00076   },
00077   {
00078     { Tswscanf, TST_LOC_enUS },
00079     {
00080       /*------------------------ 01 -----------------------*/
00081       { { { 0x002D, 0x0031,                                 0x003A,
00082            0x0032,                                          0x003A,
00083            0x0035, 0x0034, 0x002E, 0x0033, 0x0045, 0x002D, 0x0031, 0x003A,
00084            0x0041,                                          0x003A,
00085            0x0061, 0x0062, 0x0000,                          0x0000,
00086       },
00087          L"%d:%u:%f:%c:%s", 0
00088       },
00089        { 0,1,5,
00090          -1, 2, 5.43, 'A', "ab", { 0x0000 },
00091        },
00092       },
00093       /*------------------------ 02 -----------------------*/
00094       /* <NO_WAIVER> x 2 */
00095       { { {
00096        0x0063, 0x0064, 0x0000
00097       },
00098          L"%C", 'C'
00099       },
00100        { 0,1,1,
00101          0,0,0,0,"", { 0x0063, 0x0000 },
00102        },
00103       },
00104       /*------------------------ 03 -----------------------*/
00105       { { {
00106        0x0063, 0x0064, 0x0000
00107       },
00108          L"%S", 'S'
00109       },
00110        { 0,1,1,
00111          0,0,0,0,"", { 0x0063, 0x0064, 0x0000 },
00112        },
00113       },
00114       /*---------------------------------------------------*/
00115       { .is_last = 1}       /* Last element.  */
00116     }
00117   },
00118   {
00119     { Tswscanf, TST_LOC_eucJP },
00120     {
00121       /*------------------------ 01 -----------------------*/
00122       { { { 0x002D, 0x0031,     0x003A,
00123            0x0032,              0x003A,
00124            0x0033, 0x002E, 0x0033, 0x003A,
00125            0x0062,              0x003A,
00126            0x0061, 0x0062, 0x0000, 0x0000,
00127       },
00128          L"%d:%u:%f:%c:%s", 0
00129       },
00130        { 0,1,5,
00131          -1, 2, 3.3, 'b', "ab", { 0x0000 }
00132        },
00133       },
00134       /*------------------------ 02 -----------------------*/
00135       { { {
00136        0x30A2, 0x30A4, 0x0000
00137       },
00138          L"%ls", 'S'
00139       },
00140        { 0,1,1,
00141          0,0,0,0,"", { 0x30A2, 0x30A4, 0x0000 }
00142        },
00143       },
00144       /*------------------------ 03 -----------------------*/
00145       { { {
00146        0x0031,                     0x003A,
00147        0x0030,                     0x003A,
00148        0x0033, 0x002E, 0x0039, 0x003A,
00149        0x0061,                     0x003A,
00150        0x0063, 0x0064, 0x0000, 0x0000,
00151       },
00152          L"%2$d:%1$u:%3$f:%4$c:%5$s", 0
00153       },
00154        { 0,1,5,
00155          0, 1, 3.9, 'a', "cd", { 0x0000 }
00156        },
00157       },
00158 #ifdef SHOJI_IS_RIGHT
00159       /* XXX This test does not make sense.  The format string is
00160         L"\x1\x2\x25\x53" and it is supposed to match the words
00161         0x30A2, 0x30A4, 0x0001.  */
00162       /*------------------------ 04 -----------------------*/
00163       /* <NO_WAIVER> x 2 */
00164       { { {
00165        0x30A2, 0x30A4, 0x0001, 0x0000
00166       },
00167          { 0x0001,0x0002,0x0025,0x0053,0x0000 }, 'S'
00168       },
00169        { EILSEQ,1,EOF,
00170          0,0,0,0,"", { 0x0000 }
00171        },
00172       },
00173 #endif
00174       /*---------------------------------------------------*/
00175       { .is_last = 1}       /* Last element.  */
00176     }
00177   },
00178   {
00179     { Tswscanf, TST_LOC_end }
00180   }
00181 };